Added detailed documentation covering: - Feature overview and capabilities - Installation and quick start guide - Configuration options and environment setup - API documentation and endpoints - Project structure explanation - Docker deployment instructions - Database model descriptions - Development guidelines - Production deployment checklist - Mobile app integration details 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
8.8 KiB
KeepItGoing Server
A powerful Django-based task management system with time tracking, tag organization, and real-time collaboration features.
Features
Task Management
- Hierarchical Tasks: Support for parent tasks and subtasks
- Priority Levels: Low, Medium, High, and Urgent
- Status Tracking: Pending, In Progress, Completed, Cancelled
- Due Dates & Times: Set specific due dates and times for tasks
- Recurrence: Daily, Weekly, Bi-weekly, Monthly, Yearly, and Custom patterns
Organization
- Tag-Based System: Organize tasks with multiple colored tags
- Smart Filtering: View tasks by All, Today, Upcoming, Overdue, or Completed
- Auto-Tag Assignment: New tasks automatically inherit the active filter tag
- Flexible Sorting: Sort by due date (earliest/latest) or priority (high-to-low/low-to-high)
Time Tracking
- Start/Stop Timers: Built-in time tracking for tasks
- Time Entry History: View detailed time logs for each task
- Formatted Display: Time shown as H:MM:SS with visual indicators
- Running Timer Display: Always visible timer in the UI when tracking time
Collaboration
- Task Sharing: Share individual tasks or entire tags with other users
- Multi-user Support: Full authentication and user management
- Shared Views: See tasks shared with you alongside your own
User Interface
- 3-Pane Layout: Sidebar navigation, task list, and detail panel
- Responsive Design: Works on desktop, tablet, and mobile
- Dark Mode: Built-in dark/light theme toggle
- Quick Add: Fast task creation from any filter view
- Inline Actions: Toggle completion, start/stop timers without leaving the list
API & Sync
- RESTful API: Full REST API for programmatic access
- Mobile App Support: Sync protocol for Android app
- Real-time Updates: Task changes sync across devices
- Conflict Resolution: Handles offline changes and syncing
Tech Stack
- Backend: Django 5.x, Django REST Framework
- Database: SQLite (development), PostgreSQL-compatible
- Task Queue: Celery with Redis
- Authentication: JWT tokens with session support
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Deployment: Docker support included
Installation
Prerequisites
- Python 3.12+
- pip
- virtualenv (recommended)
Quick Start
-
Clone the repository
git clone https://git.firebugit.com/Firebug_IT/KeepItGoingServer.git cd KeepItGoingServer -
Create virtual environment
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies
pip install -r requirements.txt -
Configure environment
cp .env.example .env # Edit .env with your settings -
Run migrations
export DJANGO_SETTINGS_MODULE=config.settings.development python manage.py migrate -
Create superuser
python manage.py createsuperuser -
Run development server
python manage.py runserver -
Access the application
- Web Interface: http://localhost:8000
- Admin Panel: http://localhost:8000/admin
- API Root: http://localhost:8000/api/
Configuration
Settings Modules
The project uses different settings modules for different environments:
config.settings.development- Local developmentconfig.settings.production- Production deploymentconfig.settings.selfhosted- Self-hosted instances
Set via environment variable:
export DJANGO_SETTINGS_MODULE=config.settings.development
Environment Variables
Key environment variables (see .env.example):
SECRET_KEY- Django secret key (required in production)DEBUG- Enable debug mode (True/False)ALLOWED_HOSTS- Comma-separated list of allowed hostsDATABASE_URL- Database connection stringREDIS_URL- Redis connection for CeleryCSRF_TRUSTED_ORIGINS- HTTPS origins for CSRF
API Documentation
Authentication
The API supports both session-based and token-based authentication.
Get Token:
POST /api/auth/login/
{
"email": "user@example.com",
"password": "password"
}
Use Token:
Authorization: Bearer <token>
Endpoints
Tasks
GET /api/tasks/- List all tasksPOST /api/tasks/- Create taskGET /api/tasks/{id}/- Get task detailsPUT /api/tasks/{id}/- Update taskDELETE /api/tasks/{id}/- Delete task
Tags
GET /api/tags/- List all tagsPOST /api/tags/- Create tagGET /api/tags/{id}/- Get tag detailsPUT /api/tags/{id}/- Update tagDELETE /api/tags/{id}/- Delete tag
Time Entries
GET /api/time-entries/- List time entriesPOST /api/time-entries/- Create time entryPOST /api/tasks/{id}/start-timer/- Start timerPOST /api/time-entries/{id}/stop/- Stop timer
Sync (Mobile)
POST /api/sync/sync/- Bidirectional sync endpoint
Project Structure
keepitgoing-server/
├── config/ # Project configuration
│ ├── settings/ # Environment-specific settings
│ ├── urls.py # Main URL configuration
│ └── wsgi.py # WSGI entry point
├── tasks/ # Task management app
│ ├── models.py # Task, Tag, TimeEntry models
│ ├── views.py # API and web views
│ ├── serializers.py # DRF serializers
│ └── migrations/ # Database migrations
├── users/ # User management app
├── sync/ # Mobile sync app
├── notifications/ # Notification system
├── templates/ # Django templates
│ ├── base.html # Base template
│ └── tasks/ # Task templates
├── static/ # Static files
│ ├── css/ # Stylesheets
│ └── js/ # JavaScript
├── manage.py # Django management script
└── requirements.txt # Python dependencies
Docker Deployment
Development
docker-compose -f docker-compose.dev.yml up
Production
docker-compose up -d
Database Models
Task
- Hierarchical structure (parent/subtasks)
- Multiple tags per task
- Due date and time
- Priority and status
- Recurrence patterns
- Soft delete support
Tag
- Color-coded organization
- Multi-task assignment
- Sort ordering
- Archive capability
TimeEntry
- Start/end timestamps
- Duration calculation
- User association
TaskShare
- Share tasks or entire tags
- User-to-user sharing
- Permission management
Development
Running Tests
python manage.py test
Creating Migrations
python manage.py makemigrations
Collecting Static Files
python manage.py collectstatic
Code Style
- Follow PEP 8 for Python code
- Use meaningful variable names
- Add docstrings to functions and classes
Deployment
Production Checklist
- Set
DEBUG = False - Configure strong
SECRET_KEY - Set up proper
ALLOWED_HOSTS - Configure
CSRF_TRUSTED_ORIGINSfor HTTPS - Use PostgreSQL instead of SQLite
- Set up Redis for Celery
- Configure static file serving
- Set up SSL/TLS certificates
- Configure backup strategy
- Set up monitoring and logging
Nginx Configuration
Example nginx config for reverse proxy:
server {
listen 443 ssl;
server_name tasks.firebugit.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
alias /path/to/static/;
}
}
Mobile App Integration
This server works with the KeepItGoing Android app via the sync endpoint.
Sync Protocol:
- Client sends current state and last sync timestamp
- Server returns updates since last sync
- Server accepts client changes
- Conflict resolution handled server-side
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
Proprietary - All Rights Reserved Copyright (c) 2025 Firebug IT
Support
For issues and questions:
- Create an issue in the repository
- Email: keith@firebugit.com
Changelog
Version 1.0.0 (2025-01-18)
- Initial release
- Complete task management system
- Tag-based organization
- Time tracking
- Multi-user support
- Mobile app sync
- Web interface with dark mode
- Responsive design
- RESTful API
Built with ❤️ by Firebug IT