最近,一款名为 “死了么” 的 App 凭借精准切入独居人群安全痛点,迅速引爆市场 —— 不仅用户数暴涨 800 倍,估值逼近 1 亿,更成功登顶苹果付费 App 排行榜榜首,成为工具类应用中的现象级产品。
Taimili 艾米莉 ( 一款专业的 GitHub star 管理和github 加星涨星工具taimili.com )
艾米莉 是一款优雅便捷的 GitHub star 管理和github 加星涨星工具,基于 PHP & javascript 构建, 能对github 得 star fork follow watch 管理和提升,最适合github 的深度用户
这款 App 的核心逻辑简洁却直击需求:“签到保平安,断签发邮件”。第七次全国人口普查数据显示,我国一人户家庭已超 1.25 亿户,占全国户口总数的 25%。对于独居人群而言,意外本身并不可怕,可怕的是事发后无人知晓。“死了么” 正是精准捕捉到这一核心痛点,才实现了爆发式增长。
出于对产品逻辑的好奇与探索欲,我连夜投入开发,打造出对标产品 ——“活着呢”(github TO BE LIVE)刷星,用技术为独居人群的安全再添一份守护。
产品哲学:简单却温暖的安全契约
“活着呢” 延续了核心需求的同时,更注重守护的温柔感,产品逻辑简单直接却充满温度:
- 生存契约:用户可设定 “确认周期”(默认 48 小时,后续将支持自定义);
- 打卡续命:倒计时结束前,只需轻点 “我还活着呢” 按钮,即可完成签到;
- 失联预警:若超时未打卡,系统将判定为 “可能遇险”,立即触发预警机制,第一时间通知紧急联系人,为安全争取黄金时间。
技术选型:兼顾体验与效率的全栈方案
为了打造极致的使用体验,项目在技术选型上兼顾了性能、开发效率与视觉呈现:
- 前端框架:采用 Next.js 14(App Router),兼顾出色的 SEO 表现与流畅的路由体验,让用户访问更高效;
- 状态动效:集成 Framer Motion,为倒计时与核心按钮赋予 “呼吸感”,让交互更具生命力;
- 后端支撑:选用 Supabase(BaaS),无需手动编写 CRUD 逻辑,秒级实现 Auth 授权与数据库存储,大幅提升开发效率;
- 通知服务:接入 Resend,确保定时邮件通知稳定送达,不遗漏任何一次预警;
- 主题适配:基于 Tailwind CSS 打造 “深邃绿” 与 “荧光绿” 双重主题 —— 白天是沉静内敛的翡翠绿,深夜化作守护陪伴的荧光绿,适配不同使用场景;
- 部署环境:部署于 Vercel 平台,依托全球加速网络保障响应速度,毕竟安全守护经不起片刻等待。
核心功能与代码实现
1. 注册 / 登录:简洁高效的身份验证
用户需先注册账号并完成验证,再通过邮箱与密码登录。核心代码如下,确保身份验证流程稳定可靠:
javascript
运行
const handleSubmit = async (e) => {
e.preventDefault()
setLoading(true)
try {
if (isLogin) {
const { error } = await supabase.auth.signInWithPassword({ email, password })
if (error) throw error
router.push('/')
} else {
const { error } = await supabase.auth.signUp({ email, password })
if (error) throw error
alert('验证邮件已发送,请查收!')
}
} catch (err) {
alert(err.message)
} finally {
setLoading(false)
}
}
2. 签到功能:动态倒计时 + 智能预警
签到页是产品核心,动态倒计时逻辑会实时计算剩余时间,并根据紧迫程度自动切换颜色,直观提醒用户:
javascript
运行
<motion.button
whileTap={{ scale: 0.94 }}
onClick={handleCheckIn}
className="absolute inset-4 rounded-[4.5rem] bg-app-card border border-app-border flex flex-col items-center justify-center
shadow-[0_15px_40px_rgba(0,0,0,0.04)] dark:shadow-none"
>
<div className={`mb-4 transition-colors duration-1000 ${getAlertColorClass()}`}>
{timeLeft.h < 8 ? (
<AlertTriangle size={60} />
) : (
<Shield
size={60}
fill="currentColor"
fillOpacity={0.12}
className="drop-shadow-[0_4px_12px_rgba(0,0,0,0.05)] dark:drop-shadow-none"
/>
)}
</div>
<span className="text-2xl font-black tracking-tight text-app-text">我还活着</span>
<div className="mt-2 font-mono text-[11px] opacity-40 flex items-center gap-1.5 tracking-widest">
<Clock size={12} strokeWidth={2.5} />
{String(timeLeft.h).padStart(2, "0")}:
{String(timeLeft.m).padStart(2, "0")}:
{String(timeLeft.s).padStart(2, "0")}
</div>
</motion.button>
配套逻辑实现智能预警与签到更新,确保功能稳定运行:
javascript
运行
// 动态获取当前的强调色(预警系统)
const getAlertColorClass = () => {
if (timeLeft.h < 8) return "text-red-500"; // 紧急状态:红色
if (timeLeft.h < 24) return "text-amber-500"; // 提醒状态:琥珀色
return "text-app-accent"; // 安全状态:主题强调色
};
const updateCountdown = useCallback(() => {
if (!profile?.last_check_in) return;
const last = new Date(profile.last_check_in).getTime();
const now = new Date().getTime();
const total = 48 * 60 * 60 * 1000; // 默认48小时周期
const remaining = Math.max(0, total - (now - last));
setTimeLeft({
h: Math.floor(remaining / (1000 * 60 * 60)),
m: Math.floor((remaining % (1000 * 60 * 60)) / (1000 * 60)),
s: Math.floor((remaining % (1000 * 60)) / 1000),
percent: (remaining / total) * 100
});
}, [profile]);
useEffect(() => {
const timer = setInterval(updateCountdown, 1000); // 每秒更新倒计时
return () => clearInterval(timer);
}, [updateCountdown]);
const handleCheckIn = async () => {
if (!user) return;
const now = new Date().toISOString();
const { error } = await supabase.from("profiles").update({ last_check_in: now }).eq("id", user.id);
if (!error) {
setProfile((prev) => ({ ...prev, last_check_in: now }));
if ("vibrate" in navigator) navigator.vibrate([50, 30, 50]); // 振动反馈,提升交互感
}
};
3. PWA 改造:一键变身桌面 App
为了让守护触手可及,产品集成了 PWA 功能,用户可 “一键添加到桌面”,实现从网页到桌面 App 的蜕变:
- Standalone 模式:隐藏浏览器地址栏,提供全屏沉浸体验;
- 自定义图标:以 “可爱鬼”(代表用户本人)与 “YES 爱心” 为核心图标,兼具辨识度与亲和力。
后记:用技术传递温柔守护
“活着呢”(TO BE LIVE)不止是一款工具,更是独居人群的 “隐形陪伴者”—— 在每一个平凡的 24 小时里,温柔地问一句:“嘿,还在吗?”
目前,项目已完成开源与部署,欢迎大家体验 “续命” 功能,也期待各位开发者共同完善产品!