Skip to main content

On This Page

Presto: An Open-Source Self-Hosted CRA Generator for Freelancers

2 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

Pourquoi j’ai arrêté de payer pour un SaaS de time-tracking et j’ai créé Presto

Walid Karray developed Presto, an open-source alternative to bloated SaaS time-tracking tools designed for large teams. The system enables freelancers to generate professional activity reports and track occupation rates using a streamlined Docker-based deployment.

Why This Matters

Many time-tracking tools prioritize enterprise features like seat-based pricing and complex Gantt charts, which often introduce unnecessary overhead for independent contractors. Presto addresses the technical reality that freelancers primarily need clean monthly activity reports (CRA) and automated currency conversion, offering a self-hosted solution that eliminates recurring SaaS costs and data dependency.

Key Insights

  • Presto uses the Bun runtime and React 19 to provide a high-performance, single-container deployment for activity tracking.
  • The system supports automated holiday exclusion for multiple countries including France, Germany, and Luxembourg via a visual calendar interface.
  • Multi-currency management is handled through real-time exchange rate conversions into a single reference currency for financial reporting.
  • Server-side PDF generation is powered by @react-pdf/renderer, supporting five languages: French, English, German, Spanish, and Portuguese.
  • Security and access control are managed via environment variables, allowing for a zero-authentication single-user mode or restricted registration.

Working Examples

Standard Docker Compose configuration for deploying Presto with a PostgreSQL database.

services:
  presto:
    image: axforge/presto:latest
    ports:
      - "8080:8080"
    environment:
      DATABASE_URL: postgresql://presto:secret@db:5432/presto
      JWT_SECRET: votre-cle-secrete-min-32-caracteres
    depends_on:
      - db
  db:
    image: postgres:17-alpine
    environment:
      POSTGRES_USER: presto
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: presto
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Environment variables to disable authentication for single-user mode or to lock down registration after account creation.

environment:
  AUTH_DISABLED: "true"
  REGISTRATION_ENABLED: "false"

Practical Applications

  • Freelance consultants can automate monthly billing by using the one-click Auto-fill feature to populate all working days while excluding weekends and public holidays.
  • Pitfall: Relying on manual spreadsheet templates for multi-currency clients often leads to calculation errors; Presto mitigates this by converting all ISO 4217 currencies automatically.
  • Independent developers can self-host Presto on a private server to maintain full data ownership and avoid monthly subscription fees associated with enterprise-grade tracking software.
  • Pitfall: Leaving public registration enabled on self-hosted instances can expose the system to unauthorized users; administrators should set REGISTRATION_ENABLED to false after setup.

References:

Continue reading

Next article

Advanced Python Web Scraping: A Production-Grade Engineering Guide

Related Content