How shreenathmehta32/focusorm works
FocusORM is a local-first productivity tracker: it observes desktop and browser activity, groups it into sessions, classifies sessions, stores metrics locally, and presents analytics and privacy controls. The README documents additional analytics capabilities whose implementations were not sampled; these are represented at their documented module paths, with uncertain internal wiring omitted.
Main entry points: main.py Tracking agent · client.js API client · routes Product API routes · local_classifier.py Local classifier
Components 22
Activity capture
- Desktop tracker
agent/tracker.py - Interaction metrics
agent/interaction_tracker.py - Coding metrics
agent/coding_tracker.py - Idle detection
agent/idle_detector.py - Browser extension
browser_extension/background.js - Tracking agent
agent/main.py
Session intelligence
- Session lifecycle
agent/session_manager.py - Local classifier
classifier/local_classifier.py - Classification rules
classifier/rules.py - Privacy sanitizer
classifier/sanitizer.py
Local analytics
- Local SQLite
backend/database.py - Productivity analytics
backend/services/analytics_service.py - Focus analysis
backend/services/focus_service.py - Inactivity analysis
backend/services/inactivity_service.py
Local service
- FastAPI backend
backend/main.py - Product API routes
backend/routes - Privacy controls
backend/routes/privacy.py - Settings controls
backend/routes/settings.py
Dashboard experience
- Dashboard pages
frontend/src/pages - API client
frontend/src/api/client.js
Other components
- Student
- Groq AI
Connections 27
- Student → Desktop tracker: uses
- Student → Browser extension: uses
- Desktop tracker → Tracking agent: window state
- Interaction metrics → Tracking agent: metrics
- Coding metrics → Tracking agent: file metrics
- Idle detection → Tracking agent: idle state
- Browser extension → Tracking agent: tab context
- FastAPI backend → Tracking agent: starts and stops
- Tracking agent → Session lifecycle: manages sessions
- Tracking agent → Local classifier: classifies sessions
- Local classifier → Classification rules: checks rules
- Local classifier → Privacy sanitizer: sanitizes unknowns
- Local classifier → Groq AI: classifies unknowns
- Session lifecycle → Local SQLite: writes sessions
- Productivity analytics → Local SQLite: reads sessions
- Focus analysis → Local SQLite: reads sessions
- Inactivity analysis → Local SQLite: reads sessions
- FastAPI backend → Product API routes: registers routes
- Product API routes → Productivity analytics: requests stats
- Product API routes → Focus analysis: requests focus
- Product API routes → Inactivity analysis: requests analysis
- Dashboard pages → API client: requests data
- API client → FastAPI backend: HTTP requests
- API client → Product API routes: calls endpoints
- API client → Privacy controls: privacy actions
- API client → Settings controls: settings actions
- Privacy sanitizer → Groq AI: minimal payload