Improve task workflows and overall UX, and align backend routes with the new UI flows. Update docs and development setup accordingly. - UI: refine task list/view/edit templates, project views, and Kanban partial (`_kanban_tailwind.html`) - CSS: polish `app/static/enhanced-ui.css` for spacing, layout, and responsiveness - Routes: update `app/routes/tasks.py` and `app/routes/clients.py` to support new edit/delete/filter behaviors and validations - Templates: align clients/projects pages for consistency and navigation - Docs: refresh `docs/GETTING_STARTED.md` and `docs/TASK_MANAGEMENT_README.md` - Dev: adjust `docker-compose.yml` and `setup.py` to match the latest runtime/build expectations - Tests: add coverage for delete actions, task project editing, and task filters UI (`tests/test_delete_actions.py`, `tests/test_task_edit_project.py`, `tests/test_tasks_filters_ui.py`); update existing tests Why: - Streamlines common task operations and improves discoverability - Ensures backend and UI are consistent and well-tested
12 KiB
Getting Started with TimeTracker
A complete guide to get you up and running with TimeTracker in minutes.
📋 Table of Contents
🚀 Installation
Option 1: Docker (Recommended)
The fastest way to get TimeTracker running:
# 1. Clone the repository
git clone https://github.com/drytrix/TimeTracker.git
cd TimeTracker
# 2. Set a strong SECRET_KEY (required for sessions & CSRF)
# Linux/macOS:
export SECRET_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")
# Windows PowerShell:
$env:SECRET_KEY = python -c "import secrets; print(secrets.token_hex(32))"
# 3. Start TimeTracker
docker-compose up -d
# 4. Access the application
# Open your browser to: https://localhost
# (Self‑signed certificate; your browser will show a warning the first time.)
# Prefer plain HTTP on port 8080 instead?
# Use the example compose that publishes the app directly:
# docker-compose -f docker-compose.example.yml up -d
# Then open: http://localhost:8080
That's it! TimeTracker is now running with PostgreSQL.
Important: The default
docker-compose.ymlexpectsSECRET_KEYto be set. You can also edit the file and replaceSECRET_KEY=your-secret-key-herewith a securely generated value. Never use weak or guessable keys.
Option 2: Quick Test (SQLite)
Want to try it without setting up a database?
# Start with SQLite (no database setup needed)
docker-compose -f docker-compose.local-test.yml up --build
# Access at: http://localhost:8080
Perfect for testing and development!
Option 3: Manual Installation
For advanced users who prefer manual setup:
# 1. Install dependencies
pip install -r requirements.txt
# 2. Configure environment
cp env.example .env
# Edit .env with your settings
# 3. Initialize database
python -c "from app import create_app; app = create_app(); app.app_context().push(); app.initialize_database()"
# 4. Run the application
python app.py
📖 See Requirements for detailed system requirements
🔑 First Login
-
Open TimeTracker in your browser:
http://localhost:8080 -
Enter a username (no password required for internal use)
- Example:
admin,john, or your name - This creates your account automatically
- Example:
-
First user becomes admin automatically
- Full access to all features
- Can manage users and settings
-
You're in! Welcome to your dashboard
Note
: TimeTracker uses username-only authentication for simplicity. It's designed for internal, trusted network use. For additional security, deploy behind a reverse proxy with authentication.
⚙️ Initial Setup
Step 1: Configure System Settings
-
Go to Admin → System Settings (gear icon in top right)
-
Set your company information:
- Company name
- Address for invoices
- Optional: Upload your logo
-
Configure regional settings:
- Timezone: Your local timezone (e.g.,
America/New_York) - Currency: Your preferred currency (e.g.,
USD,EUR,GBP)
- Timezone: Your local timezone (e.g.,
-
Adjust timer behavior:
- Idle Timeout: How long before auto-pause (default: 30 minutes)
- Single Active Timer: Allow only one running timer per user
- Time Rounding: Round to nearest minute/5 minutes/15 minutes
-
Set user management:
- Allow Self-Registration: Let users create their own accounts
- Admin Usernames: Comma-separated list of admin users
-
Click Save to apply settings
Step 2: Add Your First Client
-
Navigate to Clients → Create Client
-
Enter client information:
- Name: Client or company name (required)
- Contact Person: Primary contact
- Email: Client email address
- Phone: Contact number
- Address: Billing address
-
Set billing defaults:
- Default Hourly Rate: Your rate for this client (e.g.,
100.00) - This will auto-populate when creating projects
- Default Hourly Rate: Your rate for this client (e.g.,
-
Click Create to save the client
Step 3: Create Your First Project
-
Go to Projects → Create Project
-
Basic information:
- Name: Project name (required)
- Client: Select from dropdown (auto-filled with client info)
- Description: Brief project description
-
Billing information:
- Billable: Toggle on if you'll invoice this project
- Hourly Rate: Auto-filled from client (can override)
- Estimated Hours: Optional project estimate
-
Advanced settings (optional):
- Status: Active/Archived
- Start/End Dates: Project timeline
- Budget Alert Threshold: Get notified at X% budget used
-
Click Create to save the project
Step 4: Create Tasks (Optional)
Break your project into manageable tasks:
-
Go to Tasks → Create Task
-
Task details:
- Project: Select your project
- Name: Task name (e.g., "Design homepage")
- Description: What needs to be done
- Priority: Low/Medium/High/Urgent
-
Planning:
- Estimated Hours: Time estimate for this task
- Due Date: When it should be completed
- Assign To: Team member responsible
-
Click Create to save the task
🎯 Core Workflows
Workflow 1: Track Time with Timer
Quick time tracking for active work:
- On the Dashboard, find the timer section
- Select a project (and optionally a task)
- Click Start — the timer begins
- Work on your task — timer continues even if you close the browser
- Click Stop when finished — time entry is saved automatically
💡 Tip: The timer runs on the server, so it keeps going even if you:
- Close your browser
- Switch devices
- Lose internet connection temporarily
Workflow 2: Manual Time Entry
Add historical or bulk time entries:
-
Go to Timer → Log Time
-
Choose entry type:
- Single entry
- Bulk entry (multiple entries at once)
- Calendar view (visual entry)
-
Fill in details:
- Project: Required
- Task: Optional
- Start Time: When you started
- End Time: When you finished
- Notes: What you worked on
- Tags: Categorize your work (e.g.,
design,meeting,bugfix)
-
Click Save to record the entry
Workflow 3: Generate an Invoice
Turn tracked time into a professional invoice:
-
Go to Invoices → Create Invoice
-
Select project and fill in client details
- Client info auto-populated from project
-
Set invoice details:
- Issue Date: Today (default)
- Due Date: Payment deadline (e.g., 30 days)
- Tax Rate: Your tax rate (e.g.,
21.00for 21%)
-
Click "Generate from Time Entries":
- Select time entries to bill
- Choose grouping (by task or project)
- Preview the total
-
Review and customize:
- Edit descriptions
- Add manual line items
- Adjust quantities or rates
-
Save and send:
- Status: Draft → Sent → Paid
- Export as CSV
- (PDF export coming soon!)
Workflow 4: View Reports
Analyze your time and productivity:
-
Go to Reports
-
Choose report type:
- Project Report: Time breakdown by project
- User Report: Individual productivity
- Summary Report: Overall statistics
-
Set filters:
- Date Range: Today/This Week/This Month/Custom
- Project: Specific project or all
- User: Specific user or all
- Billable: Billable only/Non-billable only/Both
-
View insights:
- Total hours worked
- Billable vs non-billable
- Time distribution
- Estimated costs
-
Export data:
- Click Export CSV for spreadsheet analysis
- Choose delimiter (comma, semicolon, tab)
🎓 Next Steps
Learn Advanced Features
- Task Management — Master task boards and workflows
- Calendar View — Visual time entry and planning
- Command Palette — Keyboard shortcuts for power users
- Bulk Operations — Batch time entry creation
Customize Your Experience
- Upload your logo for branded invoices
- Configure notifications for task due dates
- Set up recurring time blocks for regular tasks
- Create saved filters for common report views
- Add custom tags for better categorization
Team Setup
If you're setting up for a team:
-
Add team members:
- Go to Admin → Users
- Users can self-register (if enabled) or admin can add them
- Assign roles (Admin/User)
-
Assign projects:
- Projects are visible to all users
- Use permissions to control access (coming soon)
-
Assign tasks:
- Create tasks and assign to team members
- Set priorities and due dates
- Track progress in task board
-
Review reports:
- See team productivity
- Identify bottlenecks
- Optimize resource allocation
Production Deployment
Ready to deploy for real use?
-
Use PostgreSQL instead of SQLite:
# Edit .env file DATABASE_URL=postgresql://user:pass@localhost:5432/timetracker -
Set a secure secret key:
# Generate a random key SECRET_KEY=$(python -c 'import secrets; print(secrets.token_hex(32))') -
Configure for production:
FLASK_ENV=production FLASK_DEBUG=false SESSION_COOKIE_SECURE=true REMEMBER_COOKIE_SECURE=true -
Set up backups:
- Configure automatic database backups
- Store backups off-site
- Test restore procedures
-
Optional: Add reverse proxy:
- Use Caddy or nginx for HTTPS
- Add authentication layer if needed
- Configure firewall rules
📖 See Docker Public Setup for production deployment
💡 Tips & Tricks
Keyboard Shortcuts
Press Ctrl+K (or Cmd+K on Mac) to open the command palette:
- Quickly start/stop timers
- Navigate to any page
- Search projects and tasks
- Log time entries
Mobile Access
TimeTracker is fully responsive:
- Access from any device
- Mobile-optimized interface
- Touch-friendly controls
- Works in any browser
Time Entry Best Practices
- Add descriptive notes — Future you will thank you
- Use consistent tags — Makes reporting easier
- Track regularly — Don't let entries pile up
- Review weekly — Catch missing time or errors
- Categorize accurately — Billable vs non-billable matters
Project Management Tips
- Set realistic estimates — Helps with planning
- Break into tasks — Makes tracking easier
- Use task priorities — Focus on what matters
- Review progress regularly — Stay on track
- Archive completed projects — Keep your list clean
❓ Common Questions
How do I reset my database?
# ⚠️ This deletes all data
docker-compose down -v
docker-compose up -d
How do I add more users?
- Enable self-registration in settings, or
- Users can just enter a username on first visit, or
- Admin can create users in Admin → Users
Can I export my data?
Yes! Multiple export options:
- CSV export from reports
- Database backup via scripts
- API access for custom integrations (coming soon)
How do I upgrade TimeTracker?
# Pull latest changes
git pull origin main
# Rebuild and restart
docker-compose up -d --build
# Migrations run automatically
Is there a mobile app?
TimeTracker is a web application that works great on mobile browsers. A Progressive Web App (PWA) version with offline support is planned.
🆘 Need Help?
- Documentation — Complete documentation index
- Troubleshooting — Fix common issues
- GitHub Issues — Report bugs or request features
- Contributing — Help improve TimeTracker
Ready to track your time like a pro? 🚀