Skip to content

kritisinghrajput/TimeMate

Repository files navigation

TimeMate - Time Management Web Application

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.

Features

🔐 User Authentication & Profiles

  • User registration, login, and logout
  • Profile management (name, email, password reset)
  • Customizable notification preferences
  • User profile with bio and timezone settings

📋 Task & Time Management

  • 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)

🔔 Reminders & Notifications

  • 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

📊 Dashboard & Visualization

  • 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

🔧 Backend & Database

  • 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

📱 API & Integration

  • REST API for mobile integration
  • JSON endpoints for tasks, user data, and analytics
  • Authentication and permission controls
  • Comprehensive API documentation

Technology Stack

  • 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

Installation & Setup

Prerequisites

  • Python 3.8 or higher
  • pip (Python package installer)
  • Git

Step 1: Clone the Repository

git clone <repository-url>
cd TimeMate

Step 2: Create Virtual Environment

python -m venv timemate_env

Step 3: Activate Virtual Environment

Windows:

timemate_env\Scripts\activate

macOS/Linux:

source timemate_env/bin/activate

Step 4: Install Dependencies

pip install -r requirements.txt

Step 5: Environment Configuration

Create 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-password

Step 6: Database Setup

python manage.py makemigrations
python manage.py migrate

Step 7: Create Superuser

python manage.py createsuperuser

Step 8: Run the Development Server

python manage.py runserver

The application will be available at http://127.0.0.1:8000/

Project Structure

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

Usage Guide

Getting Started

  1. Register/Login: Create an account or log in to access the application
  2. Dashboard: View your daily overview, upcoming tasks, and statistics
  3. Create Tasks: Add new tasks with title, description, date, time, and priority
  4. Manage Tasks: Edit, delete, or mark tasks as completed
  5. Calendar View: See your schedule in a weekly calendar format
  6. Analytics: Track your productivity and task completion rates

Task Management

  • 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

Calendar Features

  • 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

Reminders

  • 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

Analytics & Reports

  • 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

API Documentation

Authentication

All API endpoints require authentication. Use session authentication for web requests or token authentication for mobile apps.

Endpoints

Tasks

  • GET /api/tasks/ - List all tasks
  • POST /api/tasks/ - Create a new task
  • GET /api/tasks/{id}/ - Get task details
  • PUT /api/tasks/{id}/ - Update task
  • DELETE /api/tasks/{id}/ - Delete task
  • POST /api/tasks/{id}/complete/ - Mark task as completed

User

  • GET /api/user/profile/ - Get user profile
  • PUT /api/user/profile/ - Update user profile
  • GET /api/user/stats/ - Get user statistics

Calendar

  • GET /api/calendar/ - Get calendar data
  • GET /api/calendar/{date}/ - Get calendar data for specific date

Analytics

  • GET /api/analytics/ - Get analytics data
  • GET /api/analytics/weekly/ - Get weekly analytics

Configuration

Database Configuration

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',
    }
}

Email Configuration

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'

Development

Running Tests

python manage.py test

Creating Migrations

python manage.py makemigrations

Applying Migrations

python manage.py migrate

Collecting Static Files

python manage.py collectstatic

Deployment

Production Settings

  1. Set DEBUG = False
  2. Configure a production database
  3. Set up proper email settings
  4. Configure static file serving
  5. Set up HTTPS
  6. Use environment variables for sensitive data

Docker Deployment

Create a Dockerfile and docker-compose.yml for containerized deployment.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new features
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support and questions:

  • Create an issue in the repository
  • Contact the development team
  • Check the documentation

Future Enhancements

  • 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

About

A Time Scheduler Web Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors