Skip to content

Objectuve (Enkidu)

Objectuve (internal codename: Enkidu) is a cross-platform goal-tracking and social accountability platform that transforms productivity into a rewarding, game-like experience. It is available on iOS, Android, and web via a single shared codebase.

The philosophy: make goal-setting feel as satisfying as leveling up in a video game — breaking big ambitions into manageable pieces, rewarding consistent progress, and fostering accountability through community.

Tech Stack

LayerTechnology
BackendRuby on Rails 8.1.3.1 (API-only), GraphQL via graphql-ruby, PostgreSQL, Sidekiq background jobs, ActionCable WebSocket subscriptions
FrontendIonic 8 + Vue 3 (Vite), Apollo Client (GraphQL + subscriptions), Pinia stores, Capacitor for native iOS/Android, Tailwind CSS 3.4
InfrastructureGoogle Cloud Platform — Cloud Run (API), Firebase Hosting (frontend), Cloud SQL (PostgreSQL), Artifact Registry, Secret Manager
CI/CDGitHub Actions — automated testing, preview deployments per PR, staging and production pipelines, smoke tests
MarketingStatic HTML/CSS/JS landing site (marketing_landing/)

Repository Structure

enkidu/
├── rails_api/          — Rails backend (models, GraphQL, interactions, jobs, specs)
├── ionic_frontend/     — Ionic/Vue 3 mobile + web app
├── admin_dashboard/    — Vue 3 / Tailwind CSS standalone admin portal
├── agent_runner/       — TypeScript AI Workforce agent runner (Claude Agent SDK)
├── marketing_landing/  — Public marketing website
├── design_system/      — Canonical token publisher (Tailwind theme + CSS custom properties)
├── infra/              — GCP infrastructure config (Terraform, monitoring)
├── docs/               — Architecture, data models, testing, deployment, user guide
├── .github/workflows/  — CI/CD pipelines (test, lint, deploy, smoke tests)
├── gcp_setup/          — GCP infrastructure provisioning scripts
└── docker-compose.yml  — Local development orchestration (db, api, frontend)

Environments

EnvironmentFrontendAPI
Productionhttps://app.objectuve.comhttps://api.objectuve.com
Staginghttps://staging.app.objectuve.comhttps://staging.api.objectuve.com
Admin Dashboardhttps://admin.objectuve.comhttps://api.objectuve.com
Marketinghttps://www.objectuve.com
PR PreviewFirebase preview channel per PRCloud Run ephemeral service per PR

Core Features

1. Onboarding Wizard

A multi-step "Getting Started" wizard guides every new user through:

  • Profile setup (first name, last name, unique username)
  • Terms-of-service acceptance
  • Feature walkthrough (streaks, badges, community)
  • First goal creation with name and timeframe

This zero-friction flow ensures every user lands on the Dashboard with an active goal.

2. Goal Management

  • Creation: Goals have a Category (Health, Career, Finance, Fitness, Creativity, etc.), a Type (Habit, Project, Quantity, Milestone), and an optional target date.
  • Milestones: Goals can be broken into sub-tasks with individual completion tracking.
  • Goal Events: An immutable timeline of every update — text, image/media attachments, mood tags, and system-generated entries (goal created, goal completed).
  • Hierarchy: Parent/child goal relationships for nesting big ambitions.
  • Privacy: Toggle goals public (shareable, community-visible) or private.
  • Enhance Banner: Goals created in quick mode (without category, date, or milestones) show a prompt to fill in missing details and unlock richer AI insights.

3. Streaks & Consistency

  • Daily streak tracking rewards unbroken chains of check-ins.
  • Visual streak counters displayed on the Dashboard and goal cards.
  • Streak-based achievements (e.g., "7-Day Streak" badge).

4. Gamification & Achievements

  • XP system with leveling and rank progression (Open Road through Horizon), surfaced on the user's rank card.
  • Badge collection with four rarity tiers: Common, Rare, Epic, Legendary.
  • Achievement Hall page with filters by category, rarity, and unlock status.
  • The UserAction enum tracks 50 distinct user-action milestones (covering first-goal, completion, social, configure-coach, onboarding wizard, accountability partner, and more), a subset of which power the 21-badge catalog in the badge-award pipeline.
  • Showcase feature lets users pin up to 3 badges to their profile.
  • UserAction model tracks every significant behavior to power the badge-award pipeline.
  • Badge stats show what percentage of all users have unlocked each badge.

5. Mood Tracking

  • Daily Mood Check-In modal lets users log emotional state with six options: Amazing, Happy, Calm, Meh, Tired, Low.
  • Optionally link a check-in to a specific active goal.
  • Optional free-text note (up to 300 characters) for journaling context.
  • Logs stored in the MoodLog model and surfaced alongside goal progress data.

6. Social Connectivity (Communities)

  • Communities: Interest-based groups (e.g., "Marathon Runners", "Indie Hackers") with cover images, descriptions, and guidelines.
  • Community Feed: Live activity stream of shared goal events with reactions and threaded comments.
  • Goal Sharing: Users can post public goals directly to one or more communities.
  • Encouragement: Like / encourage other users' goal events.
  • Follow: Follow public goals to stay updated on a specific user's progress.
  • Discovery: Trending communities, recommended communities based on user's active goals, and community insights.
  • Community Suggestions: Users can suggest new communities for creation.

7. Goal Coach & Insights

  • Insight Cards appear on every major page (Dashboard, Goals, Achievements, Communities) with four insight types:
    • Tip — general advice ("Check in 3x a week to double your success rate")
    • Action — targeted prompt ("You haven't updated 'Learn Guitar' in 5 days")
    • Insight — analytical observation ("3 of your 5 goals share the same category")
    • Celebration — recognition ("You're 85% done — almost there!")
  • Context-aware generation uses streak, goal progress, days since last check-in, badge count, and more.
  • 15-minute module-level caching; dismissals persist for 24 hours via localStorage.
  • Goal Coach modal on the Goal Detail page: milestone suggestions, strategies, and personalized advice for a specific goal.
  • Coach-powered milestone generation when creating goals.

8. Dashboard

  • Quick Stats: XP earned, current streak, goals completed.
  • Active Goals grid with progress visualization and quick actions.
  • Mood prompt for daily check-in (opens MoodCheckIn modal from goal cards).
  • Onboarding card shown to new users.
  • Insight Card with personalized tip or action prompt.
  • Ally activity feed showing progress from connected users.

9. Admin Panel

The Standalone Admin Dashboard (admin.objectuve.com) is decoupled from the main Ionic application for heightened security. It provides:

  • Global user searching directly over PostgreSQL TRGM indexing.
  • Secure RBAC permission overrides via interactive slide-overs.
  • Chronological global audit view tracking all administrative transactions natively.
  • Platform growth charts, moderation queues, and aggregated insights.

10. Design & UX

  • Dark / light theme toggle with smooth CSS transitions, persisted to localStorage.
  • Mobile-first layout with an animated Bottom Tab Bar (Home, Goals, Badges, Community, Settings; Admin shown conditionally).
  • Animated pill indicator tracks the active tab.
  • Sidebar replaces the tab bar on desktop (>768px).
  • Glassmorphism-inspired card aesthetics with a premium, polished feel.
  • Marketing landing page with hero section, features grid, testimonials, and CTA.
  • Design system gallery and Storybook with hundreds of component stories for development and documentation.

11. Authentication & Security

  • Clerk-based authentication — all sign-up, sign-in, and OAuth flows are handled by Clerk. No internal password hashing or JWT generation.
  • Google and Apple OAuth sign-in via Clerk, plus email/password. GitHub is not enabled on either the production or staging Clerk instance.
  • Clerk issues RS256 JWTs verified server-side via JWKS. Token sent as SessionToken header (PascalCase) on every GraphQL request.
  • Role-based access control (admin, moderator, user).
  • acts_as_paranoid soft-deletes on core models (User, Goal, GoalEvent, etc.).
  • public_id (url-safe base64) used for all external references instead of database IDs.

12. Notifications

  • Real-time notifications via ActionCable WebSocket subscriptions.
  • Notification panel in the app header with unread count badge.
  • Push notification support via device token registration (Capacitor).
  • Notification types: badge unlocks, level-ups, encouragements, community activity.
  • Acknowledge and delete notification actions.

Backend Architecture

  • Interaction Pattern: Every user action (AddGoal, SignUp, AddMoodLog, JoinCommunity, etc.) is encapsulated in an Interaction class under app/interactions/, keeping controllers and GraphQL resolvers thin. Uses the custom Interaction::Base gem (github: joshlock3/interaction).
  • Single GraphQL Endpoint: POST /graphql handles all queries and mutations. 120+ mutations and 80+ queries registered (see API Reference for exact counts), including admin and AI Workforce surfaces gated by require_admin!.
  • Real-time: ActionCable WebSocket at /cable for subscriptions (achievement updates, notifications).
  • Background Jobs: Sidekiq + Crono for scheduled and async tasks (reminders, feed generation, notifications).
  • PublicRecord: Base class auto-generates a secure public_id for every externally-accessible model. Internal integer IDs are never exposed to clients.

Key Data Models

ModelDescription
UserCentral entity. Has goals, communities (via CommunityMember), mood logs, user actions, notifications, and a personal feed.
GoalA user's objective. Has goal events, milestones, category, type, and can be shared to communities. Supports parent/child nesting.
GoalEventImmutable progress log entry. Supports encouragements, comments, and media attachments.
CommunityInterest group. Has members, shared goals, a community feed, posts, and media.
MoodLogDaily emotional check-in (mood + optional note + optional goal link).
UserActionTracks gamification-relevant behaviors to drive badge awards.
MilestoneSub-goals under a Goal with individual completion tracking.
UserNotificationIn-app notification with read/acknowledge state.

Documentation

DocumentDescription
ArchitectureSystem architecture and design patterns
API ReferenceGraphQL queries and mutations
Data ModelsDatabase schema and model relationships
DeploymentGCP infrastructure, CI/CD pipelines, environments
TestingTest infrastructure, coverage, and patterns
Coding StyleCode conventions and linting rules
Best PracticesDevelopment best practices
User GuideEnd-user documentation
RoadmapPlanned features and milestones
Project SynopsisMission and value proposition
Brand PhilosophyEthos, messaging, tone of voice, visual identity

Getting Started

bash
# First-time setup
./setup.sh

# Or with Docker
docker-compose up --build

# Run all tests
./test.sh

See Deployment for full environment setup, GCP configuration, and CI/CD details.

Last updated: 2026-08-31 (OBJ-3024: XP rank progression example renamed off the streak vocabulary — Open Road → Horizon)

Loading…