A modern, full-stack TODO application built with Flask (backend) and React (frontend), featuring JWT authentication, email notifications, and real-time task management.
- User registration and login
- JWT-based authentication
- Google OAuth integration (ready)
- Password hashing with bcrypt
- Create, read, update, delete TODOs
- Priority levels (High, Medium, Low)
- Task completion tracking
- Real-time statistics
- Automatic email on TODO creation
- Gmail SMTP integration
- Customizable email templates
- Responsive design with Tailwind CSS
- Loading states and error handling
- Task filtering and sorting
- Progress tracking dashboard
todo-app/
├── backend/ # Flask API
│ ├── app.py # Main application
│ ├── models/ # Database models
│ ├── routes/ # API endpoints
│ ├── utils/ # Utilities
│ └── config.py # Configuration
├── frontend/ # React SPA
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── contexts/ # React contexts
│ │ └── services/ # API services
│ └── public/
└── docs/ # Documentation
- Python 3.8+
- Node.js 16+
- Git
- Clone & Setup
git clone <your-repo-url>
cd todo-app- Backend Setup
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # Configure your environment variables
python app.py- Frontend Setup
cd frontend
npm install
npm start- Access Application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Push code to GitHub
- Create account on Render
- Use the included
render.yamlblueprint - Configure environment variables
- Deploy!
Detailed deployment guide: DEPLOYMENT_GUIDE.md
SECRET_KEY=your-secret-key
JWT_SECRET_KEY=your-jwt-secret
DATABASE_URL=your-database-url
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
CORS_ORIGINS=http://localhost:3000REACT_APP_API_URL=http://localhost:5000POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current userPOST /api/auth/refresh- Refresh token
GET /api/todos- Get user's TODOsPOST /api/todos- Create new TODOPUT /api/todos/{id}- Update TODODELETE /api/todos/{id}- Delete TODOGET /api/todos/stats- Get TODO statistics
cd backend
python -m pytestcd frontend
npm testcd backend
python test_api.py- Flask - Web framework
- SQLAlchemy - ORM
- JWT - Authentication
- Flask-Mail - Email
- bcrypt - Password hashing
- PostgreSQL/SQLite - Database
- React - UI framework
- React Router - Navigation
- Axios - HTTP client
- Tailwind CSS - Styling
- Context API - State management
- Render - Hosting platform
- PostgreSQL - Production database
- Gunicorn - WSGI server
- ✅ Backend API - Complete
- ✅ Frontend UI - Complete
- ✅ Authentication - Working
- ✅ Database - Configured
- ✅ Email System - Configured
- ✅ Deployment Ready - Yes
- 🔄 Google OAuth - Ready to configure
- 🔄 Advanced Features - In progress
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License.
For issues and questions:
- Check the deployment guide
- Review the quick start guide
- Create an issue on GitHub
Built with ❤️ for modern web development