最近完成了一款纯本地离线极简倒数日App的独立开发,基于React Native + Expo + TypeScript技术栈,全程从市场调研、需求敲定、框架搭建、bug修复、功能迭代到最终打包部署,完整走完了移动端App开发全流程。这款工具主打轻量化、无后端、零广告,可用于记录纪念日、考试、节日等各类重要日期,适配安卓移动端,目前已完整开源。下面详细记录我的完整开发历程、核心功能迭代及开发踩坑经验。
一、项目前期:市场调研与项目敲定(9.1-9.3)
本次开发初期,我摒弃了盲目开发的思路,优先通过多平台调研挖掘用户真实需求,确定产品方向。首先借助Appark、应用商店各大平台分析主流自律、计时类工具产品,同时深耕抖音、小红书等社交平台,收集普通用户对倒计时工具的使用痛点。
通过市场调研发现,市面主流的倒数日工具(Days Matter、番茄ToDo等)普遍存在功能冗余、广告繁杂、部分高级功能付费解锁的问题,且多数轻量化产品不支持农历日期、自定义通知、事件置顶等个性化功能。同时很多用户仅需要一款纯粹、简洁、离线可用、无多余推送的倒计时工具。
基于以上调研结果,最终确定项目核心定位:极简离线倒数日App,纯本地存储、无需联网、无后端服务,主打轻量化核心功能,解决普通用户记录重要日期的基础刚需,同时补充小众个性化功能,区别于市面上的同质化产品。
二、项目搭建与工程化学习(9.4-9.5)
确定项目方向后,正式进入技术落地阶段。本项目采用主流移动端开发技术栈:React Native + Expo SDK 57 + TypeScript,搭配Zustand状态管理、Async-storage本地存储、expo-notifications本地通知能力,保证项目轻量化、稳定性与可维护性。
初期借助AI工具快速生成App基础框架,随后通过VS Code完成项目工程化目录规整,彻底梳理项目核心目录结构,清晰掌握components通用组件、screens页面、store全局状态、utils工具函数、types类型定义等模块的作用,深刻理解前端工程化的核心价值——代码分层、模块化管理、便于迭代维护,为后续功能开发和bug修复打下坚实基础。
同时完成项目基础配置,完善TS严格模式、路径别名解析、代码规范配置,搭建起规范、可迭代的极简倒数日MVP基础框架,实现了事件新增、删除、基础倒计时计算、本地数据持久化等核心基础能力。
三、核心Bug修复,夯实项目基础(9.7)
基础框架搭建完成后,针对初始版本存在的核心功能性Bug进行专项修复,解决产品可用的核心问题,主要修复两个关键问题:
1. 新增事件日期选择失效:原版本点击目标日期选择按钮无任何响应,无法自定义倒计时时间,属于核心功能故障。通过逐层排查点击事件绑定、日期选择组件渲染逻辑,修复交互失效问题,支持用户自由选择任意目标日期。
2. 事件删除功能不可用:修复删除接口逻辑漏洞,完善事件删除后的页面刷新、本地数据同步逻辑,实现事件一键删除、实时更新列表的效果。
本次Bug修复彻底解决了App无法正常使用的核心问题,让基础的增删事件功能稳定可用,完成产品从“框架demo”到“可用产品”的初步蜕变。
四、功能迭代:个性化能力升级(9.8-9.14)
在基础功能稳定后,结合前期市场调研的用户痛点,持续迭代个性化、差异化功能,同时优化页面交互与视觉效果,全方位提升产品体验。
1. 双日历适配功能(9.8)
市面多数简易倒计时工具仅支持公历日期,无法满足国内用户记录传统节日、农历生日的需求。本次迭代新增公历/农历自由切换功能,选择日期时可自动匹配对应星期几,同时在首页展示对应日期信息,适配国人使用习惯,填补产品功能短板。
2. 本地通知提醒功能(9.9)
为解决用户遗忘重要日期的痛点,基于expo-notifications开发本地到期提醒功能,支持自定义事件通知开关,目标日期当天可触发系统本地通知,后台运行状态下也可触发提醒。本次开发遇到核心踩坑点:代码逻辑可行,但平台兼容性不足,真机测试无法正常接收通知,后续持续优化适配不同设备与系统版本,解决兼容问题。
3. 逻辑思维优化与交互进阶(9.10)
针对「通知触发后导航栏变色」的交互需求,初期陷入代码堆砌误区,盲目模仿弹窗触发逻辑,持续报错。在梳理问题逻辑后,学会需求拆解思维,将复杂需求拆分为「通知触发检测」和「导航栏样式变更」两个独立模块,通过“if-else”基础逻辑分层处理,彻底理清功能开发的核心思路,也为后续复杂功能开发建立标准化思维:先拆解、再逻辑梳理、最后代码落地。
4. 事件置顶+视觉优化(9.11-9.13)
新增核心个性化功能——自定义事件置顶,支持用户将重要事件固定在列表首位。同时优化视觉层级,定制置顶事件专属蓝色背景色,区别于普通事件卡片。通过修改列表样式渲染逻辑,覆盖原有默认样式,结合事件修改时间排序规则,保证最新置顶事件固定展示在列表顶部,视觉区分清晰、优先级明确。
5. 统一管理功能与页面优化(9.14)
为简化用户操作,在首页新增管理按键,集成置顶、通知设置、删除三大核心操作,无需进入编辑页面即可快速管理事件。同时全面优化页面布局:重构编辑页排版,统一「事件名称-日期选择-置顶设置-通知设置-保存」的标准化流程;优化导航栏主题配色,区分过去/未来事件卡片颜色,整体页面简约清爽、逻辑清晰。
五、项目收尾、打包部署与开源(9.15)
完成所有功能迭代、bug修复、页面优化后,对整体功能模块进行整合调整,统一代码规范,优化项目性能,解决冗余代码问题。随后通过Expo EAS Build工具完成安卓安装包打包,成功生成可直接安装的安卓APK文件,并将完整项目代码、配置文件、部署脚本全部上传至GitHub开源,完成项目全流程落地。
六、项目整体总结与技术收获
本次极简倒数日App开发,是一次完整的从0到1移动端产品开发实战,不仅落地了完整的产品功能,更积累了大量实战经验:
1. 产品层面:学会从市场调研挖掘真实用户需求,摆脱闭门造车,打造差异化轻量化产品;
2. 技术层面:熟练掌握RN+Expo+TS技术栈,精通本地存储、本地通知、列表渲染、样式覆盖、移动端打包部署等核心能力;
3. 思维层面:掌握复杂需求拆解、问题逻辑梳理、报错排查的开发思维,摆脱盲目写代码的开发模式。
目前项目为纯本地离线版本,无广告、无后台、无数据泄露风险,支持事件增删改查、农历/公历切换、自定义通知、事件置顶、视觉差异化展示等全套实用功能,满足日常倒计时、纪念日记录、备考计时等多种使用场景。
七、开源地址与安装教程
1. 项目开源地址
GitHub完整源码:github.com/z1002176113…
项目包含完整源码、工程配置、开发文档,可直接下载运行、二次迭代开发。
2. 安卓安装教程
方式一:直接安装(普通用户)
1. 打开上方GitHub项目地址,找到Release正式版本;
2. 下载项目打包好的安卓APK安装包;
3. 安卓手机开启「允许安装未知来源应用」权限;
4. 点击APK文件,等待自动安装完成即可使用。
方式二:本地编译运行(开发者/二次开发)
1. 克隆项目源码:git clone github.com/z1002176113…
2. 进入项目根目录,执行 npm install 安装全部依赖;
3. 全局安装EAS CLI:npm install -g eas-cli;
4. 登录Expo账号:eas login;
5. 启动本地调试:npm start,扫码Expo Go即可真机预览;
6. 自行打包安卓安装包:eas build -p android --profile preview。
八、后续迭代规划
当前版本已完成核心刚需功能,后续可持续迭代优化:新增桌面小组件、云端数据备份、重复事件倒计时、自定义壁纸等功能,进一步提升产品实用性。欢迎各位开发者Star、Fork,一起交流迭代!