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






---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`
















https://cursor.com/cn



夜雨聆风