TrackOwl is a time tracking and workforce monitoring platform built around three applications:
- An Electron desktop client for activity tracking
- A React admin portal for managing teams and projects
- An Express API backed by Supabase
The desktop application records work sessions, application usage, browser activity, screenshots, and productivity data. The admin portal provides project management, reporting, team administration, and time-off management tools.
.
├── admin-portal/ # React + Vite management dashboard
├── backend/ # Express API and business logic
└── desktop/ # Electron tracking client
The Electron client runs on employee devices and is responsible for:
- Session tracking
- Activity monitoring
- Screenshot capture
- Active application detection
- Browser URL tracking
- Syncing collected data to Supabase
The admin portal provides:
- Project management
- Team management
- Productivity reporting
- Budget tracking
- Time-off management
- Organization settings
The backend acts as a service layer between the frontend applications and Supabase.
Responsibilities include:
- Member invitations
- Permission handling
- Reporting aggregation
- Project management workflows
- Business rule enforcement
- React
- TypeScript
- Vite
- Tailwind CSS
- Electron
- Node.js
- Express
- Node.js
- Supabase
- PostgreSQL
- Supabase Auth
- Node.js 18+
- Supabase project
cd backend
npm install
cp .env.example .env
npm run devConfigure the required Supabase environment variables before starting the server.
cd admin-portal
npm install
npm run devRequired environment variables:
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
VITE_API_BASE_URL=npm install
npm run devConfigure Supabase credentials in the desktop client's environment file before running the application.
The project uses Supabase as its primary datastore.
Core tables include:
| Table | Purpose |
|---|---|
| projects | Project configuration and budgeting |
| members | Team members and profile data |
| sessions | Recorded work sessions |
| activity_samples | Productivity and activity metrics |
| project_members | Project access mapping |
| project_teams | Team assignments |
The complete schema can be found in:
backend/supabase_schema.sql
Authentication is handled through Supabase Auth and shared across the platform.
Access to projects, reports, and administrative functionality is controlled through role-based permissions stored in the database.
Each application can be developed independently:
# Backend
cd backend && npm run dev
# Admin Portal
cd admin-portal && npm run dev
# Desktop Client
npm run dev