TodoBox

A Flask-based personal task management application with wisdom quotes, user authentication, and multi-database support

View on GitHub

Tech Stack

Built with modern Python web development technologies and production-ready components (Latest - January 2026):

Flask 2.3.2 - Web Framework SQLAlchemy 1.4.17 - Database ORM Flask-Login 0.6.3 - Authentication Flask-WTF 1.2.2 - CSRF Protection Bleach 6.3.0 - XSS Prevention Werkzeug 3.0.6 - Password Hashing Flask-Migrate 4.1.0 - Database Migrations Gunicorn 23.0.0 - Production Server Bootstrap 4 - Frontend UI Python 3.10+ - Runtime

Quick Start

Get TodoBox up and running in just a few steps:

1. Clone the Repository
git clone https://github.com/faizal2007/todobox.git
cd todobox
2. Install Dependencies
pip install -r requirements.txt
3. Configure Environment
cp .flaskenv.example .flaskenv
# Edit .flaskenv with your configuration
python3 -c "from app.config import generate_salt; print(generate_salt())"
4. Initialize Database & Create User
flask db upgrade
python3 create_user.py
# Follow the interactive prompts
5. Run the Application
flask run

The application will be available at http://localhost:5000

API Documentation

TodoBox provides RESTful API endpoints with token-based authentication for external integrations:

Key API Endpoints
GET /api/todo # List all todos (bearer token required)
POST /api/todo # Create new todo (bearer token required)
GET /getTodo/<id> # Get specific todo
PUT /api/todo/<id> # Update todo (bearer token required)
DELETE /api/todo/<id> # Delete todo (bearer token required)
POST /api/auth/token # Generate API tokens
POST /done # Mark todo as complete
Authentication & Examples

Token-based Authentication: Generate API tokens from your account settings for secure external integrations. All API endpoints support Bearer token authentication.

Sample cURL Commands
# List all todos (requires token)
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://todobox.example.com/api/todo

# Create a new todo
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Buy groceries","details":"Milk, eggs, bread"}' \
  https://todobox.example.com/api/todo

# Update a todo
curl -X PUT -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Updated task"}' \
  https://todobox.example.com/api/todo/123

# Delete a todo
curl -X DELETE -H "Authorization: Bearer YOUR_TOKEN" \
  https://todobox.example.com/api/todo/123

# Generate new API token
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  https://todobox.example.com/api/auth/token

Web Authentication: Session-based authentication with OAuth support for email/password login and Google OAuth sign-in.

Screenshots

See TodoBox in action with our modern, intuitive interface:

TodoBox Login Page
Login Page

Secure authentication with email/password and Google OAuth support

TodoBox Main Dashboard
Main Dashboard

Clean, organized view with donut charts showing task status by time period

TodoBox Today's Tasks
Today's Tasks

Focus on what matters today with filtered task views and quick actions

TodoBox User Account
User Account

Manage your profile information and account settings

TodoBox Settings Page
Settings

Configure password, API tokens, and application preferences

TodoBox Save Todo
Create/Edit Todo

Easy task creation and editing with markdown support and scheduling options

TodoBox Undone Tasks
Undone Tasks

Track and manage all pending tasks with KIV (Keep In View) status support

Features

๐Ÿ“
Todo Management

Create, organize, and track tasks with responsive 3-4 column grid layout and markdown support

โœ…
Simple Todo Mode

Quick checklist creation with on-the-fly conversion between simple and advanced markdown modes

๐Ÿ†
Achievement Tracking

View completed todos with detailed modal showing completion time and task details

๐Ÿ’ก
Wisdom Quotes

Daily inspiration from ZenQuotes API with local fallback for offline access

๐Ÿ“Š
Dashboard Analytics

Track tasks with donut charts grouped by time periods (today, weekly, monthly, yearly)

๐Ÿ“ฑ
PWA Support

Install as a Progressive Web App on mobile and desktop for native-like experience

๐Ÿ‘ค
User Authentication

Email/password login and Google OAuth sign-in with email verification for new registrations

๐Ÿ“‹
User Registration

Self-service account creation with email verification and terms acceptance

๐Ÿ•
KIV Status

Keep tasks in view with dedicated KIV (Keep In View) status for tasks on hold

โฐ
Smart Reminders

Set reminders with automatic timezone detection and auto-close after 3 notifications

๐ŸŽจ
Modern UI

Bootstrap 4 responsive design with smooth loading indicators and intuitive navigation

๐Ÿ”’
Security

Password hashing, CSRF protection, XSS prevention, secure API token authentication, and pre-commit hooks

๐Ÿ’พ
Flexible Storage

Support for SQLite, MySQL, and PostgreSQL with database migration tools

๐Ÿ”‘
API Access

RESTful API with token-based authentication for external integrations and automation

๐Ÿ“„
Terms Management

Admin-managed terms and disclaimer with version control and user acceptance tracking

๐ŸŒ
Reverse Proxy Support

Ready for deployment behind Nginx with OAuth callback URL support

๐Ÿš€
Production Ready

Gunicorn support, Werkzeug 3.0 compatibility, and comprehensive deployment guides

๐Ÿงช
Comprehensive Testing

44+ test suite (backend, frontend, assets) ensuring reliability and preventing regressions

Deployment

Deploy TodoBox to various platforms with Gunicorn and multi-database support. Latest updates include simple todo mode with on-the-fly conversion, achievement modal, wisdom quotes, PWA support, comprehensive multi-layer testing, and performance optimization.

Production Server Setup
# Install dependencies
pip install -r requirements.txt

# Configure environment
cp .flaskenv.example .flaskenv
nano .flaskenv # Edit with your settings

# Initialize database
flask db upgrade
python3 create_user.py

# Start with Gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 todobox:app
Reverse Proxy Support

Automatic reverse proxy support via Werkzeug ProxyFix middleware for deployment behind Nginx, SSH tunnels, or cloud load balancers. Configure PROXY_X_* settings in .flaskenv.

Comprehensive Documentation

23 documentation files covering all aspects of TodoBox:

  • Getting Started: SETUP.md, QUICKSTART.md, USER_CREATION.md
  • API & Architecture: API.md, MODELS.md, ARCHITECTURE.md
  • Deployment: DEPLOYMENT.md, DEPLOYMENT_CHECKLIST.md, OAUTH_SETUP.md
  • Quality & Security: CODE_REVIEW.md, SECURITY_PATCHES.md, WERKZEUG_FIX.md
  • Navigation: DOCUMENTATION_MASTER_INDEX.md, INDEX.md, OVERVIEW.md

All guides include 100+ code examples, quick reference tables, troubleshooting sections, and accessibility compliance.

For detailed deployment instructions including Nginx configuration, SSL/TLS setup, database configuration, and cloud deployment options, see the DEPLOYMENT.md guide.

Contributing

We welcome contributions to TodoBox! Here's how you can help:

๐Ÿ› Report Bugs

Found a bug? Open an issue on GitHub with detailed information.

๐Ÿ’ก Suggest Features

Have an idea? Share it in the discussions or issues section.

๐Ÿ”ง Submit PRs

Fork the repo, make changes, and submit a pull request.

Development Setup
git clone https://github.com/faizal2007/todobox.git
cd todobox
pip install -r requirements-dev.txt
cp .flaskenv.example .flaskenv
flask db upgrade
flask run