logo
1
0
Login

简易待办事项应用

一个基于Flask的简易待办事项应用,专为Aicoding训练营设计,综合运用Python、Linux、Git、Docker和数据库开发等技能。

项目特色

  • Python Flask框架 - 轻量级Web应用开发
  • Linux命令操作 - 服务器环境管理
  • Docker容器化 - 应用部署和隔离
  • PostgreSQL数据库 - 关系型数据库操作
  • Git版本控制 - 代码管理和协作
  • 单元测试 - 代码质量保证
  • 响应式前端 - Bootstrap + JavaScript

技术栈

后端

  • Flask 2.3.3 - Web框架
  • SQLAlchemy - ORM数据库操作
  • PostgreSQL - 关系型数据库
  • Flask-Migrate - 数据库迁移
  • Gunicorn - WSGI服务器

前端

  • Bootstrap 5 - 响应式UI框架
  • Font Awesome - 图标库
  • Vanilla JavaScript - 原生JS交互

部署

  • Docker - 容器化部署
  • Docker Compose - 多容器编排
  • Nginx - 反向代理

项目结构

todo_app/ ├── app.py # Flask主应用 ├── requirements.txt # Python依赖 ├── Dockerfile # Docker镜像构建 ├── docker-compose.yml # 容器编排 ├── nginx.conf # Nginx配置 ├── init.sql # 数据库初始化 ├── env.example # 环境变量示例 ├── .gitignore # Git忽略文件 ├── templates/ │ └── index.html # 前端页面 ├── tests/ │ └── test_app.py # 单元测试 └── README.md # 项目文档

快速开始

1. 环境准备

确保已安装以下工具:

  • Python 3.9+
  • Docker & Docker Compose
  • Git

2. 克隆项目

git clone https://cnb.cool/sashavagals/todo_app.git cd todo_app

3. 环境配置

# 复制环境变量文件 cp env.example .env # 编辑环境变量(可选) nano .env

4. 使用Docker部署(推荐)

# 构建并启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f todo-app # 停止并删除所有服务 docker-compose down -v

5. 本地开发模式

# 创建虚拟环境 conda create -n todo_app python=3.10 conda activate todo_app # 安装依赖 pip install -r requirements.txt # 启动应用 python app.py

功能特性

待办事项管理

  • 创建待办事项(标题、描述、优先级、截止时间)
  • 查看待办事项列表
  • 编辑待办事项
  • 删除待办事项
  • 切换完成状态
  • 按状态筛选(全部/待完成/已完成)

优先级系统

  • 高优先级(红色标识)
  • 中优先级(黄色标识)
  • 低优先级(绿色标识)

数据统计

  • 总待办事项数量
  • 已完成事项数量
  • 完成率统计

API接口

获取所有待办事项

GET /api/todos

创建待办事项

POST /api/todos Content-Type: application/json { "title": "待办事项标题", "description": "详细描述", "priority": "high|medium|low", "due_date": "2024-12-31T23:59:59" }

获取单个待办事项

GET /api/todos/{id}

更新待办事项

PUT /api/todos/{id} Content-Type: application/json { "title": "新标题", "completed": true }

切换完成状态

POST /api/todos/{id}/toggle

删除待办事项

DELETE /api/todos/{id}

数据库设计

todos表结构

CREATE TABLE todos ( id SERIAL PRIMARY KEY, title VARCHAR(200) NOT NULL, description TEXT, completed BOOLEAN DEFAULT FALSE, priority VARCHAR(20) DEFAULT 'medium', due_date TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

测试

# 运行单元测试 pytest tests/ # 运行测试并生成覆盖率报告 pytest --cov=app tests/ # 运行特定测试文件 pytest tests/test_app.py::test_create_todo

部署指南

生产环境部署

  1. 配置环境变量
export DATABASE_URL=postgresql://user:password@host:port/database export SECRET_KEY=your-secret-key export FLASK_ENV=production
  1. 使用Docker Compose部署
docker-compose -f docker-compose.prod.yml up -d
  1. 配置Nginx反向代理
# 复制nginx配置 sudo cp nginx.conf /etc/nginx/sites-available/todo-app sudo ln -s /etc/nginx/sites-available/todo-app /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

学习目标

通过这个项目,学员将掌握:

Python开发

  • Flask Web框架使用
  • SQLAlchemy ORM操作
  • RESTful API设计
  • 单元测试编写

Linux操作

  • 命令行基础操作
  • 文件系统管理
  • 进程和服务管理
  • 日志查看和分析

Git版本控制

  • 代码版本管理
  • 分支操作
  • 合并和冲突解决
  • 协作开发流程

Docker容器化

  • 容器镜像构建
  • 多容器编排
  • 网络和存储管理
  • 生产环境部署

数据库开发

  • PostgreSQL数据库操作
  • SQL查询优化
  • 数据库迁移
  • 备份和恢复

常见问题

Q: 如何重置数据库?

docker-compose down -v docker-compose up -d

Q: 如何查看应用日志?

docker-compose logs -f todo-app

Q: 如何备份数据?

docker-compose exec db pg_dump -U todo_user todo_db > backup.sql

Q: 如何扩展应用?

  • 添加用户认证系统
  • 实现数据分页
  • 添加搜索功能
  • 集成消息通知

Aicoding训练营 - 让编程学习更简单!

About

No description, topics, or website provided.
Language
HTML40.6%
Python34.2%
Shell22.6%
Dockerfile2.7%