Skip to content

rocambille/start-express-react

GitHub tag License Issues - start-express-react

StartER - Un framework Express + React complet et lisible

Framework React + Express pensé pour le prototypage rapide et l’apprentissage.
Conçu pour être compris avant tout, et facilement adaptable grâce à un système de clonage de modules.

⭐️ Si vous trouvez ce projet utile, laissez une étoile pour soutenir le projet ! GitHub Stars

Use this template

Read the manual

Vue d'ensemble

StartER est un starter full-stack combinant Express (backend) et React (frontend) dans un seul projet cohérent. Il est conçu à la fois comme un outil pédagogique et comme une base de production solide pour prototyper rapidement des applications web modernes.

Technologies incluses

Côté serveur et client

  • Express : framework minimaliste pour créer des serveurs web et des API avec Node.js.
  • React : bibliothèque JavaScript pour construire des interfaces utilisateur interactives et modulaires.

Outils et écosystème

Dans l'ordre alphabétique (liste non exhaustive) :

  • Biome : linter, formateur et analyseur statique performant pour garantir un code propre.
  • Docker : conteneurisation pour des environnements de développement et de déploiement reproductibles.
  • MySQL : système de gestion de bases de données relationnelles.
  • Pico CSS : kit CSS minimaliste et sémantique.
  • React Router (Mode Data) : gestionnaire de routes pour React.
  • TypeScript : superset de JavaScript ajoutant des types statiques.
  • Vite : outil de build rapide pour le développement et la production.
  • Vitest : framework de test intégré à Vite.
  • Zod : validation et typage de schémas TypeScript.

Installation et utilisation

Une documentation complète est disponible dans le wiki du projet.

Pour débuter, consultez les pages principales :

Structure des fichiers sources

.
├── .env
├── .env.sample
├── compose.yaml
├── compose.prod.yaml
├── Dockerfile
├── index.html
├── server.ts
└── src
    ├── database
    │   └── schema.sql
    ├── express
    │   ├── routes.ts
    │   └── modules
    │       └── ...
    ├── react
    │   ├── routes.tsx
    │   └── components
    │       └── ...
    └── types
        └── index.d.ts

Commandes de base

Commande Description
docker compose up --build Build et démarre les services (ajouter -d pour démarrer en mode détaché).
docker compose -f compose.prod.yaml up --build -d Build et démarre l'application en mode production.
docker compose logs -t Affiche les logs avec timestamps.
docker compose run --build --rm server npm run database:sync Synchronise la base de données avec src/database/schema.sql (-- --use-seeder pour remplir la base de données avec src/database/seeder.sql).
docker compose run --build --rm server npm run test Exécute les tests.
npm run biome:check Contrôle la qualité du code avec Biome (exécuté en pre-commit).
npm run types:check Contrôle la cohérence des types TypeScript (exécuté en pre-commit).
npm run make:clone <source> <destination> <OldName> <NewName> Clone un module ou un fichier en renommant automatiquement les identifiants.
npm run make:purge Supprime les modules par défaut (-- --keep-auth pour conserver user et auth).

REST cheatsheet

StartER repose sur une architecture RESTful, où chaque ressource (par exemple items ou users) expose un ensemble d'endpoints structurés autour des opérations CRUD/BREAD classiques :

  • Browse : parcourir toutes les ressources
  • Read : lire une ressource spécifique
  • Add : créer une nouvelle ressource
  • Edit : modifier une ressource existante
  • Destroy : supprimer une ressource

Ce tableau récapitule les conventions utilisées dans les modules Express du projet (comme itemRoutes), les méthodes HTTP associées et les réponses attendues. Il sert de référence rapide lorsque vous développez vos propres modules ou testez vos API.

Opération Méthode Chemin d'URL Corps de la requête SQL Réponse (succès) Réponse (erreur)
Browse GET /api/items SELECT 200 (OK), liste des items.
Read GET /api/items/:id SELECT 200 (OK), un item. 404 (Not Found), si id invalide.
Add POST /api/items Données de l'item INSERT 201 (Created), id d'insertion. 400 (Bad Request), si corps invalide.
Edit PUT /api/items/:id Données de l'item UPDATE 204 (No Content). 400 (Bad Request), si corps invalide ; 404 (Not Found), si id invalide.
Destroy DELETE /api/items/:id DELETE 204 (No Content).

Licence

Ce projet est distribué sous licence MIT. Vous êtes libre de l'utiliser, le modifier et le redistribuer à des fins éducatives ou professionnelles.

About

Educational Express-React framework for intermediate developers. ⭐️ Add a star to support the project!

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 6

Languages