Video Demo: https://www.youtube.com/watch?v=fs7gHobfQZc&t=2s
TaskFlow is a web-based Task Management System designed to enhance personal productivity by helping users organize their tasks and capture fleeting ideas. It features a secure and user-friendly platform where users can manage tasks and store temporary thoughts, ensuring an efficient workflow. The application prioritizes security, simplicity, and scalability, making it a robust tool for anyone looking to stay organized.
-
User Authentication:
- Secure user registration with validation to avoid duplicate usernames or emails.
- Login functionality with password hashing to store passwords securely.
- Logout functionality to terminate the session securely.
-
Task Management:
- Users can create, update, and delete tasks.
- Tasks are linked to specific users, ensuring data privacy and organization.
-
Quick Thoughts:
- A dedicated section to capture fleeting thoughts or reminders.
- Quick thoughts can be created, updated, or deleted with ease.
-
Error Handling:
- Strict access control ensures users can only manage their own data.
- Flash messages provide immediate feedback on user actions, including success and error notifications.
-
Responsive Design (Planned):
- A mobile-friendly interface for better accessibility on various devices.
Contains the main routes for user requests and functionality:
- Handles user authentication, session management, and CRUD operations for tasks and quick thoughts.
- Renders dynamic templates, such as task lists and forms for creating or editing tasks/quick thoughts.
Displays the interface for managing Quick Thoughts:
- Users can add, edit, and delete thoughts using an easy-to-navigate form.
The main dashboard template that links users to both task management and the Quick Thoughts section.
Contains form classes used across the app:
LoginForm
for handling user authentication.RegistrationForm
for secure user registration.TaskForm
for task creation and editing.QuickThoughtForm
for adding/editing quick thoughts.
Defines the database schema and relationships:
- User: Stores user information (username, email, password).
- Task: Stores tasks and links them to the respective users.
- QuickThought: Stores temporary notes or thoughts for users.
This file, providing a comprehensive overview of the project, its functionalities, and design decisions.
-
Security:
- Passwords are securely hashed using
generate_password_hash
to prevent unauthorized access. - Registration includes checks to ensure no duplicate usernames or emails.
- Users can only access their own data, ensuring privacy and security.
- Passwords are securely hashed using
-
User Experience:
- Simple, intuitive UI for managing tasks and thoughts.
- Flash messages provide users with immediate feedback on actions like task creation or error handling.
-
Scalability:
- Flask's modular structure allows easy addition of features.
- The relational database schema is flexible and can be expanded without major architectural changes.
-
Error Handling:
- Graceful error messages are displayed when users attempt unauthorized actions or access missing resources.
-
Responsive Design:
- Enhance mobile responsiveness for improved usability across different screen sizes.
-
Search and Filters:
- Implement task search and filtering options, such as by due date, priority, or task status.
-
Task Prioritization:
- Enable users to assign priority levels to tasks for better organization.
-
Notifications:
- Integrate reminders for upcoming tasks and deadlines.
-
Dark Mode:
- Offer a dark theme for improved usability in low-light conditions.
To run TaskFlow locally, follow these steps:
- Python 3.x
- Virtualenv (recommended)
- Flask
- SQLAlchemy
-
Clone the Repository
First, clone the repository to your local machine:git clone https://github.com/auyber/TaskFlow cd taskflow
-
Set up a Virtual Environment It’s recommended to use a virtual environment to manage dependencies:
python -m venv venv
-
Activate the Virtual Environment On Windows:
venv\Scripts\activate
On macOS/Linux:
source venv/bin/activate
-
Install Dependencies Install the required Python packages:
pip install -r requirements.txt
-
Set up the Database Run the following command to initialize the database:
python -m flask db upgrade
-
Run the Application Start the Flask application with:
python run.py
The application should now be running locally at http://127.0.0.1:5000.
-
Additional Configuration: Environment Variables You may need to configure your environment variables for sensitive data like SECRET_KEY or database URL. Create a .env file in the root directory with the following:
FLASK_APP=run.py FLASK_ENV=development SECRET_KEY=your_secret_key
This project showcases the integration of Flask, SQLAlchemy, and essential web development practices to create a functional task management system. It prioritizes security, usability, and scalability, providing a solid foundation for further enhancements. With features like task management, quick thoughts capture, and user authentication, TaskFlow is an ideal tool for staying organized.
Feedback and contributions are welcome to help improve and expand this project further.