Guides
Guide de developpement
Setup local, commandes, workflows de developpement et structure du projet etouch
Prerequisites
| Requirement | Version |
|---|---|
| Node.js | >= 20 |
| pnpm | 10.4.1 |
| PostgreSQL | 14+ |
| Redis | 6+ |
Installation
1. Cloner et installer
git clone <repo-url>
cd etouch
pnpm install2. Configuration de l'environnement
cp .env.example .envVariables requises :
# Base de donnees
DATABASE_URL="postgresql://user:password@localhost:5432/etouch"
# Redis
REDIS_URL="redis://localhost:6379"
# Authentification
AUTH_JWT_SECRET="your-jwt-secret"
BETTER_AUTH_SECRET="your-auth-secret"
# URLs
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
NEXT_PUBLIC_API_URL="http://localhost:4000"
AUTH_BASE_URL="http://localhost:4000/api/auth"3. Setup de la base de donnees
# Generer le client Prisma
pnpm prisma:generate
# Appliquer les migrations
pnpm prisma:migrate
# (Optionnel) Ouvrir Prisma Studio
pnpm prisma:studio4. Lancer le developpement
# Demarrer toutes les apps
pnpm dev
# Ou des apps specifiques
pnpm --filter @etouch/web dev # Frontend uniquement
pnpm --filter @etouch/api dev # Backend uniquementPorts par defaut :
- Web : http://localhost:3000
- API : http://localhost:4000
- GraphiQL : http://localhost:4000/graphql (dev uniquement)
- Docs : http://localhost:3002
Commandes disponibles
Racine du monorepo
| Commande | Description |
|---|---|
pnpm dev | Demarrer toutes les apps en dev |
pnpm build | Builder tous les packages et apps |
pnpm lint | Linter tous les packages |
pnpm test | Lancer tous les tests |
pnpm typecheck | Verification TypeScript |
pnpm format | Formater avec Prettier |
Base de donnees
| Commande | Description |
|---|---|
pnpm prisma:generate | Generer le client Prisma |
pnpm prisma:migrate | Deployer les migrations |
pnpm prisma:studio | Ouvrir Prisma Studio |
pnpm prisma:seed | Peupler la base |
pnpm prisma:status | Verifier les migrations |
Scripts de production
| Commande | Description |
|---|---|
pnpm db:backup | Creer un backup |
pnpm db:backup:pre-deploy | Backup avant deploiement |
pnpm db:restore | Restaurer depuis un backup |
pnpm db:restore:latest | Restaurer le dernier backup |
pnpm db:migrate:safe | Migration securisee avec backup |
pnpm db:status | Statut de la base |
Workers
pnpm workers:dev # Mode developpement
pnpm workers:start # ProductionStructure du projet
etouch/
├── apps/
│ ├── api/ # Backend API
│ │ ├── src/
│ │ │ ├── graphql/ # Schema et resolvers GraphQL
│ │ │ ├── routes/ # Endpoints REST
│ │ │ ├── services/ # Logique metier
│ │ │ └── index.ts # Point d'entree
│ │ └── package.json
│ ├── web/ # Frontend
│ │ ├── app/ # Next.js App Router
│ │ ├── components/ # Composants React
│ │ ├── hooks/ # Hooks personnalises
│ │ ├── lib/ # Utilitaires
│ │ └── package.json
│ └── docs/ # Documentation
├── packages/
│ ├── db/ # Schema Prisma
│ ├── sdk/ # SDK GraphQL
│ └── ... # Autres packages
└── scripts/ # Scripts de buildWorkflows de developpement
Ajouter une nouvelle feature
-
Changements base de donnees (si necessaire) :
# Editer packages/db/prisma/schema.prisma pnpm --filter @etouch/db db:migrate:dev --name feature_name -
Changements API :
- Ajouter les types dans
apps/api/src/graphql/schema.graphql - Ajouter les resolvers dans
apps/api/src/graphql/resolvers.ts - Regenerer le SDK :
pnpm graphql:codegen
- Ajouter les types dans
-
Changements frontend :
- Utiliser les types generes depuis
@etouch/sdk - Ajouter les composants dans
apps/web/components/ - Ajouter les pages dans
apps/web/app/[locale]/
- Utiliser les types generes depuis
Developpement GraphQL
Apres modification de schema.graphql :
pnpm graphql:codegenCela regenere packages/sdk/src/graphql.generated.ts.
Tests
# Tous les tests
pnpm test
# Avec couverture
pnpm test:coverage
# Tests E2E (web app)
pnpm --filter @etouch/web test:e2eStyle de code
- Formatage : Prettier (
pnpm format) - Linting : ESLint avec config partagee
- Commits : Conventional commits (via commitlint)
- TypeScript : Mode strict active
Troubleshooting
Problemes avec Prisma Client
pnpm prisma:generate
pnpm --filter @etouch/db buildProblemes de dependances
pnpm clean
pnpm install
pnpm buildPort deja utilise
lsof -i :3000 # Web
lsof -i :4000 # API
lsof -i :3002 # Docs