乐于分享
好东西不私藏

如何从0到1快速开发一个app

如何从0到1快速开发一个app

我以前段时间开发的一个衣橱app为例,来向大家介绍一下这个app的开发过程。

代码工具:cursor
仓库工具:github
数据库:supabase
大模型:混元api(新用户有免费额度)
准备下载/注册好以上工具后,我们就可以开始了。

一、新建github仓库,用来开发
创建好了之后,会有如下界面
如果网不好,建议使用ssh连接远程仓库。效率更高。
记住,你要在github个人设置settings的地方新建ssh keys,如下图(如果后面你换了一台电脑,ssh最好是再新建一个,之前的也仍然保留)
二、打开cursor
如果你什么都不会,不懂怎么连接,你可以:
在本地新建一个文件夹,然后用cursor打开;
把创建好的界面(下图)发送给cursor,并告诉他设定该文件夹的远程仓库是如图所示
然后cursor就会帮你连接上远程仓库,并设定master主分支了

三、需求文档怎么写,我是怎么写的?
首先,放我在cursor中的需求文档
---description: AI衣橱助手 — 技术栈、架构、代码规范与领域模型globs: lib/**/*.dart---# AI衣橱助手## 项目信息- **项目名称**:AI衣橱助手- **技术栈**:Flutter、Riverpod、GoRouter、Isar、Supabase(HTTP 等补充能力可用 Dio,与现有依赖一致即可)## 架构:Clean Architecture 三层分离按职责分为 **表示层 / 领域层 / 数据层**,与仓库目录对应关系如下:| 层级 | 职责 | 代码位置 ||------|------|----------|| **表示层** | UI、页面组合、Riverpod 状态 | `lib/presentation/``pages``widgets``providers`) || **领域层** | 实体、仓储抽象、用例,不依赖 Flutter 与具体数据源 | `lib/domain/``models``repositories``usecases`) || **数据层** | Isar 本地、Supabase/Dio 远程、仓储实现 | `lib/data/``local``remote``repositories`) |- **core**(`lib/core/`):主题、路由表、常量、工具等横切能力;不承载具体业务用例实现。- 表示层通过用例或仓储抽象访问领域;数据层实现领域层定义的仓储接口;**禁止**领域层依赖 `presentation` / `data` 的具体实现。- 路由统一由 **GoRouter** 配置(建议集中在 `lib/core/router/`);状态以 **Riverpod** 为主。## 代码规范- **注释**:所有注释使用**中文**。- **文件名**:使用 **snake_case**(如 `clothing_card.dart`)。- **类名 / 类型名**:使用 **PascalCase**(如 `Clothing``UserProfile`)。- **import 顺序**:Dart SDK → 第三方 package → 相对路径。- 新增代码放入对应分层目录;复杂逻辑放在 provider / 用例,避免在 Widget 中堆叠数据与业务规则。## 数据模型(领域字段约定)以下字段为产品语义约定;实现时类型(如 `DateTime``List<String>`、金额用 `int` 分或 `Decimal` 等)在 `domain/models` 中具体定义,并与 Isar / Supabase 映射保持一致。### Clothing(单品)`id``name``category``colors``brand``size``imageUrl``croppedImageUrl``tags``season``occasion``style``purchaseDate``purchasePrice``status``usageCount``lastWornDate``notes`### Outfit(搭配)`id``name``clothingIds``scene``occasion``season``imageUrl``wornDates``plannedDates``notes``isShared`### UserProfile(用户档案)`styles``bodyType``height``weight``favoriteColors``favoriteOccasions`
可以看到,并不是很多内容,也并不是很复杂
如果你对技术完全不懂,你可以让AI帮你写需求文档。通过自然语言描述,你想做一个什么样的app,然后让他给你写出.mdc文档内容,再放到cursor对话框里。
最简单的实操方式:和元宝AI对话
是不是非常简单?!手写nonono AIgogogo~~

四、上面的需求文档写法是最简单的吗?
no no
你还可以做的,更加疯狂起来~crazy crazy
我的意思是,你可以让AI整AI:把需求文档里面的内容发给AI,让他帮你规划好每一步的cursor提示词和验收标准
可以整理出来如上面所示的这样的一份文档。
那么就有人要问了,这么操作属于编程几大派别中的哪一派呢?
科普时间到:
所以,我们是属于LLM编程阶段。这也是AI native的核心阶段。
因为我们把核心决策交给了AI,而不是传统的硬编码,写死的规范,全程我们没有写一行代码。

五、supabase为什么需要?
Supabase 是一个“开源版的 Firebase”
也是目前全球最火的 Backend-as-a-Service(后端即服务,简称 BaaS) 平台
这里,元宝告诉了我们为什么这个supabase好用

六、最后
是不是觉得,啊,到这怎么就结束了?这么快就能开发出来了吗?
我想告诉你的是,是的。就是这么迅速。
界面展示:
哈哈,只不过每个步骤执行起来的会耗时,但是快的话,三天左右,这个app就能基本敲定了。我们大骨架搭好了,后面的填充就是cursor帮我们做的了。
cursor可能对于没有接触过编程的小白来说,是有点陌生的。他长这样:

https://cursor.com/cn

之前我一直也疑惑,AI 原生开发和cursor之间有什么关系,你们知道的,最近AI编程自动化的研究,尤其是智能体各种claw的出现,让AI全流程自监督开发的模式火了又火。我使用cursor的时候,也能体会到它的自动化执行也是十分接近AI原生开发,它甚至有自我测试的功能。
AI时代如果来临,程序员要让 Cursor 去干写代码的苦力活,要卷的是架构,是业务。比 AI 更懂用户痛点(比如衣橱的“搭配焦虑”),决定造什么车,而不是怎么造车。
本期就到这里啦,下期会分享一下怎么根据项目大小或者其他边界选择使用vibe coding 还是openspec这样的类似的大框架。