Open Energy Constellations — UX Roadmap
Living document for the
/open-energy/experimentsconstellation pathway. Phases are designed to ship independently and compose over time.
Vision
Turn 768 patents and 29 experiments into a participatory pathway. Each experiment is a star. Each pattern is a constellation. The sky lights up as the community participates. The endgame: 50+ independent replications per experiment, all open, all verifiable, all published.
Current State (shipped)
- 9 constellations, ~3 stars each, grouped by pattern
- Local progress: not started → in progress → completed (localStorage only)
- Star modal: full experiment content + status toggle
- Visual states: dim → pulsing colored → bright glowing
- Animated starfield + shimmering hero
- No login required — anyone can browse and track personally
Phase 1 — Server-Side Progress Sync
Goal: Logged-in users see their progress across devices.
UX
- Same constellation page, but progress hydrates from server when authenticated
- Falls back to localStorage when logged out
- "Sign in to sync progress" prompt at top when localStorage has progress but no session
Backend
- New table:
open_energy_progressuser_id UUID experiment_id UUID -- references journal_entries.id status TEXT -- 'available' | 'in_progress' | 'completed' notes TEXT -- optional user notes about their attempt started_at TIMESTAMPTZ completed_at TIMESTAMPTZ - Endpoints:
GET /api/open-energy/progress— current user's progressPUT /api/open-energy/progress/:experimentId— update onePOST /api/open-energy/progress/migrate— bulk import from localStorage on first sign-in
Files to touch
apps/backend/src/routes/open-energy.ts(new)supabase/migrations/0XX_open_energy_progress.sql(new)apps/frontend/src/app/open-energy/experiments/page.tsx(hydrate from API when authenticated)
Phase 2 — Achievements & Badges
Goal: Reward participation with visible, shareable badges.
UX
- Bottom strip on
/open-energy/experimentsshowing earned badges - Badge unlocks animate (a shooting star arcs across the sky to deliver it)
- Each badge has: icon, name, criteria, earned date
- "Share" button generates an OG image card
Badge tiers
| Tier | Criteria |
|---|---|
| First Light | Mark any experiment "in progress" |
| First Star | Complete your first experiment |
| Constellation | Complete all stars in any one pattern |
| Trinity | Complete one experiment from each meta-pattern element (non-linear + resonance + pulsed) |
| Cartographer | Complete 1 experiment from every constellation (9 total) |
| Sky Walker | Complete all 29 experiments |
| Replicator | Have your build independently confirmed by another user |
| Lightkeeper | Be the 50th confirmation on any experiment (the threshold) |
Backend
open_energy_badgestable — earned badges per user- Badge logic runs as a trigger on
open_energy_progressupdates - Reuses existing badge display patterns from
BadgeDisplay.tsx
Files to touch
supabase/migrations/0XX_open_energy_badges.sql(new)apps/frontend/src/app/open-energy/experiments/components/BadgeStrip.tsx(new)- Server-side trigger or backend function to award badges
Phase 3 — Build Logs (User Contributions)
Goal: People who actually build the experiments can publish their results.
UX
- "Publish my build" button in the experiment modal
- Form: photos, videos, materials sourced (BOM with prices), measurements taken, what worked, what didn't
- Each star has a "builds" counter that grows as people publish
- Click "X builds" → opens a feed of all published builds for that experiment
- Each build is a journal entry (notebook: "Open Energy Builds")
Why journal entries?
HiveJournal already has entries with images, tags, and visibility controls. Reuse the existing infrastructure:
- Build = journal entry tagged
["Build", experiment_id, pattern_slug] - Public visibility for shared builds
- Existing photo upload + entry editor handles the content
Visual
- Each completed star gets a small numeric badge showing build count
- Hovering shows "47 people have built this"
- Build feed uses card layout matching the dashboard
Files to touch
- New notebook
Open Energy Builds(created by import script) apps/frontend/src/app/open-energy/experiments/[id]/builds/page.tsx(new)apps/frontend/src/app/open-energy/experiments/[id]/builds/new/page.tsx(new)
Phase 4 — Replication Tracking
Goal: Move toward the 50-confirmation goal per experiment.
UX
- Each experiment shows a replication progress bar:
12 / 50 independent confirmations - Other builders can mark "I confirm this works" or "I tried this and it did not work"
- Replication metadata: who, when, materials variance, measurement values
- A separate "Replication Quality" score (peer-rated, like StackOverflow)
Visual
- Stars get an additional "halo" ring whose brightness is the replication count / 50
- Constellations with high replication form brighter, more intricate light webs
- Replication count shown above the existing build count
Why this matters
The whole point of this project is to either confirm or refute the meta-pattern claims. A replication count is the rigor metric. 50 confirmations is the gold standard from your CLAUDE.md.
Files to touch
open_energy_replicationstable- New components for the replication UI in the experiment modal
- Replication progress bars on each star
Phase 5 — Meta-Pattern Cross-Constellation Lines
Goal: Visualize how patterns combine into the meta-pattern (non-linearity + resonance + pulsed).
UX
- Toggle button: "Show Meta-Pattern Connections"
- When enabled, draws faint cross-constellation lines between experiments that share meta-pattern elements
- Three "spine" lines emerge for each meta-pattern element: non-linear, resonance, pulsed
- When a user has completed at least one experiment from each spine, the spine glows fully
- The meta-pattern revealed = the user has experienced the synthesis firsthand
Technical
- Tag each experiment with which meta-pattern elements it tests (
non_linear,resonance,pulsed) - Calculate cross-constellation positions in absolute viewport coords
- SVG overlay layer above the constellations grid
Files to touch
- Update import script to tag experiments with meta-pattern elements
- Add overlay SVG to constellation page
- New toggle UI
Phase 6 — Live Activity Feed
Goal: Make the page feel alive — show that real people are doing this right now.
UX
- Right rail (collapsible) showing recent activity
- "Sandon J. just completed Bifilar Coil Resonance"
- "Maria K. published a build of PAGD Replication"
- "Ben T. confirmed Pulsed Electrolysis #47/50"
- Live updates via Supabase realtime subscriptions
- Anonymized for users who opt out
Files to touch
apps/frontend/src/app/open-energy/experiments/components/ActivityFeed.tsx(new)- Subscribe to
open_energy_progressandopen_energy_replicationstables via Supabase realtime
Phase 7 — Leaderboard / Top Contributors
Goal: Recognition for the most active replicators.
UX
/open-energy/contributorspage- Ranked by: experiments completed, builds published, replications submitted
- Each contributor has a profile card showing their badge collection
- Top 10 displayed prominently; full list searchable
Files to touch
apps/frontend/src/app/open-energy/contributors/page.tsx(new)- Backend aggregation query
Phase 8 — Public Embeds & Sharing
Goal: Let people share their progress and the project itself outside HiveJournal.
UX
- Share button on each constellation: "Share my progress on the Coil Geometry constellation"
- Generates an OG image showing the constellation with their stars lit
- Share button on the whole
/open-energy/experimentspage → "I'm lighting the constellations on @hivejournal" - Embed code for blog posts:
<iframe src="...">
Files to touch
apps/frontend/src/app/api/og/open-energy/[type]/route.tsx(new — OG image generation)- Use
@vercel/ogor existing OG infrastructure
Phase 9 — Mobile-First Experiment Tracker
Goal: People in the lab need to update their progress from their phone.
UX
- Mobile-optimized version of the experiment modal
- Camera access for build photos
- Voice notes for measurement logging
- Haptic feedback when a star transitions to completed
- Could be a PWA addition or part of the React Native mobile app
Files to touch
apps/mobile/src/screens/OpenEnergy/(new — if doing native)- Or PWA enhancements to the existing web page
Phase 10 — The Synthesis Reveal
Goal: A payoff moment when someone completes the meta-pattern.
UX
- When a user completes at least one experiment from each of the 3 meta-pattern elements...
- ...the entire sky animates: all constellations they've touched draw lines toward a central point
- A new "Synthesis" star appears at the center
- Modal explains: "You have just experienced what 768 inventors discovered independently. Non-linearity + resonance + pulsed excitation produces operating regimes that linear theory does not predict. You are now part of the open record."
- Generates a personal "synthesis certificate" PDF
Files to touch
apps/frontend/src/app/open-energy/experiments/components/SynthesisReveal.tsx(new)- Trigger: meta-pattern element completion check
Build Order Recommendation
| Order | Phase | Why first |
|---|---|---|
| 1 | Server-side progress sync | Foundation for everything else; small backend lift |
| 2 | Build logs | Highest community value; reuses existing notebook infra |
| 3 | Replication tracking | The actual scientific point of the project |
| 4 | Achievements/badges | Drives ongoing participation once #2 and #3 exist |
| 5 | Live activity feed | Makes it feel alive once there's real activity |
| 6 | Meta-pattern cross-lines | Visualization payoff once data is rich enough |
| 7 | Synthesis reveal | The emotional climax — only meaningful after #6 |
| 8 | Leaderboard | After enough contributors exist to rank meaningfully |
| 9 | Sharing/OG embeds | Growth lever once there's something worth sharing |
| 10 | Mobile-first tracker | Last because the web works fine for now |
Guiding Principles
- Honest about scale: never inflate numbers. If 3 people have replicated something, say "3 replications" not "growing community"
- Progress is permanent: once a user marks something completed, that record is theirs forever
- Negative results count: failed replications are just as valuable as successful ones; they get equal weight in the UI
- No paywall ever: this is the open record. If it's behind auth, it's only because of personal data sync
- Reuse what exists: every phase should lean on existing HiveJournal infrastructure (notebooks, entries, visibility, badges) before building new tables
Measurement
Track these to know if it's working:
- Unique visitors to
/open-energy/experimentsper week - % of visitors who toggle at least one star to "in progress"
- Number of published builds
- Number of confirmed replications
- Time-to-50-confirmations on the easiest experiment (likely Bifilar Coil)