TimeMate is a comprehensive Django-based web application designed to help users effectively manage their time by scheduling tasks, receiving reminders, and tracking free time. The application provides a modern, user-friendly interface with powerful features for personal and professional time management.
- User registration, login, and logout
- Profile management (name, email, password reset)
- Customizable notification preferences
- User profile with bio and timezone settings
- Add, edit, delete, and reschedule tasks
- Task details: title, description, date, start & end time, priority
- Automatic calculation of free time slots between tasks
- Mark tasks as completed with timestamps
- Task status tracking (pending, in progress, completed, cancelled)
- Priority levels (low, medium, high, urgent)
- Email and in-app reminders for upcoming tasks
- Customizable reminder intervals (10 mins, 30 mins, 1 hour, 1 day before)
- Notification preferences management
- Automatic reminder scheduling
- Daily/weekly calendar view with scheduled tasks and free time
- Summary of completed vs. pending tasks
- Analytics and statistics
- Weekly reports and productivity insights
- Free time analysis
- Django ORM with SQLite (default) or PostgreSQL support
- RESTful API using Django REST Framework
- Comprehensive models: User, UserProfile, Task, Reminder
- Admin interface for data management
- REST API for mobile integration
- JSON endpoints for tasks, user data, and analytics
- Authentication and permission controls
- Comprehensive API documentation
- Backend: Django 5.2.5
- Database: SQLite (development) / PostgreSQL (production)
- API: Django REST Framework
- Frontend: Bootstrap 5, HTML5, CSS3, JavaScript
- Forms: Django Crispy Forms with Bootstrap 5
- Authentication: Django's built-in authentication system
- Python 3.8 or higher
- pip (Python package installer)
- Git
git clone <repository-url>
cd TimeMatepython -m venv timemate_envWindows:
timemate_env\Scripts\activatemacOS/Linux:
source timemate_env/bin/activatepip install -r requirements.txtCreate a .env file in the project root:
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
EMAIL_HOST=localhost
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@example.com
EMAIL_HOST_PASSWORD=your-email-passwordpython manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserverThe application will be available at http://127.0.0.1:8000/
TimeMate/
├── timemate/ # Main project settings
│ ├── settings.py # Django settings
│ ├── urls.py # Main URL configuration
│ └── wsgi.py # WSGI configuration
├── accounts/ # User authentication app
│ ├── models.py # UserProfile model
│ ├── views.py # Authentication views
│ ├── forms.py # User forms
│ ├── serializers.py # API serializers
│ └── urls.py # Account URLs
├── tasks/ # Task management app
│ ├── models.py # Task and Reminder models
│ ├── views.py # Task views
│ ├── forms.py # Task forms
│ ├── serializers.py # API serializers
│ └── urls.py # Task URLs
├── dashboard/ # Dashboard app
│ ├── views.py # Dashboard views
│ └── urls.py # Dashboard URLs
├── api/ # REST API app
│ ├── views.py # API views
│ └── urls.py # API URLs
├── templates/ # HTML templates
├── static/ # Static files (CSS, JS, images)
├── media/ # User uploaded files
├── requirements.txt # Python dependencies
└── README.md # Project documentation
- Register/Login: Create an account or log in to access the application
- Dashboard: View your daily overview, upcoming tasks, and statistics
- Create Tasks: Add new tasks with title, description, date, time, and priority
- Manage Tasks: Edit, delete, or mark tasks as completed
- Calendar View: See your schedule in a weekly calendar format
- Analytics: Track your productivity and task completion rates
- Create Task: Fill in task details including title, description, date, start/end time, and priority
- Quick Task: Use the quick task form for rapid task creation
- Edit Task: Modify task details or change status
- Complete Task: Mark tasks as completed with timestamps
- Delete Task: Remove tasks from your schedule
- Weekly View: See your entire week at a glance
- Daily View: Focus on specific days
- Free Time Slots: Automatically calculated gaps between tasks
- Task Overlap Detection: Prevents scheduling conflicts
- Set Reminders: Choose when to receive notifications (10 mins, 30 mins, 1 hour, 1 day before)
- Email Notifications: Receive email reminders for upcoming tasks
- In-App Notifications: Get notifications within the application
- Customize Preferences: Manage notification settings in your profile
- Dashboard Statistics: View task completion rates and productivity metrics
- Weekly Reports: Detailed analysis of your weekly performance
- Free Time Analysis: Understand your available time slots
- Priority Analysis: Track completion rates by priority level
All API endpoints require authentication. Use session authentication for web requests or token authentication for mobile apps.
GET /api/tasks/- List all tasksPOST /api/tasks/- Create a new taskGET /api/tasks/{id}/- Get task detailsPUT /api/tasks/{id}/- Update taskDELETE /api/tasks/{id}/- Delete taskPOST /api/tasks/{id}/complete/- Mark task as completed
GET /api/user/profile/- Get user profilePUT /api/user/profile/- Update user profileGET /api/user/stats/- Get user statistics
GET /api/calendar/- Get calendar dataGET /api/calendar/{date}/- Get calendar data for specific date
GET /api/analytics/- Get analytics dataGET /api/analytics/weekly/- Get weekly analytics
The application uses SQLite by default. For production, configure PostgreSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'timemate',
'USER': 'postgres',
'PASSWORD': 'your-password',
'HOST': 'localhost',
'PORT': '5432',
}
}Configure email settings for reminders:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@gmail.com'
EMAIL_HOST_PASSWORD = 'your-app-password'python manage.py testpython manage.py makemigrationspython manage.py migratepython manage.py collectstatic- Set
DEBUG = False - Configure a production database
- Set up proper email settings
- Configure static file serving
- Set up HTTPS
- Use environment variables for sensitive data
Create a Dockerfile and docker-compose.yml for containerized deployment.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new features
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
- Mobile app integration
- Google Calendar sync
- Team collaboration features
- Advanced analytics and reporting
- Integration with third-party tools
- Drag-and-drop calendar interface
- Time tracking and billing features