Inspiration

Forty Together started with someone close to me who wanted to stop drinking. I did not want to give him another streak counter. I wanted to make the thing I wished existed: a way to turn one meaningful promise into a realistic path, with a few trusted people helping you keep going.

Real change is messy. Missing Tuesday should not erase Monday. Forty Together is built around that idea.

What makes it different

  • “Not today” is information, not punishment. A difficult day never resets or extends the journey.
  • Support does not require the same goal. Participants keep the promise; supporters can join the challenge or encourage without tracking their own days.
  • AI proposes; people decide. Every generated plan stays editable and requires explicit approval before it becomes active.
  • Accountability stays human. There are no leaderboards, shame loops, or performative streaks.

What it does

A participant describes the promise they want to keep as a 40-day challenge, why it matters, what a successful day looks like, likely obstacles, and how ambitious the plan should feel. GPT-5.6 converts that context into seven progression themes and exactly forty practical daily actions.

Each day, the participant sees one clear action and checks in with I did it or Not today. They can privately record a note or photo and optionally receive a short piece of coaching. A missed day never deletes previous progress.

People can invite others as participants or supporters, discover public challenges, join a shared challenge already in progress, or make an independent copy that starts at Day 1. Community posts support reactions and comments, while privacy controls, reporting, blocking, data export, and in-app account deletion are built into the experience.

Forty Together can also support an optional Christian rhythm with Sunday rest and Scripture reflection. When enabled, Scripture is retrieved from an embedded public-domain World English Bible; GPT-5.6 may select only from local passages and cannot invent or rewrite a verse. Full chapter and verse context remains available inside the app.

Try Forty Together

How I built it

Backend and source of truth. The backend is Ruby 3.4 and Rails 8.1 with PostgreSQL, a versioned JSON API, Active Storage, Action Text, Devise, Doorkeeper OAuth with PKCE, and Pundit authorization. Solid Queue handles AI generation, moderation, email, push delivery, media processing, schedule transitions, and Bible imports away from user-facing requests.

Web and native clients. The responsive web client uses React 19, TypeScript, TanStack Query, and React Router. The native client uses Expo SDK 57, React Native, Expo Router, SecureStore, AuthSession, native date and time controls, camera and photo selection, and push notifications. Both clients share the same Rails source of truth and product language.

OpenAI workflows through RubyLLM:

  • gpt-5.6 generates the structured forty-day plan.
  • gpt-5.6-luna provides concise, post-check-in coaching.
  • gpt-5.6-luna selects Scripture only from retrieved candidates.
  • omni-moderation-latest and deterministic local rules protect generated and community content.

Reliability rule: Every AI workflow has moderated input and output, structured responses, explicit user consent, disabled response storage, privacy-preserving safety identifiers, and a deterministic fallback. If a model is unavailable, a check-in still saves.

How I used Codex and GPT-5.6

GPT-5.6 Sol in Codex let me turn Forty Together from an idea into a fully functional web and native mobile product in 24 hours. A scope and pace that were not possible for me before.

I brought 23 years of engineering experience, the product vision, and the final decisions. Codex helped challenge the PRD, uncover missing states, and translate the product into testable phases. Within the first 24 hours, the Rails API, responsive React application, and native Expo iOS application were working together, and the iOS build was in App Store Connect.

After the core worked, I used isolated Codex worktrees to build complete features in parallel. Goal-driven review loops exercised real journeys in the browser and iOS Simulator, fixed confirmed problems, and reran verification. GPT-5.6 also helped create and refine the App Store marketing screenshots, capture product walkthroughs, and edit the final demo video. Together, we reached production, TestFlight, 85 Build Week commits, and 267 passing tests with 1,371 assertions.

The final product decisions remained mine. I decided that missed days would not erase progress, supporters would have a distinct role, generated plans would require approval, Rails would remain the source of truth, and AI workflows would include consent, moderation, and deterministic fallbacks.

Challenges I ran into

  1. Forty days sounds simple until calendars become personal. Consecutive schedules, Sunday-rest schedules, time zones, early-morning edit cutoffs, late joining, missed days, and reminders all had to agree across Rails, React, and iOS.
  2. Making AI useful without making it authoritative. Plans are editable and approval-gated. Scripture is grounded in a verified corpus instead of model memory. Moderation runs around generation, and deterministic fallbacks preserve the product when OpenAI is unavailable.
  3. One coherent product across responsive web and native mobile. Each platform still required its own details: native pickers, camera permissions, deep links, push onboarding, legal links, and account deletion.

Potential impact

Forty Together is for people who know what they want to change but need a realistic path and a few trusted people beside them. It can support movement, sleep, gratitude, hydration, alcohol-free periods, spiritual practices, or a custom commitment without pretending to replace medical, mental-health, or pastoral care.

The participant/supporter distinction lowers the cost of helping: a friend does not have to adopt the same goal to offer meaningful accountability. The fixed journey makes setbacks visible without turning them into a reason to disappear.

Accomplishments I’m proud of

  • A shipped product, not a single-path prototype. The deployed web app and TestFlight iOS build include authentication, approval-gated AI planning, daily and Sunday reflection, late enrollment, community feeds, rich text and photos, notifications, moderation, privacy tools, and two clients backed by the same API.
  • Real verification. The repository currently passes 267 tests with 1,371 assertions, plus Ruby style, ESLint, TypeScript, production builds, Expo Doctor, and mobile static export.
  • A different definition of progress. Not today is a first-class check-in, not a broken streak that erases work someone already did.

What I learned

Structured output is most valuable when paired with domain constraints and human review. AI reliability is as much a product-design problem as a prompt-design problem. I also learned that accountability does not need pressure or points; visibility, encouragement, and a clear next step can be enough.

What’s next

Next I will take the current iOS submission through App Review and public release, expand Android testing, run a small pilot with real accountability circles, improve accessibility from user feedback, and measure which kinds of guidance help people return after a difficult day.

Built With

Share this project:

Updates