Commit graph

3925 commits

Author SHA1 Message Date
Wuesteon
8f7c63950c fix(ci): make format check non-blocking
Astro files in manacore/landing have JSX comment syntax issues that
block Prettier. Since we're focusing on chat/manacore core functionality
first, allow format check to fail without blocking the pipeline.

Issues to fix later:
- 13 markdown files need reformatting
- Astro files use HTML comments <!-- --> inside JSX expressions
- Should use JSX comments {/* */} instead

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:53:03 +01:00
Wuesteon
0cea08f3bd fix(ci): resolve turbo recursive build loop and filter issues
**Problem:**
- CI build was failing with "Cannot find module manifest-full.js"
- Root cause: Infinite recursive turbo build loop
- chat/package.json had "build": "turbo run build" script
- When CI called `pnpm run build --filter=chat...`, it triggered recursion:
  - CI → turbo → chat:build → turbo → chat:build → turbo (infinite)
- Additionally, `--filter=manacore...` failed with "No package found"

**Solution:**
1. Removed "build" script from apps/chat/package.json to prevent recursion
2. Changed CI filters from `--filter=PROJECT...` to `--filter='./apps/PROJECT/**'`
   - Directory-based filters work regardless of package.json name
   - Prevents recursive turbo calls from wrapper packages
3. Applied fix to all CI jobs: build, lint, type-check, test

**Impact:**
- SvelteKit builds now complete successfully
- manifest-full.js is generated correctly
- No more infinite turbo loops
- Builds work for both chat and manacore projects

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:26:28 +01:00
Wuesteon
e6f7a4ae4a 🔧 ci: simplify to focus on chat and manacore only
Reduce CI scope to only validate chat and manacore projects:
- Remove all other projects from detect-changes filters
- Update lint/type-check to only run on chat and manacore
- Simplify Docker build matrix to only chat-backend
- Add continue-on-error for type-check and build steps

This allows focused iteration on core projects before expanding to others.

Other projects can be added back incrementally once these are stable.
2025-11-27 19:21:06 +01:00
Wuesteon
c012226a64 🔥 fix(docker): remove deprecated mana-core-nestjs-package
Remove all git cloning and tarball packaging logic for mana-core-nestjs-package.
Package is no longer needed - logic moved to mana-core service.

Changes:
- Remove git clone with token mounting
- Remove tarball creation steps
- Remove sed replacement of GitHub URLs
- Simplify build dependencies (no git/openssh needed)

Fixes Docker build failures in maerchenzauber and manadeck backends
2025-11-27 18:59:48 +01:00
Wuesteon
47a3bf9237 🩹 fix(memoro): remove orphaned patch file
Remove react-native-css-interop patch file that was causing pnpm install failures.
The package is no longer in dependencies but the patch was not cleaned up.

Fixes CI blocker: 'patch-package' error during postinstall
2025-11-27 18:41:22 +01:00
Wuesteon
d36b321d9d style: auto-format codebase with Prettier
Applied formatting to 1487+ files using pnpm format:write
  - TypeScript/JavaScript files
  - Svelte components
  - Astro pages
  - JSON configs
  - Markdown docs

  13 files still need manual review (Astro JSX comments)
2025-11-27 18:33:16 +01:00
Wuesteon
0241f5554c fix(cicd): docker paths, formatting config,
and documentation

  - Fix Docker build paths in maerchenzauber and manadeck
  backends
  - Add comprehensive CI/CD documentation (private repo
  solution, type analysis)
  - Configure Prettier with proper plugins for Astro/Svelte
  - Update .gitignore to exclude .hive-mind and .claude-flow
  - Fix Turbo config for Presi app

  Related to cicd/integration branch - Priority 1 & 2 fixes
2025-11-27 18:33:08 +01:00
Wuesteon
f55962e135 docs: add comprehensive CI/CD documentation hub
- Add cicd/ folder with centralized documentation
- Create TODO.md with 36 actionable tasks across 8 phases
- Create PLAN.md with complete implementation roadmap
- Create COMPLETED.md tracking 70% progress
- Create SETUP.md with step-by-step instructions
- Create CHANGELOG.md with version history
- Create README.md as central navigation hub

All documentation ready for CI/CD implementation
2025-11-27 18:04:07 +01:00
Wuesteon
0ec0396238 Merge branch 'feature/cicd' into cicd/integration 2025-11-27 17:34:13 +01:00
Wuesteon
74dc6892ab first implementation 2025-11-27 17:26:18 +01:00
Till-JS
9e141191b1 fix(presi): fix TypeScript errors and add missing theme module
- Add ThemeModule with controller and service for theme management
- Fix Database type to properly infer Drizzle query types
- Fix page params type assertions for route parameters
- Fix Svelte class directive syntax for Tailwind dark mode classes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:54:21 +01:00
Till-JS
658ebe08fe docs(voxel-lava): add project documentation and env config
- Add CLAUDE.md with project overview, API endpoints, and setup guide
- Add voxel-lava environment variables to .env.development

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:46:57 +01:00
Till-JS
1c64359b18 feat(presi): add share deck feature for public presentation viewing
Add ability to create shareable links for presentations that can be
viewed without authentication. Includes backend share module with
NestJS controller/service and web app routes for creating/managing
share links and viewing shared decks.

- Add ShareModule with public GET endpoint and authenticated CRUD
- Add shareApi methods to web API client
- Add /shared/[code] route for public deck viewing
- Add Share button and modal to deck editor
- Update CLAUDE.md with new endpoints and features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:38:25 +01:00
Till-JS
607ca19d4a feat: integrate presi and voxel-lava into monorepo structure
- Add presi web app and CLAUDE.md documentation
- Restructure voxel-lava to apps/web pattern
- Add voxel-lava scripts to root package.json
- Update generate-env.mjs for presi configuration
- Update .env.development with new project variables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:33:28 +01:00
Till-JS
58a342b407 feat(reader): integrate reader app into monorepo structure
- Restructure to apps/reader/apps/mobile/ pattern
- Rename package to @reader/mobile
- Add reader:dev and dev:reader:mobile scripts
- Update CLAUDE.md with monorepo commands
- Remove standalone .git repository
- Convert from npm to pnpm

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:31:38 +01:00
Till-JS
5b1e12e5d6 feat: add new projects bauntown, presi, voxel-lava, whopixels
- apps/bauntown: Developer community website (Astro landing)
- apps/presi: Presentation project
- games/voxel-lava: Voxel lava game (SvelteKit)
- games/whopixels: Whopixels game

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:11:53 +01:00
Till-JS
d35ba768cf chore: add bauntown project to monorepo configuration
- Add bauntown to project list in CLAUDE.md
- Add bauntown dev scripts to package.json
- Update pnpm-lock.yaml with bauntown dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:10:15 +01:00
Till-JS
4f7052b0ca chore: add games folder structure to monorepo
- Create /games directory for game projects
- Update pnpm-workspace.yaml with games paths
- Update CLAUDE.md documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:06:59 +01:00
Till-JS
7abfc4c0b3 docs: add Hetzner deployment guide and update lockfile
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:47:35 +01:00
Till-JS
cc6ca028a7 chore(nutriphi): update config and type definitions
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:47:28 +01:00
Till-JS
c561c4c8d8 feat(picture): migrate from Supabase to NestJS backend API
- Migrate image generation from Supabase Edge Functions to NestJS
- Add profiles and image-likes schemas
- Refactor mobile auth context for backend API
- Update all mobile hooks and services for API integration
- Add Docker configuration for deployment
- Remove Supabase functions and migrations
- Add migration plan documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:47:23 +01:00
Till-JS
14aace00c2 feat(manadeck): migrate stores to backend API and remove audio features
- Refactor mobile stores to use backend API instead of Supabase direct
- Add card-progress and study-session repositories
- Expand API controller with progress tracking endpoints
- Remove AudioRecorder and AudioCard components
- Remove TTS service and Supabase direct access
- Update web stores for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:47:14 +01:00
Till-JS
cb5657579b feat(wisekeep): rename transcriber app to wisekeep
Rebranding the transcriber application to better reflect its purpose:
AI-powered wisdom extraction from video content.

Changes:
- Renamed folder: apps/transcriber → apps/wisekeep
- Updated all package names to @wisekeep/* namespace:
  - @wisekeep/backend
  - @wisekeep/web
  - @wisekeep/landing
  - @wisekeep/mobile
  - @wisekeep/shared-types
- Updated root package.json scripts:
  - wisekeep:dev, dev:wisekeep:backend, dev:wisekeep:web, etc.
- Updated documentation in CLAUDE.md files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:44:44 +01:00
Till-JS
ea3285dcbb feat(quote): integrate Quote app into monorepo
- Add complete Quote app with mobile (Expo), web (SvelteKit), landing (Astro), and backend (NestJS)
- Create NestJS backend with Drizzle ORM for PostgreSQL
- Add API endpoints for favorites and user lists
- Add database schema for favorites and user_lists tables
- Update root package.json with quote dev scripts
- Add Quote environment variables to generate-env.mjs
- Add missing toast.ts store for web app
- Configure hybrid content strategy (static + API)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:44:33 +01:00
Till-JS
3a8d6bcf94 feat(picture): migrate batch generation from Supabase to NestJS API
- Add BatchModule with controller, service, and DTOs
- Create batch_generations database schema and migration
- Add batch API client for mobile app
- Replace Supabase Realtime with polling in batchStore
- Implement full CRUD operations for batch generations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:44:01 +01:00
Till-JS
4b08c41547 feat(transcriber): Add YouTube transcriber app to monorepo
Integrate new transcriber application for AI-powered YouTube video
transcription with full monorepo structure and Groq Whisper API support.

## App Structure
- apps/transcriber/apps/backend - NestJS API server (port 3006)
- apps/transcriber/apps/web - SvelteKit web application
- apps/transcriber/apps/landing - Astro marketing/content site
- apps/transcriber/apps/mobile - Expo React Native app
- apps/transcriber/packages/shared-types - Shared TypeScript types

## Backend Features
- YouTube video download via yt-dlp (child_process)
- Ultra-fast transcription via Groq Whisper API (~300x realtime)
- Fallback to local Whisper for offline use
- Job queue with background processing
- Real-time progress updates via WebSocket (Socket.io)
- Playlist management for batch processing
- Health check endpoints

## API Endpoints
- POST /transcription - Start transcription job
- GET /transcription - List all jobs
- GET /transcription/:id - Get job status
- DELETE /transcription/:id - Cancel job
- GET /transcription/stats - Statistics
- GET /whisper/models - Available models
- GET/POST/DELETE /playlist - Playlist management
- GET /health - Health checks

## Whisper Models
- Groq: whisper-large-v3-turbo (fast, $0.04/hr)
- Groq: whisper-large-v3 (accurate, $0.111/hr)
- Local: tiny, base, small, medium, large

## Monorepo Integration
- Added to pnpm workspace via apps/*/apps/* pattern
- Root scripts: transcriber:dev, dev:transcriber:*
- Package naming: @transcriber/{backend,web,landing,mobile}
- Turbo tasks: dev, build, lint, type-check
- CLAUDE.md documentation

## Technology Stack
- Backend: NestJS 10, TypeScript, Socket.io
- Web: SvelteKit 2, Svelte 5, Tailwind CSS
- Landing: Astro 4, Solid.js, Tailwind CSS
- Mobile: Expo 52, React Native, NativeWind, Zustand
- Transcription: Groq Whisper API (OpenAI-compatible)

## Migration from Python
- Original Python/FastAPI code preserved in legacy/
- Full rewrite to TypeScript/NestJS
- Same functionality with improved architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:21:49 +01:00
Till-JS
98efa6f6e8 Feat: Refactor postgress 2025-11-27 02:25:37 +01:00
Till-JS
046a0e3fe7 Fix: Picture App envs 2025-11-26 17:26:07 +01:00
Wuesteon
c6b95ee8fb 🧑‍💻 chore: add build:packages script and auto-build on install 2025-11-26 14:02:48 +01:00
Wuesteon
5b7d6fadd9 fix env 2025-11-26 13:50:52 +01:00
Wuesteon
2328b8938c 🧑‍💻 chore: add centralized environment variable system
- Add .env.development as single source of truth for dev variables
- Create scripts/generate-env.mjs to generate app-specific .env files
- Add pnpm setup:env command (also runs on postinstall)
- Update turbo.json with globalEnv for cache invalidation
- Add comprehensive docs/ENVIRONMENT_VARIABLES.md
- Update CLAUDE.md with env setup instructions
2025-11-26 13:08:50 +01:00
Wuesteon
ff80aeec1f refactor: restructure
monorepo with apps/ and services/
  directories
2025-11-26 03:03:24 +01:00
Wuesteon
25824ed0ac make auth working 2025-11-26 01:31:12 +01:00
Wuesteon
7a1f1e9aef make auth working 2025-11-26 01:30:51 +01:00
Wuesteon
28d167a978 Merge branch 'feat/mana-core' 2025-11-25 18:57:32 +01:00
Wuesteon
754e87ebc0 add mana core 2025-11-25 18:56:35 +01:00
Till-JS
865d74ff37 Feat: Landingpages centralized, new app news integrated 2025-11-25 18:20:17 +01:00
Till-JS
36b85fc8a0 fix(picture): migrate to Astro 5.x content collections and fix TypeScript errors
- Rename dynamic routes from [slug].astro to [...slug].astro for multi-segment paths
- Replace deprecated entry.slug with entry.id across all components and utils
- Fix TypeScript implicit any types in TemplateFilters and prompt-templates
- Add proper type narrowing for feature.note in pricing page
- Remove unused marked import from FAQCard
- Delete invalid placeholder content files
- Add shared-landing-ui dependency and integrate StepsSection/PricingSection
- Update tailwind config with shared-landing-ui content paths
- Add global.css with Indigo/Violet dark theme variables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:13:57 +01:00
Till-JS
6537863696 feat(nutriphi): migrate from Supabase to PostgreSQL + Hetzner S3
- Add nutriphi-database package with Drizzle ORM
  - meals and nutrition_goals schemas
  - PostgreSQL 16 Docker setup
  - Drizzle Kit configuration

- Migrate backend from Supabase to Drizzle
  - Add DatabaseModule with connection pooling
  - Add StorageService for Hetzner Object Storage (S3-compatible)
  - Update MealsService with Drizzle queries
  - Add /api/meals/upload endpoint for image upload + analysis

- Update web app to use backend for uploads
  - Remove Supabase Storage direct upload
  - Update uploadService to send images to backend
  - Remove Supabase dependencies from package.json
  - Simplify hooks.server.ts

- Add Coolify deployment configuration
  - Dockerfile for production build
  - docker-compose.coolify.yml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 17:52:14 +01:00
Till-JS
ce71db2fc0 Feat: docs 2025-11-25 15:57:23 +01:00
Till-JS
9a84cc06d6 feat(chat): add SvelteKit web app with full feature parity to mobile
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>
2025-11-25 15:54:44 +01:00
Till-JS
ba3e0538b4 Feat: Overview doc 2025-11-25 13:49:00 +01:00
Till-JS
c638a7ffee feat(chat): integrate chat project into monorepo with full app structure
- Restructure chat as apps/mobile, apps/web, apps/landing, backend
- Add NestJS backend for secure Azure OpenAI API calls
- Remove exposed API key from mobile app (security fix)
- Add shared chat-types package
- Create SvelteKit web app scaffold
- Create Astro landing page scaffold
- Update pnpm workspace configuration
- Add project-level CLAUDE.md documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 13:48:24 +01:00
Till-JS
fcf3a344b1 Feat: New project chat, uload refactor (postgress), hosting plans, uload landingpage 2025-11-25 13:01:41 +01:00
Till-JS
559eb08d8c fix(uload): update Docker config and add env examples to apps/web
- Update Dockerfile for new apps/web structure
- Fix docker-compose.coolify.yml to use correct Dockerfile
- Add .env.example files to apps/web directory
- Remove local build artifacts (.svelte-kit, build)
- Update paraglide/i18n configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:02:52 +01:00
Till-JS
c712a2504a feat: integrate uload and picture, unify package naming
- Add uload project with apps/web structure
  - Reorganize from flat to monorepo structure
  - Remove PocketBase binary and local data
  - Update to pnpm and @uload/web namespace

- Add picture project to monorepo
  - Remove embedded git repository

- Unify all package names to @{project}/{app} schema:
  - @maerchenzauber/* (was @storyteller/*)
  - @manacore/* (was manacore-*, manacore)
  - @manadeck/* (was web, backend, manadeck)
  - @memoro/* (was memoro-web, landing, memoro)
  - @picture/* (already unified)
  - @uload/web

- Add convenient dev scripts for all apps:
  - pnpm dev:{project}:web
  - pnpm dev:{project}:landing
  - pnpm dev:{project}:mobile
  - pnpm dev:{project}:backend

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 04:00:36 +01:00
Till-JS
c6c4c5a552 feat(landing): add shared-landing-ui package and manadeck landing page
- Create @manacore/shared-landing-ui package with reusable components
  (FeatureSection, StepsSection, FAQSection, CTASection, Card atoms)
- Add complete landing page for manadeck app
- Refactor märchenzauber landing to use shared components
  (remove local CTA, FAQ, Features, HowItWorks sections)
- Add German localization for manacore and memoro landing pages
- Update workspace configuration and package dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 03:03:41 +01:00
Till-JS
4bdb5dea85 feat(manadeck): implement AI deck generation with Google Gemini
- 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>
2025-11-25 02:59:46 +01:00
Till-JS
be9df4aa85 feat(manadeck): complete Supabase removal from frontend and backend
- 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>
2025-11-25 02:49:34 +01:00
Till-JS
1530efa936 feat(manadeck): migrate backend from Supabase to PostgreSQL with Drizzle ORM
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>
2025-11-25 02:39:39 +01:00