Skip to content

ikastner/morpheus-builder

Repository files navigation

my-ai-app-builder

Monorepo npm workspaces pour l’application mobile (Expo) et les packages partagés.

Prérequis

  • Node.js : LTS recommandé par la SDK Expo utilisée (SDK 55 — vérifier la doc Expo pour la version minimale ; ce dépôt cible Node ≥ 20.19 dans package.jsonengines).
  • npm (workspaces natifs ; pas de pnpm dans ce dépôt).

Installation

À la racine du dépôt :

npm install

Les dépendances des workspaces apps/* et packages/* sont installées depuis la racine.

Lancer l’app mobile

npm run mobile

Équivalent :

cd apps/mobile && npx expo start

Puis choisir une plateforme (simulateur iOS, émulateur Android, appareil, web).

Builds natifs (expo run:ios / expo run:android)

Ne pas exécuter npx expo … depuis la racine du monorepo : le répertoire projet serait incorrect, Metro pourrait charger l’entrée par défaut expo/AppEntry.js (fichier App.tsx à la racine) au lieu d’Expo Router (expo-router/entry dans apps/mobile), et des dossiers ios/ / android/ pourraient être créés au mauvais endroit.

À utiliser :

npm run ios
# ou
cd apps/mobile && npx expo run:ios

Pour Android : npm run android ou cd apps/mobile && npx expo run:android.

Les projets natifs générés par expo prebuild doivent vivre sous apps/mobile/ios et apps/mobile/android (pas à la racine du repo).

Sans Expo Go (rapide) — lancer uniquement le navigateur :

npm run mobile:web

« Project is incompatible with this version of Expo Go » (SDK 55)

Ce projet utilise Expo SDK 55. Pendant une période de transition, l’Expo Go du Play Store / App Store peut rester sur une SDK plus ancienne (souvent 54). Une appli en SDK 55 n’est alors pas compatible avec l’Expo Go « grand public » du magasin — d’où l’erreur requires a newer version of Expo Go.

Pistes de contournement :

  1. Web : npm run mobile:web (ou npm run mobile puis touche w) — pas besoin d’Expo Go.
  2. Simulateur iOS / émulateur Android : depuis le terminal Expo, i ou a — l’outil installe ou utilise un client adapté au projet quand c’est possible.
  3. Téléphone physique — Android : installer Expo Go pour SDK 55 comme indiqué par la changelog SDK 55 (installation possible via Expo CLI sur l’appareil ; suivre les instructions affichées par expo start ou la doc Expo du moment).
  4. Téléphone physique — iOS : bêta TestFlight Expo Go SDK 55 — lien public indiqué dans la même changelog (section Transition period for default projects and Expo Go), ou commande eas go si vous avez un compte EAS.
  5. Cible long terme : un development build (recommandé par Expo pour du sérieux hors démo).

Vérifier aussi que l’app Expo Go sur le téléphone est à jour (mise à jour du magasin) avant de tester le QR code — mais seule une version SDK 55 convient tant que les stores n’ont pas basculé.

API & base de données (interview)

  • apps/api : API Fastify + Drizzle + PostgreSQL (/health avec test SQL, /v1/interview-sessions, création + reprise, POST /v1/interview-sessions/:id/turn (branche B), POST /v1/interview-sessions/:id/assistant-streamSSE text/event-stream pour la réponse assistant simulée).
  • PostgreSQL local : docker compose up -d (service postgres, base myai, utilisateur/mot de passe postgres / postgres, port hôte 5434 — voir .env.example si 5432 est déjà utilisé).
  • Copier .env.example.env à la racine ; définir ALLOWED_ORIGINS (liste d’origines CORS pour les tests navigateur / Expo Web — séparateur virgule). Les builds React Native sans en-tête Origin ne sont pas bloqués par cette liste.
  • Pour le mobile, copier apps/mobile/.env.exampleapps/mobile/.env et définir EXPO_PUBLIC_API_URL (ex. http://127.0.0.1:3000 pour simulateur iOS / web ; émulateur Android souvent http://10.0.2.2:3000).
  • Migrations : npm run db:migrate -w @my-ai-app-builder/api (nécessite DATABASE_URL et PostgreSQL joignable).
  • Lancer l’API : npm run api (équivalent npm run dev -w @my-ai-app-builder/api).

Structure des dossiers

Emplacement Rôle
apps/mobile Application Expo avec Expo Router (src/app/).
apps/api API REST v1, sessions interview, persistance Drizzle.
packages/shared Schémas Zod, types partagés mobile/API.
packages/ui-modules Composants UI modulaires — placeholder. NativeWind sera intégré dans une story ultérieure (Epic 2), pas dans ce bootstrap.

Orchestration : Turborepo (turbo.json) pour les tâches multi-packages (build, lint, etc.).

Vérification rapide

npm test

Exécute une vérification structurelle du monorepo (scripts/verify-monorepo.mjs) et les tests unitaires de packages/shared (ex. schémas Zod).

Documentation produit / architecture

Les artefacts BMad (PRD, architecture, stories) sont sous _bmad-output/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors