OKR / Goal Tracking
Business & SaaS · React + Node (Express) · 14 @molecule/* packages
Lattice-like OKR tracking with objectives, key results, and check-ins — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (18)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Objectives
/objectives(signed in) - ObjectiveDetail
/objectives/:id(signed in) - CheckIn
/check-in(signed in) - Team
/team(signed in) - Reviews
/reviews(signed in) - Settings
/settings(signed in) - NewObjective
/objectives/new(signed in) - EditObjective
/objectives/:id/edit(signed in) - ReviewDetail
/reviews/:id(signed in) - Notifications
/notifications(signed in) - Profile
/profile(signed in) - Billing
/settings/billing(signed in)
Data model (14 tables)
- activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
- activity_seen_status — userId, lastSeenActivityId, updatedAt
- audit_events — id, owner_id, actor_user_id, table_name, record_id, action, before, after, …
- check_ins — id, owner_id, objective_id, key_result_id, value, confidence, status, note, …
- comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- key_results — id, owner_id, objective_id, title, metric_type, start_value, target_value, current_value, …
- notifications — id, user_id, type, title, body, data, read_at, created_at
- objectives — id, owner_id, team_id, period_id, parent_id, scope, title, description, …
- periods — id, owner_id, name, start_date, end_date, is_active, created_at, updated_at
- reviews — id, owner_id, period_id, employee_user_id, reviewer_user_id, summary, rating, status, …
- teams — id, owner_id, name, parent_id, lead_user_id, created_at, updated_at
- user_settings — user_id, cadence, preferences, updated_at
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (10 handlers)
- \_progress
api/src/handlers/_progress.ts - audit-events
api/src/handlers/audit-events.ts - check-ins
api/src/handlers/check-ins.ts - key-results
api/src/handlers/key-results.ts - notifications
api/src/handlers/notifications.ts - objectives
api/src/handlers/objectives.ts - periods
api/src/handlers/periods.ts - reviews
api/src/handlers/reviews.ts - settings
api/src/handlers/settings.ts - teams
api/src/handlers/teams.ts
Subscription tiers
free / pro / team — gated by: maxCheckIns, maxKeyResults, maxObjectives, advancedFeatures, canExport, retentionDays
Built from 14 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-resource-activity-feed@molecule/api-resource-comment@molecule/api-resource-payment@molecule/api-resource-user@molecule/app-billing-react@molecule/app-command-palette@molecule/app-data-table@molecule/app-tree-view
Required secrets
DATABASE_URLPostgreSQL connection string
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing