Skip to content

Deploying Tracks

Introduction

Tracks is a web-based application designed to help you implement David Allen’s Getting Things Done (GTD) methodology. Built with Ruby on Rails, Tracks provides a clean, focused interface for managing your tasks, projects, and contexts, helping you stay organized and productive.

Unlike complex project management tools, Tracks embraces the GTD philosophy of simplicity and actionable next steps. It focuses on capturing tasks quickly, organizing them into meaningful contexts and projects, and providing clear views of what you need to do next.

Key highlights of Tracks:

  • GTD-Focused Design: Built specifically around GTD principles with support for contexts, projects, and next actions
  • Multi-User Support: Host for yourself or your entire team with individual accounts and preferences
  • Flexible Contexts: Define contexts like @home, @work, @errands to organize tasks by where or how they can be done
  • Project Organization: Group related tasks into projects with automatic tracking of next actions
  • Deferred Actions: Schedule tasks for future dates to keep your current lists focused
  • Recurring Tasks: Set up repeating tasks for regular activities
  • Notes and Dependencies: Add detailed notes and create task dependencies
  • Mobile-Friendly: Responsive design works on phones and tablets
  • XML/REST API: Integrate with other tools and scripts
  • Open Source: Licensed under GPL, fully customizable and community-driven

This guide walks through deploying Tracks on Klutch.sh using Docker, configuring persistent storage for your task database, and setting up the application for daily productivity use.

Why Deploy Tracks on Klutch.sh

Deploying Tracks on Klutch.sh provides several advantages for personal and team productivity:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Tracks without complex server configuration. Push to GitHub, and your productivity system deploys automatically.

Persistent Storage: Attach persistent volumes for your SQLite database and configuration. Your tasks and projects survive container restarts and redeployments without data loss.

HTTPS by Default: Klutch.sh provides automatic SSL certificates, ensuring secure access to your task management from anywhere.

GitHub Integration: Connect your configuration repository directly from GitHub. Updates to your Dockerfile trigger automatic redeployments.

Environment Variable Management: Securely store sensitive configuration like database credentials and secret keys through Klutch.sh’s environment variable system.

Always-On Availability: Your productivity system remains accessible 24/7 from any device without managing your own hardware.

Prerequisites

Before deploying Tracks on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your Tracks configuration
  • Basic familiarity with Docker and containerization concepts
  • (Optional) A custom domain for your Tracks instance

Understanding Tracks Architecture

Tracks is built on a traditional Ruby on Rails stack:

Ruby on Rails Backend: The core application runs on Rails, providing the MVC framework for task management logic and API endpoints.

SQLite or MySQL Database: Tracks supports both SQLite for simple deployments and MySQL for larger installations. SQLite is recommended for personal use.

Action Cable: Real-time updates for collaborative features using WebSocket connections.

Asset Pipeline: Compiled CSS and JavaScript assets for the responsive web interface.

Preparing Your Repository

To deploy Tracks on Klutch.sh, create a GitHub repository containing your Dockerfile and configuration.

Repository Structure

tracks-deploy/
├── Dockerfile
├── config/
│ └── site.yml
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM staannern/tracks:latest
# Set environment variables
ENV RAILS_ENV=production
ENV SECRET_KEY_BASE=${SECRET_KEY_BASE}
ENV TRACKS_HOST=${TRACKS_HOST}
# Create necessary directories
RUN mkdir -p /app/db /app/log
# Expose the web interface port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:3000/ || exit 1

Environment Variables Reference

VariableRequiredDefaultDescription
SECRET_KEY_BASEYes-Rails secret key for session encryption. Generate with openssl rand -hex 64
TRACKS_HOSTNolocalhostThe hostname where Tracks is accessible
RAILS_ENVNoproductionRails environment (production recommended)
DATABASE_URLNoSQLiteDatabase connection string for MySQL if used

Deploying Tracks on Klutch.sh

Once your repository is prepared, follow these steps to deploy Tracks:

    Generate Your SECRET_KEY_BASE

    Before deployment, generate a secure secret key for Rails:

    Terminal window
    openssl rand -hex 64

    Save this key securely for the environment variables configuration.

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub:

    Terminal window
    git init
    git add Dockerfile .dockerignore
    git commit -m "Initial Tracks deployment configuration"
    git remote add origin https://github.com/yourusername/tracks-deploy.git
    git push -u origin main

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “tracks” or “gtd-tasks”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Tracks Dockerfile.

    Configure HTTP Traffic

    In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 3000 (Rails default port)

    Set Environment Variables

    In the environment variables section, add the following:

    VariableValue
    SECRET_KEY_BASEYour generated hex key from step 1
    TRACKS_HOSTyour-app-name.klutch.sh
    RAILS_ENVproduction

    Attach Persistent Volumes

    Persistent storage is essential for Tracks. Add the following volumes:

    Mount PathRecommended SizePurpose
    /app/db1 GBSQLite database with all your tasks and projects
    /app/log500 MBApplication logs

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Attach the persistent volumes
    • Start the Tracks container
    • Provision an HTTPS certificate

    Access Tracks

    Once deployment completes, access your Tracks instance at https://your-app-name.klutch.sh. Create your admin account on first access.

Initial Setup and Configuration

First-Time Setup

When you first access your Tracks instance:

  1. Click “Sign up” to create your first user account
  2. The first user automatically becomes an administrator
  3. Configure your timezone and preferences in Settings

Creating Contexts

Contexts are the heart of GTD. Create contexts for where or how you can complete tasks:

  1. Navigate to Contexts in the menu
  2. Click Add a new context
  3. Enter meaningful context names like:
    • @computer
    • @phone
    • @home
    • @work
    • @errands
    • @waiting

Setting Up Projects

Organize related tasks into projects:

  1. Go to Projects in the menu
  2. Click Add a new project
  3. Enter project names representing outcomes you want to achieve
  4. Set project status (active, hidden, or completed)

Adding Tasks

Capture tasks quickly using the quick-add feature:

  1. Use the input box at the top of any context view
  2. Enter your task description
  3. Assign a context, project, and optional due date
  4. Tasks appear in their respective context lists

User Management

Creating Additional Users

Share your Tracks instance with family or team members:

  1. Go to Admin in the navigation menu
  2. Click Users
  3. Create new user accounts with appropriate permissions

User Preferences

Each user can customize their experience:

  • Timezone: Set your local timezone for accurate due dates
  • Date Format: Choose your preferred date display format
  • Per-page Counts: Adjust how many items display per page
  • Keyboard Shortcuts: Enable keyboard navigation

Advanced Features

Recurring Tasks

Set up repeating tasks for regular activities:

  1. Create or edit a task
  2. Enable recurring option
  3. Set frequency (daily, weekly, monthly)
  4. Choose how recurrence is calculated (from completion or original date)

Deferred Actions

Keep future tasks out of your current view:

  1. Edit a task
  2. Set a “Show from” date
  3. The task won’t appear in active lists until that date

Task Dependencies

Create relationships between tasks:

  1. Edit a task
  2. Add predecessor tasks
  3. The task shows as waiting until predecessors complete

Production Best Practices

Security Recommendations

  • Strong Secret Key: Use a properly generated SECRET_KEY_BASE
  • HTTPS Only: Klutch.sh provides this automatically
  • Regular Backups: Back up your SQLite database regularly
  • Strong Passwords: Enforce strong passwords for all users

Backup Strategy

Protect your task data:

  1. Database Backups: Regularly copy the SQLite database from /app/db
  2. Configuration Export: Document your context and project structures
  3. Automated Backups: Set up scheduled backups of persistent volumes

Troubleshooting Common Issues

Application Won’t Start

Symptoms: Container exits or fails health checks.

Solutions:

  • Verify SECRET_KEY_BASE is set correctly
  • Check that all volumes are mounted with proper permissions
  • Review startup logs for specific errors

Database Errors

Symptoms: Tasks not saving or loading.

Solutions:

  • Verify the /app/db volume is properly mounted
  • Check file permissions on the database directory
  • Review Rails logs for database connection issues

Performance Issues

Symptoms: Slow page loads or timeouts.

Solutions:

  • Clear old completed tasks periodically
  • Consider switching to MySQL for larger installations
  • Allocate additional resources if needed

Additional Resources

Conclusion

Deploying Tracks on Klutch.sh gives you a focused, reliable GTD productivity system accessible from anywhere. The combination of Tracks’ purpose-built GTD interface and Klutch.sh’s deployment simplicity means you can focus on getting things done rather than managing infrastructure.

With support for multiple users, recurring tasks, and flexible context organization, Tracks adapts to your personal workflow while staying true to GTD principles. Your tasks remain secure, backed up, and available whenever you need to capture an idea or check your next actions.