etouch docs

Vue d'ensemble

Documentation technique de la plateforme etouch - SaaS B2B pour la retouche photo professionnelle

etouch est une plateforme SaaS B2B conçue pour les studios photo professionnels afin de gérer leurs workflows de retouche. Elle connecte studios, clients et retoucheurs dans un processus structuré : review, selection, retouch, validation, delivery.

Fiche technique

ProprieteValeur
TypeTurborepo Monorepo
LangageTypeScript
Node>= 20
Package Managerpnpm 10.4.1
Base de donneesPostgreSQL (Prisma ORM)
Cache / QueuesRedis (BullMQ)

Stack technique

Frontend (apps/web)

TechnologieVersionUsage
Next.js15.5.7Framework React avec App Router
React19.1.2Librairie UI
Tailwind CSS4.1.9Styling
Radix UIVariousComposants accessibles
TanStack Query5.90.3State management serveur
TanStack Table8.21.3Tables de donnees
react-hook-form7.65.0Gestion de formulaires
Framer Motion12.23.24Animations
next-intl4.3.12Internationalisation

Backend (apps/api)

TechnologieVersionUsage
Hono4.7.6Framework web
GraphQL Yoga5.12.0Serveur GraphQL
Prisma6.17.1ORM base de donnees
BullMQ5.42.0Files d'attente
Stripe20.0.0Paiements
Resend4.8.0Emails transactionnels
Pino9.5.0Logging
Sharp0.34.4Traitement d'images

Authentification et Securite

TechnologieVersionUsage
better-auth1.3.10-beta.6Authentification
Sentry10.22.0Suivi d'erreurs
Zod4.1.12Validation de schemas

Infrastructure

TechnologieUsage
Cloudflare R2Stockage objets
Cloudflare ImagesOptimisation d'images
RedisCache et queues
DockerConteneurisation

Structure du repository

etouch/
├── apps/
│   ├── api/              # Hono + GraphQL backend
│   ├── web/              # Next.js 15 frontend
│   ├── docs/             # Documentation Fumadocs
│   └── mobile/           # Application mobile (planifiee)
├── packages/
│   ├── auth/             # Utilitaires d'authentification
│   ├── config/           # Configuration partagee
│   ├── db/               # Schema Prisma et client
│   ├── email/            # Templates email (React Email)
│   ├── eslint-config/    # Config ESLint partagee
│   ├── sdk/              # SDK GraphQL pour le web
│   ├── shared/           # Utilitaires partages
│   ├── typescript-config/ # Config TypeScript partagee
│   ├── ui/               # Composants UI partages
│   └── workers/          # Workers BullMQ
├── docs/                 # Documentation markdown source
└── scripts/              # Scripts de build et maintenance

Types d'organisations

La plateforme supporte quatre types d'organisations :

  • PLATFORM -- Administrateurs systeme
  • STUDIO -- Studios photo (utilisateurs principaux)
  • CLIENT -- Clients des studios
  • RETOUCHER -- Retoucheurs professionnels

Etats du workflow

Les projets progressent a travers ces etats :

  1. STUDIO_REVIEW -- Upload et revue initiale
  2. CLIENT_REVIEW -- Selection client des photos
  3. SELECTION_CONFIRMATION -- Confirmation de la selection
  4. IN_RETOUCH -- Retouche en cours
  5. CLIENT_VALIDATION -- Approbation client des retouches
  6. DONE -- Projet termine
  7. ARCHIVED -- Projet archive

Entites principales

  • Organization -- Entreprises utilisant la plateforme (studios, clients, retoucheurs)
  • User -- Utilisateurs individuels avec appartenances multi-organisations
  • Project -- Projets de retouche photo assignes a des clients
  • Asset -- Fichiers individuels (photos/videos) dans les projets
  • GuidelineFile -- Guidelines de retouche avec specifications
  • Invoice / Payment -- Facturation via integration Stripe

Integrations externes

ServiceUsage
StripeTraitement des paiements, facturation
PennylaneIntegration comptable (import clients)
FTP ServersTransfert de fichiers pour retoucheurs externes
Cloudflare R2Stockage objets
Cloudflare ImagesTransformations d'images
ResendEmails transactionnels

Demarrage rapide

pnpm install
pnpm prisma:generate
pnpm dev
ComposantPoint d'entree
Web Appapps/web/app/layout.tsx
API Serverapps/api/src/index.ts
Schema DBpackages/db/prisma/schema.prisma
Schema GraphQLapps/api/src/graphql/schema.graphql