Kanban boards, live time tracking, invoicing, calendar, media library, and an AI assistant — in one app you actually own.
Star this repo · Quick Start · Screenshots · Features
WorkHub is an all-in-one, self-hosted workspace for freelancers and small teams. Instead of stitching together a time tracker, an invoicing app, a docs tool, and a Kanban board — each with its own login, subscription, and copy-paste tax — WorkHub puts projects, tasks, time, finances, calendar, files, and an AI assistant behind a single login on your own Firebase project. No per-seat pricing, no feature-gating, no vendor lock-in. Your data stays yours.
| WorkHub | Toggl | Harvest | Notion | Trello | |
|---|---|---|---|---|---|
| Time tracking & live timers | ✅ | ✅ | ✅ | ❌ | ❌ |
| Kanban / tasks | ✅ | ❌ | ❌ | ✅ | ✅ |
| Invoicing & payments | ✅ | ❌ | ✅ | ❌ | ❌ |
| Calendar | ✅ | ❌ | ❌ | ✅ | 🔌 Add-on |
| Media library | ✅ | ❌ | ❌ | ✅ | ❌ |
| AI assistant | ✅ | ❌ | ❌ | 💲 Paid | ❌ |
| Self-hosted (your data) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Free & source-available | ✅¹ | ❌ | ❌ | ❌ | ❌ |
| All-in-one (no tool juggling) | ✅ | ❌ | ❌ | ❌ | ❌ |
✅ = built-in · 💲 = paid tier or add-on · 🔌 = via third-party integration or power-up · ❌ = not available. ¹ WorkHub is source-available and free for personal use; commercial use requires a license — see License.
** Projects & Tasks**
- Multi-tier hierarchy: Systems → Projects → Features → Tasks → Subtasks
- Kanban board with drag-and-drop reordering across To Do / In Progress / Review / Done
- Color-coded task types (Task, Bug, Feature, Improvement, Docs, Research) and priorities (Low → Critical)
- Threaded comments on tasks and subtasks
- Sub-projects with shared or independent finances
- Archive clutter or flag blocked tasks as "Waiting" — orthogonal to status
⏱ Time Tracking
- ▶ Live timer widget — start, pause, resume, stop from anywhere in the app
- Persistent timer that survives page navigation (Zustand + localStorage)
- Manual entry for retroactive logging, down to the subtask
- Daily and weekly summaries on the dashboard
** Finance & Invoicing**
- Payment models: milestone-based, monthly, fixed-price, and internal
- Milestone tracking with pending / completed / paid statuses
- Monthly payment management with full payment history
- Know exactly what each client owes you — total owed, total received, next deadline
- Earnings visualized with interactive charts and per-project breakdowns
** Calendar & Scheduling**
- Month, week, day, and list views (FullCalendar)
- Drag-and-drop and resizable events
- Category color-coding (Work, Meeting, Deadline, Personal, Reminder) and status tracking
** Media Library**
- Folder hierarchy with breadcrumb navigation
- Drag-and-drop upload with progress tracking
- Automatic client-side image compression (configurable quality/dimensions)
- Link files to projects and tasks; grid/list views and filters
** AI Assistant** (optional — needs a Gemini key)
- Task breakdown — generate subtask suggestions from a feature description
- ⏳ AI-powered time/effort estimates
- Productivity insights on project health and work patterns
- Built-in web search (DuckDuckGo) and URL content fetching
- Gracefully disabled when no API key is set — everything else works without it
** Extras**
- Per-project Vault for sensitive notes, passwords, and files (passkey-protected)
- Full dark mode, responsive layout, and deep-linkable tab navigation
- Optimistic UI on every operation — instant feedback, automatic rollback on error
- Optional MCP server so AI agents (Claude and others) can drive your time tracking
Shown in dark mode. Light mode is fully supported.
| Dashboard | Kanban board |
|---|---|
![]() |
![]() |
| Active projects, pending tasks, time tracked, and finances at a glance. | Drag-and-drop tasks with color-coded priorities, types, and time estimates. |
| Projects | Finances |
|---|---|
![]() |
![]() |
| Rich project cards with progress, payment models, deadlines, and client info. | Track payments, milestones, and monthly earnings with per-project breakdowns. |
| Time tracking | Media library |
|---|---|
![]() |
|
| Daily breakdowns, project distribution, and detailed time-entry logs. | Upload, organize, and link files to projects with automatic optimization. |
AI Assistant — task breakdowns, time estimates, and productivity insights powered by Google Gemini.
Prerequisites
- Node.js 22+ (see
.nvmrc) and npm - A Firebase project with Firestore, Authentication, and Storage enabled
- (Optional) a Google AI Studio API key for the AI features
1. Clone & install
git clone https://github.com/AhmedSayedSk/workhub.git
cd workhub
npm install2. Configure environment
cp .env.local.example .env.local# Firebase (from Firebase Console → Project Settings → Your Apps)
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
# Gemini AI (optional — powers the AI assistant)
GEMINI_API_KEY=your_gemini_api_keyEmail notifications, Content Studio, and server monitoring have their own optional keys — see the comments in
.env.local.example.
3. Set up Firebase
- Create a project at console.firebase.google.com
- Enable Firestore (production mode), Authentication (Email/Password), and Storage
- Copy
.firebaserc.example→.firebasercand set your project ID - Deploy the security rules and indexes:
npm run firebase:deploy:rules
npm run firebase:deploy:indexes4. Run it
npm run dev # dev server → http://localhost:3090
npm run build # production build
npm start # production serverPrefer containers? A dev docker-compose.yml (and Dockerfile / Dockerfile.dev) ship in the repo:
docker compose up| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5.7 |
| UI | React 19 + Radix UI (shadcn/ui pattern) |
| Styling | Tailwind CSS 3.4 + tailwindcss-animate |
| Icons | Lucide React + Bootstrap Icons |
| Charts | Recharts |
| Calendar | FullCalendar 6 |
| Rich text | TipTap 3 |
| Diagrams | @xyflow/react + dagre |
| Database / Auth / Storage | Firebase 11 (Firestore, Auth, Storage) + firebase-admin |
| State | Zustand 5 |
| AI | Google Generative AI (Gemini) |
| Dates | date-fns 4 |
| Nodemailer | |
| Automation | Model Context Protocol server (AI-agent time tracking) |
PRs are welcome — whether it's a bug fix, a new feature, docs, or accessibility work. Start with the Contributing Guide for local setup (Firebase included), code style, and the PR process. By participating you agree to the Code of Conduct.
Good places to jump in:
- Testing — unit and integration coverage
- Accessibility — keyboard nav, ARIA, screen-reader support
- Internationalization — multi-language support
- Mobile — responsive polish for phones
- Performance — Firestore query and bundle-size wins
New here? Filter issues by good first issue to find a gentle starting point, or open an issue with your question — we're happy to help. Found a security issue? See the Security Policy for responsible disclosure.
A star costs nothing, helps other freelancers and small teams discover the project, and genuinely motivates continued development. Star WorkHub on GitHub
Licensed under the Sikasio Source Available License.
Free for personal use. Commercial use requires a license from Sikasio. See LICENSE for full terms.



