← All templates

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

Open in Molecule

What is inside

  • auth
  • objectives
  • key-results
  • check-ins
  • progress-tracking
  • subscriptions

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

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing