mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 23:01:09 +02:00
Adds the unified Body module that merges what would otherwise be two
separate apps (fitness + bodylog) into one. The value lives in their
intersection: tracking lifts alongside bodyweight is what enables
real progressive-overload + recomp insights, and shared primitives
(charts, time series, units, photos) avoid duplicating UI surface.
This commit lands only the data layer + module registration so the
follow-up UI / route / dashboard widget can build on a stable
foundation.
Tables (db.version(2), already in place):
bodyExercises — exercise library (Squat, Bench, Deadlift, OHP,
Row, Pull-Up seeded as presets)
bodyRoutines — saved workout templates
bodyWorkouts — one logged training session
bodySets — set rows inside a workout, indexed [workoutId+order]
bodyMeasurements — weight + measurements over time, indexed [type+date]
bodyChecks — daily energy/sleep/soreness/mood self-rating,
upserted per day
bodyPhases — cut/bulk/maintenance/recomp phase markers, with
auto-close on phase change so the "active phase"
view always has at most one open row
Encryption (registry.ts): all 7 tables flipped to enabled. Health
data is GDPR Art. 9 special-category, so user-typed text + the
sensitive numeric fields (weight, reps, value, startWeight,
targetWeight, energy/sleep/soreness/mood) are wrapped. Indexed
columns (ids, FKs, ordering, dates, kind/type/equipment enums)
stay plaintext so the existing query layer keeps working without
decrypt-on-every-row.
Module wiring:
- bodyModuleConfig added to module-registry.ts
- Body app entry registered in shared-branding mana-apps.ts
(red→orange icon to set it apart from the green health-adjacent
modules and the pink cycles icon)
- APP_ICONS.body added (dumbbell + heart-pulse hybrid SVG)
Also captures the broader module-ideas brainstorm in
docs/future/MODULE_IDEAS.md and marks fitness + bodylog as merged
into the new body module.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
120 lines
6 KiB
Markdown
120 lines
6 KiB
Markdown
# Mana — Module Ideas
|
|
|
|
Brainstorm of potential new product modules for the unified Mana app
|
|
(`apps/mana/apps/web/src/lib/modules/`). Captured 2026-04-09.
|
|
|
|
The app currently ships **37 modules**. Each idea below is a candidate for a
|
|
new `modules/{name}/` folder following the standard module pattern
|
|
(`module.config.ts`, `collections.ts`, `queries.ts`, `stores/*.svelte.ts`,
|
|
plus a route under `(app)/{name}/`).
|
|
|
|
Most user-typed content should default to **encrypted** (see
|
|
`apps/mana/apps/web/src/lib/data/crypto/registry.ts`). Modules marked **(ZK)**
|
|
are sensitive enough that zero-knowledge mode should be the default
|
|
recommendation.
|
|
|
|
---
|
|
|
|
## Current modules (for reference)
|
|
|
|
**Productivity:** todo, calendar, contacts, notes, habits, times, timeblocks, events
|
|
**Knowledge & learning:** cards, zitare, guides, questions, skilltree, memoro, context
|
|
**Health & self:** nutriphi, cycles, dreams, moodlit, planta
|
|
**Media & creative:** chat, picture, presi, music, photos, storage, uload
|
|
**Data & tools:** finance, calc, inventory, places, citycorners, who, news, links, tags, playground
|
|
|
|
---
|
|
|
|
## Health & Body
|
|
|
|
- **body** — ✅ **Built.** Combined fitness training + body composition tracking. Workouts/sets with progressive overload, weight + measurements + body fat, daily energy/sleep/soreness checks, cut/bulk/maintenance phases. Lives at `apps/mana/apps/web/src/lib/modules/body/`. The fitness/bodylog merger was the right call — the value lives in their intersection (volume vs. bodyweight, lifts inside a cut).
|
|
- **sleep** — Sleep phases, link to `dreams`, bedtime habit integration
|
|
- **meds** — Medications/supplements, reminders, interactions, history log
|
|
- **therapy** *(ZK)* — Session notes, mood timelines, homework
|
|
|
|
## Mind & Reflection
|
|
|
|
- **journal** — Daily freeform entries with mood, tags, "on this day" recap
|
|
- **gratitude** — 3-things-a-day micro-module with streaks
|
|
- **values** — Personal values/principles, monthly check-in, ties to `habits`
|
|
- **decisions** — Decision journal: assumptions, expected outcome, later review
|
|
- **letters** — Letters to your future self (time-locked unlock)
|
|
|
|
## Knowledge & Creativity
|
|
|
|
- **bookmarks** — Read-later with auto-extract via `mana-crawler`, tags, highlights
|
|
- **highlights** — Book/article quotes + spaced-repetition resurfacing (Readwise-style)
|
|
- **library** — Books/films/games/podcasts: wishlist → in progress → done, ratings
|
|
- **ideas** — Idea inbox with "cooking" status, links to `notes` and `cards`
|
|
- **wiki** — Personal Zettelkasten/wiki with backlinks (Obsidian-style), built on `notes`
|
|
- **research** — Topic-based folders: sources, notes, syntheses, AI summaries
|
|
- **prompts** — LLM prompt library with variables, versions, captured outputs
|
|
|
|
## Lifestyle & Hobbies
|
|
|
|
- **recipes** — Recipes (linked to `nutriphi`), meal plan, shopping list generator
|
|
- **wardrobe** — Catalog clothing, build outfits, "last worn", wash status
|
|
- **travel** — Trips, itineraries, packing lists, travelogue (combines `places` + `photos`)
|
|
- **packing** — Reusable packing list templates per trip type
|
|
- **garage** — Car/bike: maintenance, fuel stops, repairs, inspection reminders
|
|
- **collections** — Generic collector (vinyl, sneakers, LEGO, coins) with custom fields
|
|
|
|
## Social & Relationships
|
|
|
|
- **birthdays** — Standalone from `contacts`: reminders, gift ideas, past gifts
|
|
- **gifts** — Gift ideas per person, budget, status (idea → bought → given)
|
|
- **interactions** — CRM-light: last contact, "ping it" reminders for relationship upkeep
|
|
- **family** — Family tree, shared memories, family lore
|
|
|
|
## Money & Stuff
|
|
|
|
- **subscriptions** — Track subscriptions, renewal alerts, annual cost overview, cancel links
|
|
- **budgets** — Budget buckets layered on `finance`, savings goals
|
|
- **invoices** — Issue invoices (freelancer), status, dunning
|
|
- **warranties** — Receipts/warranties, expiry alerts (links to `inventory`)
|
|
- **lending** — What you've lent / borrowed (books, tools, money)
|
|
|
|
## Home & Living
|
|
|
|
- **home** — Household tasks, maintenance plan (filter changes, chimney sweep), contracts
|
|
- **chores** — Recurring household tasks with rotation across roommates
|
|
- **shopping** — Universal shopping lists, stores, price comparisons
|
|
- **pantry** — Pantry stock with expiry, generates shopping list, links to `recipes`
|
|
|
|
## Work & Goals
|
|
|
|
- **goals** — OKRs/quarterly goals, key results, weekly check-in
|
|
- **projects** — Generic project module (beyond `todo`): phases, stakeholders, risks
|
|
- **standup** — Daily done/doing/blockers log (works for solos too)
|
|
- **meetings** — Meeting notes with attendees from `contacts`, action items → `todo`
|
|
- **timesheet** — Time tracking per project (extension of `times`), invoice export
|
|
- **interviews** — Interview tracker (as candidate or recruiter)
|
|
|
|
## Playful & Creative
|
|
|
|
- **streaks** — Pure streak visualizer across all modules (habits, journal, etc.)
|
|
- **bucket** — Bucket list with status, completion photos
|
|
- **quests** — Gamified self-challenges, RPG-style XP feeding `skilltree`
|
|
- **moodboard** — Visual inspiration boards (combines `picture`/`bookmarks`)
|
|
- **sketchbook** — Quick browser-canvas doodles, dated
|
|
- **soundbites** — Short audio memos, transcribed via `mana-stt`
|
|
- **timecapsule** — Save content today, unlock in X years
|
|
|
|
## People in your life
|
|
|
|
- **kids** *(ZK)* — Milestones, illnesses, growth, photos
|
|
- **pets** — Vet appointments, vaccinations, feeding, weight
|
|
- **plants-care** — Extension of `planta`: watering plan, fertilizing, repotting
|
|
|
|
---
|
|
|
|
## Next steps
|
|
|
|
When picking one to build, the standard scaffolding is:
|
|
|
|
1. `apps/mana/apps/web/src/lib/modules/{name}/module.config.ts` — declare `appId` + tables
|
|
2. Add to `apps/mana/apps/web/src/lib/data/module-registry.ts`
|
|
3. Add Dexie schema bump in `apps/mana/apps/web/src/lib/data/database.ts`
|
|
4. If sensitive: register in `apps/mana/apps/web/src/lib/data/crypto/registry.ts`
|
|
5. Route under `apps/mana/apps/web/src/routes/(app)/{name}/`
|
|
6. Register in `packages/shared-branding/src/mana-apps.ts` (icon, tier, branding)
|