项目展示
不是概念稿,不是练习项目,全部上架或部署在线运行。5款原生应用 + 1个全栈网站 + 1个敏捷看板Web应用,覆盖iOS、macOS、Web三个平台。全部由一个人完成——从需求定义、UI设计、编码实现到上架部署。
7
项目
3
平台
凝神 NingShen
一个纯离线的汉字学习工具
输入一个姓氏,可以按拼音、偏旁、笔画来生成名字;可以按拼音和偏旁浏览整个汉字库;支持通用规范汉字表一二三级筛选。内置完整的汉字数据库和思源字体,没有任何网络请求——飞行模式下也能用。
项目意义
第一个作品,"从零到上架"的第一个完整闭环。从2024年6月第一次打开Swift Playground到11月上线,5个月。答案拿到之后,后面的事情就有了地基。
完全免费,无内购,无广告
行愿 XingYuan
敏捷看板 + 时间线日记 + 梦想板
时间线
按年月展开的卡片式笔记,记录想法和规划
敏捷看板
软件开发的需求管理方式,拖拽改变任务状态
5A地图
全国5A景区标记,红绿标识去过和想去的地方
"行愿"来自《华严经》普贤行愿品。数据用自定义的 .xingyuan 格式保存在本地——一个库文件包含所有内容,复制到U盘就是备份。
CopyTo 可皮兔
剪贴板管理工具 + 音频转字幕
自动记录剪贴板历史——复制的每一段文字和图片都会被保存,支持全文搜索、按类型和日期筛选、一键去除Markdown格式转纯文本。
附加功能:音频/视频转字幕——集成Whisper模型完全本地运行,可导出SRT字幕文件或FCPXML(兼容Final Cut Pro)。
架构进化
写了一份730行的架构优化方案,规划4阶段6周重构——引入依赖注入容器、统一错误处理、Services层抽离。数据加载速度提升80%+,启动时间减少50%+。
Sounder 声明
全格式电子书阅读器 + TTS语音朗读
支持10+种格式:EPUB、PDF、TXT、MOBI、AZW/AZW3、Markdown、Word、RTF、Pages。核心特色是TTS语音朗读——系统离线语音 + 火山引擎云端多音色。
App Store 磨难之路
被打回5次。窗口生命周期、沙盒权限、不同Mac机型兼容性——每次被打回都是对macOS开发规范的深入学习。每次被打回的当天就开始排查修复。
CoreCue 提词器
录口播视频时用的提词器
输入内容,切换显示模式,文字自动滚动。滚动速度可调(0.1到6.4),支持标点符号自动换行、当前行高亮、编辑和显示两套独立配置。
教训:四天白干
没有定义清楚MVP就开始动手,做了四天发现方向不对。直接推动了"先定义清楚要做什么,再动手"工程原则的内化。体量最小但教训最密集。
ningshen.top
全栈架构的个人作品集和博客系统
—— DevOps能力的实战证明
不只是一个展示页面。完整全栈系统——前端SSR渲染、后端API服务、关系型数据库、缓存层、反向代理、SSL加密、蓝绿部署、CI/CD自动化流水线、系统监控。部署在2GB内存服务器上。
400MB
PostgreSQL
300MB
FastAPI
250MB
Nuxt.js
150MB
Redis
~900MB
系统预留
前端
Nuxt.js 4 / Vue 3 / TypeScript / Tailwind CSS
后端
FastAPI / SQLAlchemy / Pydantic / Uvicorn
基础设施
Docker / Nginx / Let's Encrypt / 阿里云ACR
DevOps
蓝绿部署 / GitHub Actions / Prometheus + Grafana
| 维度 | 具体能力 |
|---|---|
| 原生应用开发 | Swift / SwiftUI,iOS + macOS 双平台,UIKit混合使用 |
| 前端开发 | HTML / CSS / JavaScript,Vue 3 + Nuxt.js 4,TypeScript,Tailwind CSS |
| 后端开发 | Python / FastAPI,SQLAlchemy + Alembic,RESTful API设计 |
| 数据库 | SQLite(本地应用)、PostgreSQL(服务端)、Redis(缓存) |
| DevOps | Docker + Compose,Nginx,蓝绿部署,GitHub Actions CI/CD |
| 设计 | 5年UI设计经验,从需求到设计到实现全流程,用户体验驱动 |
| AI辅助开发 | 1130次DeepSeek对话,Cursor使用经验,AI编程的能力边界认知 |
所有作品的共同哲学
数据在本地,隐私在自己手里
凝神完全离线。行愿用自定义文件包,备份就是复制。CopyTo本地存储,音频识别用Whisper本地跑。Sounder所有阅读数据存在SQLite。
这不是一个产品策略决定。这是一种世界观的技术表达——东西放在自己手里才踏实。
免费无广告——不是一开始就这样想的
最初做免费只是因为还没想好怎么收费。后来试过付费下载、数据收集,验证"个人开发者能不能赚钱"。结论:行不通。
真正想做出有竞争力的产品,需要的基础远不止写几段代码——那是一种需要大量时间沉淀的能力,等于在转行。
现在所有应用完全免费。这些产品不是用来赚钱的,而是能力的载体——证明"我能从想法到上架做出完整的产品"。
这就是"懂代码、懂全流程的设计师"这个定位的实物支撑。
不是要替代任何一个专业角色,而是在角色和角色之间,做那个听得懂双方语言的人。