modern-software-dev-assignments Week 5 起手项目:用 FastAPI + SQLite + 静态前端搭建 Agent 驱动的极简全栈实验场

发布时间:2026/9/30 18:00:01

modern-software-dev-assignments Week 5 起手项目:用 FastAPI + SQLite + 静态前端搭建 Agent 驱动的极简全栈实验场 示例工程【免费下载链接】modern-software-dev-assignmentsAssignments for CS146S: The Modern Software Dev (Stanford University Fall 2026/2025)项目地址https://gitcode.com/GitHub_Trending/mo/modern-software-dev-assignments点击查看免费下载本文围绕仓库中 week5/README.md 展开讲解这套面向自主编码 Agentautonomous coding agents实验的极简全栈起手应用后端基于 FastAPI SQLiteSQLAlchemy前端为无需 Node 工具链的静态页面配套 pytest 最小测试集、black ruff 格式化和预提交钩子以及一套供 Agent 驱动的开发任务清单。读完本文你将掌握该项目的完整启动流程、目录结构与配置方式理解后端启动、建表与种子数据注入的底层实现并能在此基础上直接开展 Agent 工作流含 Warp 多 Agent 协作的实验。项目定位为 Agent 实验而生的最小全栈 Starter按 week5/README.md 的说明这是一个 minimal full‑stack starter核心目标是让开发者或开发 Agent拥有一个足够小、足够清晰、可快速重置的“实验场”其技术选型刻意保持克制FastAPI 后端 SQLiteSQLAlchemy ORM无需独立数据库服务单文件 SQLite 即可持久化静态前端由 FastAPI 直接托管不需要 Node 工具链即可运行最小测试集pytest覆盖核心 API 行为方便 Agent 验证改动Pre-commitblack ruff保持代码风格一致减少 Agent 引入的格式噪声任务清单Tasks见 week5/docs/TASKS.md用于练习 Agent 驱动的工作流。配套的 week5/assignment.md 进一步说明了它的用途作为 Warp Agentic Development Environment 与多 Agent 工作流的 playground实验范围被严格限定在week5/内的 backend、frontend、logic 与 tests。快速开始QuickstartREADME 给出了三步起手流程其中虚拟环境创建可选用venv或conda两种方式。方式一venvREADME 默认示例cd /path/to/modern-software-dev-assignments python -m venv .venv source .venv/bin/activate pip install -e .[dev]注README 中的cd路径是作者本机路径/Users/mihaileric/...请替换为你克隆仓库后的实际根目录。方式二condaassignment.md 示例conda activate cs146s安装可编辑依赖-e .[dev]会依据仓库根目录的 pyproject.toml 安装运行时依赖与 dev 依赖测试、格式化等工具。可选安装 pre-commit 钩子pre-commit install钩子配置位于 week5/pre-commit-config.yaml包含 black24.4.2、ruffv0.4.8带--fix、end-of-file-fixer 与 trailing-whitespace 四个钩子。启动应用须在week5/目录下cd week5 make run启动成功后http://localhost:8000—— 前端页面http://localhost:8000/docs—— FastAPI 自动生成的交互式 API 文档OpenAPI/Swagger UI。目录结构week5/ ├── backend/ # FastAPI 应用 ├── frontend/ # 由 FastAPI 托管的静态 UI ├── data/ # SQLite 数据库 种子数据 ├── docs/ # 供 Agent 驱动工作流使用的 TASKS ├── Makefile # run / test / format / lint / seed 等目标 └── pre-commit-config.yaml # black ruff 预提交钩子后端内部再细分为路由与业务层backend/app/routers/存放notes.py与action_items.py两个路由模块backend/app/services/extract.py存放从文本提取 Action Item 的纯逻辑函数backend/app/models.py、schemas.py、db.py分别负责 ORM 模型、Pydantic 校验模型与数据库会话管理。后端实现速览启动、建表与种子数据从 week5/backend/app/main.py 的源码可以看到应用的装配方式FastAPI(titleModern Software Dev Starter (Week 5))创建应用实例启动时先确保data/目录存在Path(data).mkdir(...)app.mount(/static, StaticFiles(directoryfrontend))将前端静态资源挂载到/staticGET /直接返回frontend/index.htmlstartup_event()中执行Base.metadata.create_all(bindengine)建表随后调用apply_seed_if_needed()注入种子数据最后include_router挂载 notes 与 action_items 两个路由。数据库会话管理位于 week5/backend/app/db.py通过load_dotenv()读取.env默认数据库路径取自环境变量DATABASE_PATH默认./data/app.dbSQLite 引擎配置了check_same_threadFalse以兼容 FastAPI 的线程模型。apply_seed_if_needed()的逻辑值得注意仅在数据库文件首次创建时执行 week5/data/seed.sql其中预置了notes与action_items两张表的建表语句及示例数据例如 Welcome 笔记和 Try pre-commit 行动项因此删除本地app.db即可重置实验环境。ORM 模型定义在 week5/backend/app/models.pyNoteid、title、content与ActionItemid、description、completed两张表对应 Pydantic 模型见 week5/backend/app/schemas.py。路由层如 week5/backend/app/routers/notes.py当前提供笔记的列表、创建、搜索与单条查询其中搜索使用 SQLAlchemy 的contains实现标题/内容的子串匹配搜索词为空时退化为全量列表——这也是 week5/docs/TASKS.md 中“分页与排序搜索”任务的改造起点。测试在week5/目录下运行cd week5 make test对应 week5/Makefile 中的PYTHONPATH. pytest -q backend/tests测试集位于backend/tests/含test_notes.py、test_action_items.py、test_extract.py等。测试直接针对后端 API 与提取逻辑是 Agent 改动后快速回归的主要手段。格式化与 Lintcd week5 make format cd week5 make lintmake format执行black .并随后ruff check . --fix自动修复make lint仅执行ruff check .做静态检查。这两个命令与 pre-commit 钩子black ruff保持一致是保证 Agent 产出代码风格统一的关键。配置README 说明将week5/下的.env.example复制为.env即可覆盖默认配置最典型的是数据库路径。例如cd week5 cp .env.example .envDATABASE_PATH./data/app.db该变量会被 week5/backend/app/db.py 中的os.getenv(DATABASE_PATH, ./data/app.db)读取修改它即可将数据库迁移到其他位置。同理make run支持通过HOST/PORT环境变量覆盖监听地址与端口默认127.0.0.1:8000方便多实例并行实验。为 Agent 驱动工作流准备的任务清单README 强调项目包含“Tasks to practice agent-driven workflows”任务清单即 week5/docs/TASKS.md。该文件按难度划分了 11 项任务覆盖前后端与测试的典型改造场景例如前端迁移 Vite React复杂替换静态资源为构建产物FastAPI 挂载dist并新增web-install、web-dev、web-build等 Make 目标笔记搜索分页排序中实现GET /notes/search?q...page1page_size10sort...返回items/total/page/page_size结构完整笔记 CRUD 与乐观更新中新增PUT/DELETE /notes/{id}前端做乐观状态更新与错误回滚Action items 过滤与批量完成中GET /action-items?completed...与事务化的POST /action-items/bulk-complete标签多对多关系复杂Tag模型与note_tags关联表配合#hashtags自动提取提取逻辑增强中扩展 week5/backend/app/services/extract.py当前仅支持以!结尾或todo:开头的行支持#hashtags与- [ ] task text语法并新增POST /notes/{id}/extract统一错误响应封装易–中全局异常处理器输出{ ok: false, error: { code: ..., message: ... } }风格 JSON列表分页、索引、测试覆盖率、Vercel 部署等其余任务。这些任务与 week5/assignment.md 的要求相互呼应实现任务时必须同时利用 Warp Drive保存的 prompts、rules 或 MCP 服务器与 Warp 内的多 Agent 工作流例如在不同 Warp 标签页并发处理独立任务并可用git worktree避免 Agent 之间互相覆盖改动最终在writeup.md中记录每个自动化的设计、前后对比、自主级别与多 Agent 协作经验。小结Week 5 起手项目刻意保持“最小”却覆盖了全栈应用的关键构件FastAPI 路由与静态托管、SQLAlchemy SQLite 持久化、种子数据、pytest 测试与 black/ruff 规范。理解 week5/README.md 中的启动、测试、格式化与配置流程再对照 week5/Makefile 与 week5/backend/app/main.py 等源码你就能把整套工具链交给 Agent让它在有限范围内自主改代码、跑测试、过 lint并借此练习保存 Prompt、规则与多 Agent 并发的现代开发工作流。赞分享示例工程【免费下载链接】modern-software-dev-assignmentsAssignments for CS146S: The Modern Software Dev (Stanford University Fall 2026/2025)项目地址https://gitcode.com/GitHub_Trending/mo/modern-software-dev-assignments点击查看免费下载相关推荐FastAPISQLite全栈入门modern-software-dev-assignments week2应用代码结构详解FastAPISQLite全栈入门modern software dev assignments week2应用代码结构详解 从 Free Notes 到示例工程modern-software-dev-assignments技术栈清单FastAPI、SQLite与AI工具链全景modern software dev assignments技术栈清单FastAPI、SQLite与AI工具链全景 modern software dev示例工程modern-software-dev-assignments Week2全流程拆解FastAPISQLite行动项应用进化史modern software dev assignments Week2全流程拆解FastAPISQLite行动项应用进化史 modern softwar示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/30 18:00:01

Spring Boot新闻管理系统实战:从数据库设计到部署避坑全解析

做了好几年Java开发,也带过不少实习生和应届生,Spring Boot新闻管理系统这套组合拳,我在本科毕设、课程设计还有面试项目里见了太多次。这个题目之所以长盛不衰,核心原因是它覆盖了Web开发里最经典的一整条链路:前端页…

2026/9/30 18:00:01

Redis缓存穿透与击穿实战:从CacheClient工具类设计到面试应答

做后端项目,尤其是把黑马点评这种完整商城项目放进简历的同学,大概率都在 Redis 缓存上栽过跟头。缓存穿透、缓存击穿这两个词,面试官几乎必问,理论背得再熟,落到代码层面很多人是懵的。真正把这两个问题落地解决的&am…

2026/9/30 19:00:16

C 姐逛云栖|从数据库到 Agent,今年大会上我们看到了......

今年科技圈的固定节目云栖大会又来刷屏了,5 万多平场馆、超 10 万人报名,主题从去年的「碳硅共生」换成了「智以致用」。跟着 C 姐逛完一圈,最明显的感受是:前两年大家都在聊 AI 是什么、能做什么,今年全场都在讲怎么做…

2026/9/30 18:55:16

思政类论文能不能用 AI 辅助?一场辩论的完整记录

马克思主义理论、思想政治教育方向的研究生,聚在一起聊论文,迟早会碰到这个问题。上周我们师门读书会就把这个题目拿出来辩了一场:正方是研二的三位同学,反方是研三的三位,各二十分钟陈词,最后找共识。整理…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/30 18:00:04

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑