A simple Flask-based web application for managing tasks and categories with secure user authentication.
-
User Authentication System
- Secure registration and login flows
- Session management and logout functionality
-
Task Management
- Create, read, update, and delete (CRUD) operations
- Mark tasks as complete/incomplete
- Rich text descriptions
-
Category System
- Organize tasks with custom categories
-
Search & Filter
- Real-time search functionality
-
Modern Interface
- Responsive design for all devices
- Intuitive user experience
- Clean, minimalist aesthetics
- Python 3.8 or higher
- PostgreSQL
- pip package manager
- Git
-
Clone the repository
git clone https://github.com/augustosouza8/augustosouza8-todo-app.git cd augustosouza8-todo-app -
Set up virtual environment
python3 -m venv venv # Linux/MacOS source venv/bin/activate # Windows venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Initialize database
python -c "from db import init_db; init_db()" -
Launch application
python app.py
The application will be available at http://localhost:5001 🎉
- Register a new account or login with existing credentials
- Secure password recovery flow available
- Create new tasks with:
- Title and description
- Category assignment
- Manage existing tasks:
- Edit task details
- Toggle completion status
- Delete tasks
- Create custom categories
- Edit category details
- Delete unused categories
- Assign/remove tasks from categories
- Search tasks by title
Run the test suite using pytest:
pytest tests/For coverage report:
pytest --cov=app tests/.
├── app.py # Application core
├── requirements.txt # Dependencies
├── static/ # Static assets
│ ├── js/ # JavaScript files
├── templates/ # HTML templates
└── tests/ # Test suite
├── conftest.py # Test configuration
├── test_app.py # App tests
└── test_db.py # Database tests
Before deploying to production, implement these critical security measures:
-
Security Configuration:
- Set strong
SECRET_KEYinapp.py - Implement robust password hashing
- Configure HTTPS
- Set up proper session handling
- Set strong
-
Server Setup:
- Use production-grade WSGI server (Gunicorn/uWSGI)
- Set up reverse proxy (Nginx/Apache)
- Configure proper database security
- Implement rate limiting
-
Monitoring:
- Set up error logging
- Implement performance monitoring
- Configure backup systems
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
Made with ❤️ by Augusto Souza and with assistance from ChatGPT (click here to access the main used chat)