Video Demo: https://www.youtube.com/watch?v=PeDQRbp62ys
CS50xTasks is a web application, built using Flask, that is designed as a straightforward task management tool for teams. It covers essential features such as user authentication, task organization, progress tracking, notifications, search, and collaborative commenting.
To set up CS50xTasks, follow these steps:
-
Install required packages using
pip3 install -r requirements.txt
. -
Initialize the database with
python models.py
.
- Flask: The primary web framework.
- Flask-Session: Manages user sessions.
- SQLAlchemy: Handles database interactions.
- Werkzeug: A utility library used for security functions like password hashing.
- Flask-WTF: Integrates Flask with WTForms for form handling.
- WTForms: A library for creating and validating web forms.
- wtforms-alchemy: Extends WTForms for use with SQLAlchemy models.
To run the application, execute
flask run
.
Here's an overview of the files in CS50xTasks:
Serves as the backend of the Flask web application, managing endpoints for user authentication, task management, notifications, and user interactions. It connects to a database using SQLAlchemy and utilizes Flask-WTF for form handling and CSRF protection.
Defines SQLAlchemy models for the task management system, including tables for users, tasks, priorities, statuses, comments, and notifications. The create_db
function initializes the SQLite database.
Manages Flask-WTF forms for all POST interactions and offers comprehensive form validation.
Provides the HTML layout for the web app. It includes styling and libraries like Bootstrap, jQuery, and Font Awesome. The main content is customizable using block tags and handles notifications.
A template for user login, registration, and password change forms.
A macro for creating HTML tables to display task information.
A template for the tasks dashboard, showing tasks assigned to and assigned by the user.
A macro template form for creating, editing, and searching tasks.
A template for creating a new task with a form and JavaScript for date retrieval and assignee autocomplete.
A template for editing tasks with form fields and assignee autocomplete.
Displays detailed task information, related comments, and allows task editing and adding comments.
A template for searching tasks with form fields and assignee/assigner autocompletion.
CSS styles for the web app.
JavaScript for setting due date to the current date.
JavaScript for assignee autocomplete.
JavaScript for assigner autocomplete.
JavaScript for populating the notifications dropdown menu.