Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Aking16/timify/llms.txt

Use this file to discover all available pages before exploring further.

Timify is a self-hosted, offline-first time tracking application inspired by Toggl. It is designed for individuals and teams who want full ownership of their data — no third-party cloud, no subscriptions, no telemetry. Every interaction is engineered to feel instant, with a target response time under 100 milliseconds, and the app remains fully usable even without an active network connection.

Key Capabilities

Projects

Organise work into colour-coded projects, each with an optional hourly rate for earnings tracking.

Time Entries

Log time manually or with a real-time running timer. Each entry supports a title, description, billable flag, and a per-entry hourly rate override.

Tags

Attach multiple colour-coded tags to any time entry for flexible cross-project categorisation.

Reports

Review tracked hours and earnings across projects and time ranges with built-in reporting powered by Recharts.

Design Goals

Timify is built around two non-negotiable principles:
  • Offline-first — the SQLite database lives on your own server (or laptop). There is no external API call needed for ordinary use; data is always local and immediately available.
  • Sub-100 ms responses — the combination of local SQLite, React 19’s compiler optimisations, and Next.js 16’s App Router caching keeps every interaction feeling synchronous.

Internationalisation & RTL Support

Timify ships with right-to-left layout support enabled by default. The authentication layer uses better-auth-localization with a default locale of fa-IR (Persian/Farsi), making it immediately usable for Persian-speaking users without any additional configuration.

Tech Stack

LayerTechnology
FrameworkNext.js 16.2.6 — App Router
UI libraryReact 19.2 with React Compiler enabled
StylingTailwind CSS v4 (@tailwindcss/postcss, no tailwind.config.ts)
Component systemshadcn/ui v4, radix-nova style, Hugeicons
Database ORMDrizzle ORM + @libsql/client (SQLite / libsql)
Authenticationbetter-auth v1.6 with email & password
Data-fetchingSWR v2
ChartsRecharts v3
AnimationMotion v12
Date handlingdate-fns v4 + date-fns-jalali (Jalali calendar support)
The React Compiler (reactCompiler: true in next.config.ts) automatically memoises components, eliminating the need for manual useMemo / useCallback calls. Next.js component caching (cacheComponents: true) further reduces re-render overhead at the framework level.

Database Schema at a Glance

The core data model consists of four application tables alongside the four better-auth system tables (user, session, account, verification):
TablePurpose
projectsNamed projects with colour, hourly rate, and active flag
time_entriesIndividual tracked intervals with start/end timestamps and duration
tagsUser-defined colour-coded labels
time_entry_tagsMany-to-many join between time entries and tags
All rows carry created_at / updated_at timestamps stored as Unix epoch integers via Drizzle’s { mode: "timestamp" } column option.

Explore the Docs

Quickstart

Clone the repo, set up your environment, and run Timify locally in under five minutes.

Self-Hosting

Build for production, persist your SQLite database, and configure auth for your domain.

Configuration

Environment variables, auth options, and database settings explained.

Reference

Schema tables, server actions, and Drizzle migration commands.

Build docs developers (and LLMs) love