Démarrage du projet Remix & NestJS : structure et outils
Découvre l’architecture du projet, la stack technique, et la structure des dossiers côté frontend et backend.
Dans ce module Démarrage du projet Remix & NestJS : structure et outils, vous allez découvrir comment organiser et lancer votre application full-stack. Nous verrons la stack technique, l’architecture générale et la structure des dossiers pour le frontend (Remix) et le backend (NestJS). Vous serez ainsi prêt·e à coder en toute sérénité.
Stack technique
Ce projet s’appuie sur :
- Remix pour le rendu côté client et serveur.
- NestJS pour construire une API modulable et maintenable.
- TypeScript pour la robustesse du typage.
- Docker pour uniformiser les environnements.
- Socket.IO pour la communication temps réel.
- Stripe pour la gestion des paiements.
- AWS S3, cronjobs et email pour compléter les fonctionnalités backend.
Tip
Cette combinaison vous permet de monter en compétence sur une stack moderne, évolutive et pleine de bonnes pratiques.
Architecture du projet
Le projet est organisé en deux répertoires principaux à la racine :
1.2├── backend3│ ├── src4│ │ ├── auth5│ │ ├── chat6│ │ ├── socket7│ │ ├── stripe8│ │ └── user9│ ├── .env10│ ├── Dockerfile11│ └── tsconfig.json12└── frontend13├── app14│ ├── routes15│ ├── components16│ └── styles17├── remix.config.js18├── package.json19└── tsconfig.json
- backend/ contient votre API NestJS, organisée en modules (AuthModule, ChatModule, etc.).
- frontend/ contient votre app Remix, avec des loaders, des actions et des composants partagés.
Exemple de configuration NestJS
1import { Module } from '@nestjs/common';2import { ConfigModule } from '@nestjs/config';3import { AppGateway } from './app.gateway';4import { AuthModule } from './auth/auth.module';5import { ChatModule } from './chat/chat.module';6import { SocketModule } from './socket/socket.module';7import { StripeModule } from './stripe/stripe.module';8import { UserModule } from './user/user.module';910@Module({11imports: [12ConfigModule.forRoot({ isGlobal: true }),13UserModule,14AuthModule,15ChatModule,16SocketModule,17StripeModule,18],19providers: [AppGateway],20})21export class AppModule {}
Exemple de loader Remix
1export const loader = async ({ request }) => {2const user = await getOptionalUser({ request });3const env = envSchema.parse({4WEBSOCKET_URL: process.env.WEBSOCKET_URL ?? 'ws://localhost:8001',5});6return json({ user, env });7};
Note
Dès le démarrage, vous alignez vos configurations frontend et backend pour assurer une communication fluide (URLs, clés, sockets… )
Dans les sections qui suivent, nous décortiquerons chaque partie pour que vous sachiez :
- Mettre en place Docker et vos variables d’environnement.
- Naviguer et comprendre le monorepo.
- Configurer vos modules NestJS et vos routes Remix.
- Lancer votre projet en local et y connecter votre client.