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
| Layer | Technology |
|---|---|
| Backend | Ruby on Rails 8.1.3.1 (API-only), GraphQL via graphql-ruby, PostgreSQL, Sidekiq background jobs, ActionCable WebSocket subscriptions |
| Frontend | Ionic 8 + Vue 3 (Vite), Apollo Client (GraphQL + subscriptions), Pinia stores, Capacitor for native iOS/Android, Tailwind CSS 3.4 |
| Infrastructure | Google Cloud Platform — Cloud Run (API), Firebase Hosting (frontend), Cloud SQL (PostgreSQL), Artifact Registry, Secret Manager |
| CI/CD | GitHub Actions — automated testing, preview deployments per PR, staging and production pipelines, smoke tests |
| Marketing | Static 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
| Environment | Frontend | API |
|---|---|---|
| Production | https://app.objectuve.com | https://api.objectuve.com |
| Staging | https://staging.app.objectuve.com | https://staging.api.objectuve.com |
| Admin Dashboard | https://admin.objectuve.com | https://api.objectuve.com |
| Marketing | https://www.objectuve.com | — |
| PR Preview | Firebase preview channel per PR | Cloud 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
UserActionenum 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
SessionTokenheader (PascalCase) on every GraphQL request. - Role-based access control (admin, moderator, user).
acts_as_paranoidsoft-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 customInteraction::Basegem (github: joshlock3/interaction). - Single GraphQL Endpoint:
POST /graphqlhandles all queries and mutations. 120+ mutations and 80+ queries registered (see API Reference for exact counts), including admin and AI Workforce surfaces gated byrequire_admin!. - Real-time: ActionCable WebSocket at
/cablefor 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_idfor every externally-accessible model. Internal integer IDs are never exposed to clients.
Key Data Models
| Model | Description |
|---|---|
| User | Central entity. Has goals, communities (via CommunityMember), mood logs, user actions, notifications, and a personal feed. |
| Goal | A user's objective. Has goal events, milestones, category, type, and can be shared to communities. Supports parent/child nesting. |
| GoalEvent | Immutable progress log entry. Supports encouragements, comments, and media attachments. |
| Community | Interest group. Has members, shared goals, a community feed, posts, and media. |
| MoodLog | Daily emotional check-in (mood + optional note + optional goal link). |
| UserAction | Tracks gamification-relevant behaviors to drive badge awards. |
| Milestone | Sub-goals under a Goal with individual completion tracking. |
| UserNotification | In-app notification with read/acknowledge state. |
Documentation
| Document | Description |
|---|---|
| Architecture | System architecture and design patterns |
| API Reference | GraphQL queries and mutations |
| Data Models | Database schema and model relationships |
| Deployment | GCP infrastructure, CI/CD pipelines, environments |
| Testing | Test infrastructure, coverage, and patterns |
| Coding Style | Code conventions and linting rules |
| Best Practices | Development best practices |
| User Guide | End-user documentation |
| Roadmap | Planned features and milestones |
| Project Synopsis | Mission and value proposition |
| Brand Philosophy | Ethos, messaging, tone of voice, visual identity |
Getting Started
# First-time setup
./setup.sh
# Or with Docker
docker-compose up --build
# Run all tests
./test.shSee 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)