Web app features:
- Auth: Login, Register, Forgot Password with shared-auth-ui
- Chat: New chat, conversation view, message list, model selector
- Templates: List, create, edit, delete templates
- Spaces: Team workspaces with member management
- Documents: Document mode with version history
- Archive & Profile pages
Technical:
- SvelteKit 2 with Svelte 5 runes
- Tailwind CSS 4 with shared themes
- Supabase Auth with SSR
- ChatLogo added to shared-branding
- dev:*:app commands for web+backend
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add AiService using Google Gemini Flash 2.0 for card generation
- Support all card types: text, flashcard, quiz, mixed
- Implement full generateDeckWithAI endpoint with:
- Credit validation and consumption
- Structured JSON output with response schema
- Deck and card creation in PostgreSQL
- Comprehensive error handling
- Add @google/genai dependency
- Update .env.example with GOOGLE_GENAI_API_KEY
- Support difficulty levels (beginner/intermediate/advanced)
- Support multiple languages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Frontend: Updated deckStore to use fetch API calls to backend
- Frontend: Removed supabase.ts utility and @supabase/supabase-js dependency
- Backend: Removed SupabaseService and supabase.service.ts
- Backend: Updated validation schema to use DATABASE_URL
- Backend: Updated health controller to remove Supabase check
- Backend: Marked AI generation endpoint as not implemented (was using Edge Functions)
Phase 4 of PostgreSQL/Drizzle migration complete.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Phase 3 of ManaDeck database migration:
Database Package (@manacore/manadeck-database):
- Configure package for NodeNext module resolution with .js extensions
- Add build script and proper exports for ESM/CJS compatibility
- Export schema types and Drizzle utilities
Backend Migration:
- Add DatabaseModule with singleton database provider
- Create repository layer with Drizzle ORM:
- DeckRepository: CRUD operations for decks
- CardRepository: CRUD operations for cards
- UserStatsRepository: Stats and leaderboard queries
- DeckTemplateRepository: Template management
- Update ApiController to use repositories for all database operations
- Update PublicController to use repositories for featured decks, leaderboard, templates
- Add DATABASE_URL environment variable support
The backend now uses PostgreSQL via Drizzle ORM instead of Supabase SDK
for database operations. Supabase is still used for auth (via Mana Core)
and edge functions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add full app_slider translations in 5 languages (DE, EN, IT, FR, ES)
- Update AppSlider components to use svelte-i18n with $t() for reactive translations
- Add ManaDeck app to all AppSlider components
- Restore and fix memoro locale files with complete translations
- All apps now show uniform localized content on login pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add svelte-i18n configuration with SSR support to all web apps
- Create LanguageSelector component for each app with brand colors
- Add German and English locale files
- Integrate language switcher into login pages via headerControls snippet
- Fix Tailwind v4 @source directives for shared package scanning
- Update AppSlider styling to match login container design
Apps updated:
- Memoro (gold #f8d62b)
- Märchenzauber (pink #FF6B9D)
- ManaDeck (purple #8b5cf6)
- ManaCore (indigo #6366f1)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add PillNavigation and PillDropdown to @manacore/shared-ui
- Features: glassmorphism design, horizontal/sidebar toggle, collapsible FAB
- Configurable per app: nav items, primary color, logo, language switcher
- Integrate into ManaCore, ManaDeck, and Memoro web apps
- Remove old local navigation components (Sidebar, Navbar, PillNavigation)
- Add navigation stores for persistent user preferences
Apps now share consistent navigation UX with app-specific branding.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add pre-configured logo components to @manacore/shared-branding:
- MemoroLogo, ManaCoreLogo, ManaDeckLogo, StorytellerLogo
- Update all apps to import logos from shared-branding
- Remove redundant local logo wrapper components from each app
This reduces code duplication by centralizing app logos while
maintaining the same API for consumers.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
Dependency updates:
- Manacore mobile: Expo SDK 52 → 54, expo-router 4.x → 6.x
- Supabase: Aligned to ^2.81.1 across all projects
- TypeScript: Aligned to ~5.9.3 across all projects
- React/React Native: Updated to 19.1.0/0.81.5 in Manacore
Fixes:
- Added @types/node to shared-utils for timer types
- Updated shared package tsconfig for DOM/Node types
All shared packages now pass type-check.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)
This commit preserves the current state before monorepo restructuring.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>