- Frontend : React + TypeScript + Apollo Client
- Backend : Go + gqlgen (GraphQL server)
- Base de données : BoltDB (base embarquée, sans serveur)
client/ → Application React (TypeScript)
server/ → Serveur Go GraphQL
├── graph/ → Schéma, resolvers et modèles gqlgen
├── db/ → Gestion de BoltDB (ouverture, buckets, utils)
├── middlewares/ → Gestion des middlewares (jwt)
├── utils/ → Gestion de ressources utiles (jwt, password)
├── go.mod → Déclaration du module
└── server.go → Entrée principale du serveur
Le serveur GraphQL expose un unique endpoint :
http://localhost:6000/query
et un GraphQL Playground est disponible sur :
http://localhost:6000/
- React + Vite + TypeScript
- Apollo Client pour la communication GraphQL
- TailwindCSS (optionnel, pour le style rapide)
- React Router pour la navigation
- Go 1.25.0
- gqlgen pour la génération automatique du serveur GraphQL
- bbolt (fork officiel de BoltDB) pour la base de données embarqué
- uuid pour les identifiants uniques
- net/http pour l’exposition du serveur
- chi pour le routage avec authentification jwt
git clone https://github.com/Clele63/graphql-go.git
cd graphql-godocker compose up --build -d> Le serveur écoute sur http://localhost:6000 ou les ports suivants.
> Le client écoute sur http://localhost:3000 ou les ports suivants.
server/
│
├── graph/
│ ├── schema.graphqls # Définition du schéma GraphQL
│ ├── model/ # Types générés
│ ├── resolver.go # Injection des dépendances
│ ├── mutation_resolver.go
│ └── query_resolver.go
│
├── db/
│ └── db.go # Initialisation de BoltDB
│
└── server.go # Serveur principal
frontend/
│
├── src/
│ ├── apollo/
│ │ └── client.ts # Configuration Apollo Client
│ ├── components/
│ │ └── UserList.tsx # Exemple de requête GraphQL
│ ├── pages/
│ │ ├── Home.tsx
│ │ └── CreateUser.tsx
│ ├── App.tsx
│ └── main.tsx
│
├── index.html
└── package.json