mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 21:01:08 +02:00
Mirror of github.com/Memo-2023/mana-monorepo
SUMMARY: Create a unified theming architecture with two new shared packages (@manacore/shared-theme and @manacore/shared-theme-ui) that provides consistent theming across all 4 web applications while allowing app-specific primary color customization. NEW PACKAGES: @manacore/shared-theme: - Svelte 5 Runes-based theme store factory - 4 theme variants: Lume (Gold), Nature (Green), Stone (Blue Gray), Ocean (Blue) - 3 theme modes: Light, Dark, System (auto-detect) - HSL-based color system with 18 semantic tokens - localStorage persistence per app - System preference detection via matchMedia - Pre-defined configs for all apps (memoro, manacore, manadeck, maerchenzauber) @manacore/shared-theme-ui: - ThemeToggle: Light/dark mode toggle button - ThemeSelector: Visual theme variant selector with color dots - ThemeModeSelector: Segmented control for light/dark/system UPDATED PACKAGES: @manacore/shared-tailwind: - Converted from HEX to HSL-based CSS variables - Updated preset.js with hsl(var(--color-*)) syntax - themes.css now contains all 4 theme variants with light/dark modes APP MIGRATIONS: memoro/web: - Replaced 145 LOC theme store with 25 LOC shared implementation - Deleted local ThemeSelector.svelte and ThemeToggle.svelte - Primary color: Gold (47 95% 58%) manacore/web: - Replaced 80 LOC theme store with 25 LOC shared implementation - Deleted local ThemeToggle.svelte - Primary color: Indigo (239 84% 67%) manadeck/web: - Added new theme store using shared package - Primary color: Indigo (239 84% 67%) maerchenzauber/web: - Added new theme store using shared package - Primary color: Purple (280 60% 55%) All app layouts updated with theme.initialize() in onMount. BENEFITS: - ~225 LOC of app-specific code reduced to ~100 LOC total - Single source of truth for theme logic - Consistent theming experience across all apps - Easy to add new theme variants - App-specific primary colors preserved 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| docs | ||
| maerchenzauber | ||
| manacore | ||
| manadeck | ||
| memoro | ||
| packages | ||
| .editorconfig | ||
| .gitignore | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| CHANGELOG_2025-11-24.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| SHARED_PACKAGES_ROADMAP.md | ||
| turbo.json | ||
Manacore Monorepo
Monorepo containing all Manacore projects with shared packages and unified tooling.
Projects
| Project | Description | Tech Stack |
|---|---|---|
| maerchenzauber | AI-powered story generation app | NestJS, Expo, SvelteKit, Astro |
| manacore | Multi-app ecosystem platform | Expo, SvelteKit, Astro |
| manadeck | Card/deck management app | NestJS, Expo, SvelteKit |
| memoro | Voice memo & AI analysis app | Expo, SvelteKit, Astro |
Getting Started
Prerequisites
- Node.js 20+
- pnpm 9.15.0+
Installation
# Install pnpm globally (if not installed)
npm install -g pnpm
# Install all dependencies
pnpm install
Development
# Start all projects in dev mode
pnpm run dev
# Start a specific project
pnpm run maerchenzauber:dev
pnpm run manacore:dev
pnpm run manadeck:dev
pnpm run memoro:dev
# Build all projects
pnpm run build
# Run tests
pnpm run test
# Type check
pnpm run type-check
# Format code
pnpm run format
Shared Packages
Located in packages/:
| Package | Description |
|---|---|
@manacore/shared-types |
Common TypeScript types |
@manacore/shared-supabase |
Unified Supabase client |
@manacore/shared-utils |
Utility functions (date, string, async) |
@manacore/shared-ui |
React Native UI components |
Using Shared Packages
// In any project
import { User, ApiResponse } from '@manacore/shared-types';
import { createSupabaseClient } from '@manacore/shared-supabase';
import { formatDate, truncate, retry } from '@manacore/shared-utils';
Repository Structure
manacore-monorepo/
├── packages/ # Shared packages
│ ├── shared-types/ # TypeScript types
│ ├── shared-supabase/ # Supabase utilities
│ ├── shared-utils/ # Common utilities
│ └── shared-ui/ # React Native components
├── maerchenzauber/ # Storyteller project
├── manacore/ # Manacore apps project
├── manadeck/ # ManaDeck project
├── memoro/ # Memoro project
├── turbo.json # Turborepo configuration
├── pnpm-workspace.yaml # Workspace configuration
└── package.json # Root package
Tooling
- Package Manager: pnpm 9.15.0
- Build System: Turborepo
- Formatting: Prettier
- Node Version: 20 (see .nvmrc)
Adding Dependencies
# Add to root (dev tools)
pnpm add -D <package> -w
# Add to specific project
pnpm add <package> --filter maerchenzauber
# Add to shared package
pnpm add <package> --filter @manacore/shared-utils
Contributing
- Create a feature branch
- Make changes
- Run
pnpm run formatandpnpm run type-check - Commit with conventional commit messages
- Create pull request
License
Private - All rights reserved