Sheikh-H/Priora-Task-Manager

GitHub: Sheikh-H/Priora-Task-Manager

Priora 是一个基于 Flask 和 SQLite 构建的全栈任务管理应用,旨在展示完整的后端开发、数据库设计和 Web 安全实践。

Stars: 0 | Forks: 0

# ✅ Priora:全栈任务管理应用

一个使用 Flask、SQLite、JavaScript 和现代 Web 开发实践构建的全栈任务管理应用。
旨在作为一个作品集项目,展示后端开发、数据库设计、安全性实现以及结构化的应用架构。该项目会积极维护,并将随着我对全栈开发理解的加深而持续改进。

# 📘 项目概述 Priora 是一个全栈任务管理应用,旨在展示我从创建简单网站,到构建具备后端、数据库、身份验证系统和结构化代码架构的完整 Web 应用的进步历程。 本项目的目的是创建一个真实的效率应用,用户可以在其中创建账户、管理个人任务、跟踪进度并维护任务活动历史。 本项目**仅用于作品集展示和教育目的**。它展示了我对全栈开发概念的理解,并不打算作为商业效率平台使用。 Priora 背后的主要目标不仅是创建一个可运行的应用,更是为了理解现实世界中的应用是如何构建、维护和保护的。 # 🚀 开发历程 Priora 代表了我开发历程中的一个重要阶段,因为它将我之前掌握的前端技能与全新的后端及软件工程概念结合在了一起。 早期的项目主要集中在使用 HTML、CSS 和 JavaScript 创建具有视觉吸引力的网站上。虽然这些项目帮助我了解了布局、样式、响应式设计和用户交互,但我希望转向构建能够存储数据、管理用户并执行实际操作的应用。 通过这个项目,我学到了: - 前端和后端系统是如何通信的。 - 数据库是如何存储和组织应用数据的。 - 身份验证系统是如何工作的。 - 如何保护用户数据。 - 为了可维护性,应该如何构建大型项目结构。 在这个项目中,我做出的最大改进之一是 CSS 的组织方式。 我没有将所有样式都放在一个巨大的样式表中,而是开始根据用途和页面需求将 CSS 拆分到不同的部分。这让开发变得更加容易,因为: - 单个页面更易于维护。 - 更容易定位修改的内容。 - 样式冲突减少了。 - 随着应用的增长,项目结构变得更加清晰。 这种方法反映了大型应用常见的组织方式,即不同的组件和功能都有各自的职责。 # ✨ 功能 ## 👤 用户账户 Priora 包含一个完整的身份验证系统,允许用户: - 创建账户。 - 安全登录。 - 重置密码。 - 修改密码。 - 安全退出。 - 仅访问属于他们自己的任务。 每个用户都有自己私有的任务数据,这些数据通过数据库关系进行隔离。 ## ✅ 任务管理 用户可以: - 创建新任务。 - 查看即将到期的任务。 - 查看逾期的任务。 - 查看今日任务。 - 更新任务信息。 - 删除任务。 - 将任务标记为已完成或未完成。 - 搜索和过滤任务。 应用会跟踪任务信息,包括: - 标题。 - 描述。 - 到期日期。 - 到期时间。 - 完成日期。 - 完成状态。 ## 📋 任务历史 Priora 的一个主要功能是任务日志记录。 应用会记录重要的任务事件,包括: - 任务创建。 - 任务完成。 - 任务重新开启。 - 任务更新。 - 用户添加的笔记。 这形成了一个活动历史记录,让用户能够了解任务随时间发生的变化。 ## 🌙 用户界面 前端包含: - 响应式设计。 - 深色模式支持。 - 动画页面元素。 - 客户端表单验证。 - 动态界面更新。 - 移动端友好的布局。 JavaScript 被用于提升用户体验,而不是替代服务端验证。 # 🏗️ 应用架构 Priora 遵循结构化的 Flask 应用设计,将不同的职责划分到独立的文件中。 ``` Priora/ │ ├── app.py # Main Flask application and route handling ├── requirements.txt # Project dependencies ├── README.md # Project documentation ├── LICENSE # MIT Licence │ ├── instance/ │ └── task-manager.db # SQLite database (auto generated) │ ├── services/ # Backend application services │ ├── auth.py # Authentication and password security │ ├── config.py # Application initialisation │ ├── database.py # Database connections and CRUD operations │ └── tasks.py # Task management logic │ ├── templates/ # Jinja HTML templates │ ├── layout.html # Base application layout │ ├── main/ # Public pages │ ├── user/ # User account pages │ ├── tasks/ # Task management pages │ └── error/ # Error handling pages │ ├── static/ # Frontend assets │ │ │ ├── css/ │ │ ├── base.css # Global styling and variables │ │ ├── animations.css # Page animations │ │ ├── responsive.css # Responsive layouts │ │ ├── components/ # Reusable component styles │ │ └── pages/ # Page-specific styling │ │ │ ├── js/ │ │ └── script.js # Client-side functionality │ │ │ └── media/ # Images, icons and backgrounds │ └── .env # Environment variables (auto generated) ``` ## ⚙️ 应用如何运作 ### Flask 路由 (`app.py`) Flask 应用充当了用户界面和后端服务之间的桥梁。 路由负责处理如下请求: - 加载页面。 - 处理表单。 - 创建任务。 - 更新任务。 - 验证用户身份。 例如: ``` @app.route("/user/tasks/add-task") ``` 处理创建新任务的请求。 该路由接收用户输入,对信息进行验证,然后与数据库服务进行通信。 ### 🗄️ 数据库层 (`database.py`) 数据库服务管理与 SQLite 的通信。 它包含负责以下操作的函数: - 创建数据库表。 - 添加用户。 - 查找用户。 - 创建任务。 - 更新任务。 - 移除任务。 - 获取任务历史。 使用独立的数据库层可以将 SQL 操作与应用路由分离,从而使得项目更易于维护。 ### 📝 任务服务 (tasks.py) 任务服务位于 Flask 路由和数据库之间。 其目的是处理与任务相关的逻辑。 示例: ### 加载任务 获取属于当前登录用户的活跃任务。 ### 搜索任务 允许通过以下条件过滤任务: - 日期。 - 完成状态。 - 任务 ID。 - 完成任务 更新任务状态,并创建记录该更改的日志条目。 分离这些逻辑可以防止 `app.py` 变得过大且难以管理。 ## 🛡️ 安全性实现 安全性是我在本项目中的一个重要学习领域。 尽管 Priora 是一个作品集项目,但我依然希望实现一些专业应用中才使用的实践。 ### 密码保护 密码绝不以明文形式存储。 Priora 使用了: - Argon2 密码哈希。 - 安全的密码验证。 - 密码重置保护。 Argon2 是专门为密码安全设计的算法,如果数据库信息泄露,它有助于保护用户的凭证。 ### 会话安全 用户会话通过 Flask 的会话管理进行保护。 已实现的安全功能包括: - HTTP-only cookie。 - 安全 cookie。 - SameSite cookie 限制。 - 会话过期。 - 受保护的路由。 - CSRF 保护 Priora 使用 Flask-WTF CSRF 保护。 敏感操作需要提供有效的 CSRF token,包括: - 退出登录。 - 创建任务。 - 更新任务。 - 删除任务。 - 更改任务完成状态。 这有助于防止恶意网站代替用户提交非法请求。 ### 数据库安全 数据库安全措施包括: - 参数化 SQL 查询。 - 外键关系。 - 用户所有权检查。 - SQLite 外键强制执行。 用户只能访问和修改自己的任务。 ### 内容安全策略 应用包含使用内容安全策略 (CSP) 的安全标头。 这限制了脚本、样式和资源的加载来源,有助于减少某些基于浏览器的攻击。 # 🧩 技术栈 | 技术 | 用途 | |---|---| | **Python** | 支持应用逻辑的后端编程语言。 | | **Flask** | 轻量级 Web 框架,用于处理路由、请求、模板和应用结构。 | | **SQLite** | 用于存储用户、任务和任务历史的数据库引擎。 | | **Jinja** | 服务端模板引擎,用于动态生成 HTML 页面。 | | **HTML5** | 提供网站的结构和语义化布局。 | | **CSS3** | 负责样式、响应式布局、动画和主题支持。 | | **JavaScript** | 提供客户端功能、验证、动画和交互特性。 | | **Argon2** | 用于保护用户凭证的安全密码哈希算法。 | | **Flask-WTF** | 为安全的表单提交提供 CSRF 保护。 | | **Gunicorn** | 用于部署 Flask 应用的生产级 WSGI 服务器。 | ## 🗄️ 数据库设计 Priora 使用了三个主要的数据库表。 ### Users 表 存储账户信息。 - user_id - first_name - last_name - email - password - date_created ### Tasks 表 存储用户任务。 - task_id - user_id - title - description - due_date - due_time - completed - completion_date - completion_time ## 环境要求 - Python 3.10+ - pip - 虚拟环境 ## 安装说明 克隆代码库: `git clone ` 进入项目目录: `cd Priora` 创建虚拟环境: `python -m venv venv` 激活环境: `source venv/bin/activate` 安装依赖: `pip install -r requirements.txt` 配置你的环境变量: `SECRET_KEY=your_secret_key` 运行 Flask: `flask run` ## ☁️ 部署 Priora 旨在使用 Render 等平台进行部署。 生产环境的部署可以使用 Gunicorn: `gunicorn app:app` 环境变量应通过托管服务商安全地存储。 ## 🔮 未来改进 未来可能的改进包括: - 从 SQLite 迁移到 PostgreSQL。 - 添加任务分类。 - 添加任务优先级。 - 添加电子邮件通知。 - 添加自动化测试。 - 添加数据库迁移。 - 创建移动应用。 - 改进无障碍功能。 - 添加用户资料管理。 - 改进任务排序选项。 - 添加 API endpoint。 - 添加自动化部署 pipeline。 ## 📄 许可证

本项目基于 MIT 许可证 授权 — 详情请参阅 LICENCE 文件。


MIT 许可证



版权所有 (c) 2026 Sheikh Hussain



特此免费授予任何获得本软件副本及相关文档文件(下称“软件”)的人无限制地处置本软件的权利,包括无限制权利使用、复制、修改、合并、发布、分发、再授权和/或销售本软件副本,以及再授权配备了本软件的人上述各项权利,但须符合以下条件:



上述版权声明和本许可声明应包含在本软件的所有副本或实质性部分中。



本软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有人不对因本软件或本软件的使用或其他交易引起的、与之相关的或由此产生的任何索赔、损害或其他责任承担任何责任,无论是在合同诉讼、侵权行为还是其他诉讼中。



## 脚注

🗣️ Feel free to follow, connect, and chat!

GitHub LinkedIn Gmail Portfolio
标签:Flask, SQLite, 任务管理, 后端开发, 数据可视化, 逆向工具