solidtime is a modern, open-source time-tracking application designed for freelancers and agencies who need precise control over their billable hours, client projects, and invoicing. Built with Laravel (PHP) and Vue.js, it offers a fast, intuitive interface with full self-hosting capabilities and seamless data migration from Toggl and Clockify. It solves the problem of fragmented time-tracking tools by unifying time logging, project management, and invoicing in one platform.
The app is deployed via Docker or traditional server setups, supports multiple organizations and roles, and is built as a Progressive Web App (PWA) for native-like mobile experiences. It integrates with existing workflows through CSV and API imports, and offers both cloud-hosted and on-premise licensing options with enterprise support.
What You Get
- Time Tracking Interface - A modern, snappy PWA with global command menu for instant access to all time-tracking actions, optimized for speed and low-latency input.
- Project & Task Management - Create and assign tasks to projects, link them to clients, and track time spent per task with customizable billable rates.
- Client & Organization Management - Manage multiple clients and organizations under one account, with role-based permissions for team members.
- Billable Rate System - Set hourly rates at the organization, user, project, or task level, with automatic calculation of invoice totals based on assigned rates.
- Toggl & Clockify Import - One-click import of time entries, tags, clients, and projects from Toggl and Clockify to migrate existing data without manual re-entry.
- PDF Invoicing & Reporting - Generate professional, customizable PDF invoices with detailed hourly reports, client details, and project summaries directly from tracked time.
Common Use Cases
- Freelancer managing multiple clients - A freelance designer uses solidtime to log hours across 10+ clients, assign billable rates per project, and auto-generate invoices with detailed reports for each client.
- Agency onboarding new team members - A small design agency uses solidtime’s multi-organization support to onboard freelancers, assign project access, and track billable hours without exposing client data across teams.
- Migrating from Toggl to a self-hosted solution - A consultant exports 2 years of Toggl data into solidtime to gain full control over their data and start using built-in invoicing without losing historical records.
- Remote team tracking billable hours - A remote development team uses solidtime’s role permissions and project access controls to ensure accurate time logging for client billing and internal reporting.
Under The Hood
Architecture
- Laravel-based architecture with clear separation of concerns between HTTP controllers, API resources, and service layers, leveraging dependency injection and contracts to decouple components
- Resource-oriented API design using Laravel’s Resource classes with enum-based formatting for consistent, structured JSON responses
- Middleware stack enforces HTTP concerns like JSON response forcing and organization access control through reusable aliases
- Domain-driven patterns implemented via actionable classes and custom validation rules, isolating business logic from HTTP concerns
Tech Stack
- Laravel 12 with Jetstream, Octane, and Filament forming a cohesive backend ecosystem with built-in admin UI and API infrastructure
- PostgreSQL 15 enhanced with specialized extensions and schema migrations for robust data modeling
- Modern frontend stack with Vue 3, TypeScript, Inertia.js, Pinia, and Vue Query enabling type-safe, reactive single-page applications
- Docker Compose with Traefik and Sail providing containerized, production-ready development and deployment workflows
- Playwright for end-to-end testing and OpenAPI-Zod-Client for automatic TypeScript API client generation
Code Quality
- Extensive test coverage across unit, feature, and end-to-end layers with clear behavioral naming and separation of concerns
- Robust error handling through custom exception hierarchies ensuring consistent, structured API responses
- Strong type safety enforced via strict typing, PHPDoc, and custom validation rules, minimizing runtime failures
- Consistent naming conventions and directory structures aligned with Laravel best practices, enhancing readability and maintainability
- Automated validation and permission checks integrated across forms, APIs, and admin interfaces for uniform policy enforcement
What Makes It Unique
- Seamless integration of OpenAPI 3.1 with TypeScript client generation, eliminating manual API contract maintenance
- Unified admin UI and API layer via Filament and Laravel Resources, reducing duplication and accelerating feature development
- End-to-end type safety from database to frontend via TypeScript, OpenAPI-Zod-Client, and strict PHP typing
- Containerized development environment with Traefik and Sail that mirrors production orchestration without complexity