Files
TimeTracker/docs/GETTING_STARTED.md
Dries Peeters 79e826ced2 feat(tasks,ui): enhance task management UI; update routes; add tests
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
2025-10-21 17:05:00 +02:00

12 KiB
Raw Blame History

Getting Started with TimeTracker

A complete guide to get you up and running with TimeTracker in minutes.


📋 Table of Contents

  1. Installation
  2. First Login
  3. Initial Setup
  4. Core Workflows
  5. Next Steps

🚀 Installation

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
# (Selfsigned 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.yml expects SECRET_KEY to be set. You can also edit the file and replace SECRET_KEY=your-secret-key-here with 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

  1. Open TimeTracker in your browser: http://localhost:8080

  2. Enter a username (no password required for internal use)

    • Example: admin, john, or your name
    • This creates your account automatically
  3. First user becomes admin automatically

    • Full access to all features
    • Can manage users and settings
  4. 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

  1. Go to Admin → System Settings (gear icon in top right)

  2. Set your company information:

    • Company name
    • Address for invoices
    • Optional: Upload your logo
  3. Configure regional settings:

    • Timezone: Your local timezone (e.g., America/New_York)
    • Currency: Your preferred currency (e.g., USD, EUR, GBP)
  4. 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
  5. Set user management:

    • Allow Self-Registration: Let users create their own accounts
    • Admin Usernames: Comma-separated list of admin users
  6. Click Save to apply settings

Step 2: Add Your First Client

  1. Navigate to Clients → Create Client

  2. Enter client information:

    • Name: Client or company name (required)
    • Contact Person: Primary contact
    • Email: Client email address
    • Phone: Contact number
    • Address: Billing address
  3. Set billing defaults:

    • Default Hourly Rate: Your rate for this client (e.g., 100.00)
    • This will auto-populate when creating projects
  4. Click Create to save the client

Step 3: Create Your First Project

  1. Go to Projects → Create Project

  2. Basic information:

    • Name: Project name (required)
    • Client: Select from dropdown (auto-filled with client info)
    • Description: Brief project description
  3. Billing information:

    • Billable: Toggle on if you'll invoice this project
    • Hourly Rate: Auto-filled from client (can override)
    • Estimated Hours: Optional project estimate
  4. Advanced settings (optional):

    • Status: Active/Archived
    • Start/End Dates: Project timeline
    • Budget Alert Threshold: Get notified at X% budget used
  5. Click Create to save the project

Step 4: Create Tasks (Optional)

Break your project into manageable tasks:

  1. Go to Tasks → Create Task

  2. Task details:

    • Project: Select your project
    • Name: Task name (e.g., "Design homepage")
    • Description: What needs to be done
    • Priority: Low/Medium/High/Urgent
  3. Planning:

    • Estimated Hours: Time estimate for this task
    • Due Date: When it should be completed
    • Assign To: Team member responsible
  4. Click Create to save the task


🎯 Core Workflows

Workflow 1: Track Time with Timer

Quick time tracking for active work:

  1. On the Dashboard, find the timer section
  2. Select a project (and optionally a task)
  3. Click Start — the timer begins
  4. Work on your task — timer continues even if you close the browser
  5. 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:

  1. Go to Timer → Log Time

  2. Choose entry type:

    • Single entry
    • Bulk entry (multiple entries at once)
    • Calendar view (visual entry)
  3. 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)
  4. Click Save to record the entry

Workflow 3: Generate an Invoice

Turn tracked time into a professional invoice:

  1. Go to Invoices → Create Invoice

  2. Select project and fill in client details

    • Client info auto-populated from project
  3. Set invoice details:

    • Issue Date: Today (default)
    • Due Date: Payment deadline (e.g., 30 days)
    • Tax Rate: Your tax rate (e.g., 21.00 for 21%)
  4. Click "Generate from Time Entries":

    • Select time entries to bill
    • Choose grouping (by task or project)
    • Preview the total
  5. Review and customize:

    • Edit descriptions
    • Add manual line items
    • Adjust quantities or rates
  6. Save and send:

    • Status: Draft → Sent → Paid
    • Export as CSV
    • (PDF export coming soon!)

Workflow 4: View Reports

Analyze your time and productivity:

  1. Go to Reports

  2. Choose report type:

    • Project Report: Time breakdown by project
    • User Report: Individual productivity
    • Summary Report: Overall statistics
  3. 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
  4. View insights:

    • Total hours worked
    • Billable vs non-billable
    • Time distribution
    • Estimated costs
  5. Export data:

    • Click Export CSV for spreadsheet analysis
    • Choose delimiter (comma, semicolon, tab)

🎓 Next Steps

Learn Advanced Features

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:

  1. Add team members:

    • Go to Admin → Users
    • Users can self-register (if enabled) or admin can add them
    • Assign roles (Admin/User)
  2. Assign projects:

    • Projects are visible to all users
    • Use permissions to control access (coming soon)
  3. Assign tasks:

    • Create tasks and assign to team members
    • Set priorities and due dates
    • Track progress in task board
  4. Review reports:

    • See team productivity
    • Identify bottlenecks
    • Optimize resource allocation

Production Deployment

Ready to deploy for real use?

  1. Use PostgreSQL instead of SQLite:

    # Edit .env file
    DATABASE_URL=postgresql://user:pass@localhost:5432/timetracker
    
  2. Set a secure secret key:

    # Generate a random key
    SECRET_KEY=$(python -c 'import secrets; print(secrets.token_hex(32))')
    
  3. Configure for production:

    FLASK_ENV=production
    FLASK_DEBUG=false
    SESSION_COOKIE_SECURE=true
    REMEMBER_COOKIE_SECURE=true
    
  4. Set up backups:

    • Configure automatic database backups
    • Store backups off-site
    • Test restore procedures
  5. 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

  1. Add descriptive notes — Future you will thank you
  2. Use consistent tags — Makes reporting easier
  3. Track regularly — Don't let entries pile up
  4. Review weekly — Catch missing time or errors
  5. Categorize accurately — Billable vs non-billable matters

Project Management Tips

  1. Set realistic estimates — Helps with planning
  2. Break into tasks — Makes tracking easier
  3. Use task priorities — Focus on what matters
  4. Review progress regularly — Stay on track
  5. 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?


Ready to track your time like a pro? 🚀

← Back to Main README | View All Documentation