Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

452 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SignificantHobbies

Product: significanthobbies.com

Map your hobby history across life phases. Visualize insights. Share your journey. Discover what to explore next.

Deployment & External Services

Concern Service
Hosting Cloudflare Workers (significanthobbies) via @opennextjs/cloudflare; routes significanthobbies.com + www.significanthobbies.com. PRs deploy a significanthobbies-preview env on *.workers.dev.
Database Cloudflare D1; Drizzle ORM
Auth better-auth + Google OAuth
Analytics PostHog via an isomorphic wrapper (src/lib/analytics.ts) — posthog-js in the browser, direct capture-API fetch in server actions
CI/CD GitHub Actions (.github/workflows/deploy.yml) — manual production deploy from main

Quick Start

pnpm install
cp .env.example .env          # fill in your values
pnpm db:migrate:local         # apply tracked migrations to local D1
pnpm db:seed                  # seed local D1 demo data
pnpm dev

Open http://localhost:3000.

Environment Variables

The application database is provided through the Cloudflare DB binding. Local development uses the local-only binding in wrangler.local.toml; it does not need a database URL or token.

Variable Required Description
BETTER_AUTH_SECRET Yes openssl rand -base64 32
BETTER_AUTH_URL Yes http://localhost:3000 in dev
GOOGLE_CLIENT_ID Yes From Google Cloud Console
GOOGLE_CLIENT_SECRET Yes From Google Cloud Console

Google OAuth Setup

  1. Go to Google Cloud Console → APIs & Services → Credentials
  2. Create OAuth 2.0 Client ID (Web application)
  3. Add Authorized redirect URI: http://localhost:3000/api/auth/callback/google
  4. Copy Client ID + Secret into .env

Cloudflare D1

# Local database only; does not contact the production database
pnpm db:migrate:local
pnpm db:seed

Production migrations use pnpm db:migrate:remote only after an operator has reviewed the migration receipt and explicitly approved the remote step.

Running Tests

pnpm test            # vitest unit + accessibility
pnpm test:e2e        # playwright (assumes pnpm dev is running on :3000)
pnpm test:e2e:ui     # playwright UI mode

Routes

Route Description
A representative slice — src/app/ is the source of truth for the full route
set (Daily ritual, bucket lists, commitments, side quests, tools, SEO
landing pages, etc.).
Route Description
/ Public landing for guests; post-onboarding dashboard when signed in
/login Google sign in
/onboarding First-use journey for identity, life history, intentions, and habits
/daily Daily ritual — journal, habit check-ins, and one small new thing (private)
/timeline/new Build a new timeline
/timeline/[id] View/own your timeline with insights
/timeline/[id]/edit Edit your timeline
/u/[username] User profile + hobby portfolio
/u/[username]/[slug] Shared timeline (public/unlisted)
/b/[slug] Shared bucket list (public/unlisted)
/find-your-hobby Hobby quiz (primary discovery UX)
/hobbies Browse hobby categories (hidden from nav; SEO/deep-link)
/hobbies/[hobby] Hobby detail
/explore Public hobby timelines (hidden from nav; SEO/deep-link)

Stack

  • Framework: Next.js 16 App Router + TypeScript
  • Database: Drizzle + Cloudflare D1
  • Auth: better-auth (Google OAuth)
  • UI: Tailwind CSS v4 + shadcn/ui + @dnd-kit for drag/drop
  • Export: html-to-image (client-side PNG)
  • Testing: Vitest (unit) + Playwright (e2e, with @axe-core/playwright for accessibility)

Features

  • Timeline builder — drag/drop phases, add hobbies, auto-save for guests
  • Insights — rekindled hobbies, persistence tracking, phase-by-phase changes
  • Export — beautiful PNG card + JSON export
  • Profile/u/[username] portfolio of your public timelines
  • Discovery — personalized hobby suggestions + directory
  • Guest mode — build and export without an account

Active AI Task Log

This historical task ledger is retained for context; new planning and marketing automation live in Fleet Workspace.

  • Business lane: P1 Explore
  • Rule: do not create another broad "improve the UI" task unless the acceptance criteria differ materially from the tasks listed here.
  • Source of truth for current work: root PROJECT_STATUS.md; Fleet Workspace owns cross-project automation.
Task Status Priority Last known note
df83bb7f significanthobbies: fix Cloudflare 1015 rate-limit blocking homepage done high 2026-05-25 17:07:37
4692120d significanthobbies: add sample hobby journey and start CTA done medium 2026-05-26: added SampleJourneyCard to hero, simplified copy, updated primary CTA to "Start your hobby map →"
6f687fd4 significanthobbies: add share-preview proof card done medium 2026-05-26: added ShareProofSection to landing — dark card preview with phase labels, personality archetype, share action strip (copy/Twitter/WhatsApp/PNG), "What your friends see" label, and "Share your map →" primary CTA
d9e4af4d significanthobbies: add example gallery empty state done low 2026-05-26: CommunityGallery now shows 3 static sample cards with "Sample" badge + "Build and share yours →" CTA instead of returning null when demos are empty

About

A life planner for daily practice, meaningful hobbies, side quests, rituals, and long-term journeys.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages