Application de gestion de tâches inspirée de Trello / Kanban développée dans le cadre de ma formation.
Le projet est une SPA avec API REST permettant de gérer :
Une fonctionnalité supplémentaire permet d'utiliser l'IA (Mistral API) pour corriger ou traduire le contenu des cartes.
⚠️ Le projet fonctionne parfaitement sans Mistral.
La clé API est seulement nécessaire pour les fonctionnalités IA.
/auth/me)adminuserLes cartes peuvent être améliorées avec Mistral AI :
⚠️ Cette fonctionnalité nécessite une clé API Mistral.
okanban
│
├── api # Backend API (Node.js / Express)
│ ├── controllers # Logique métier des routes
│ ├── middlewares # Middlewares (auth, validation, sécurité)
│ ├── migrations # Migrations Sequelize
│ ├── models # Modèles Sequelize
│ ├── routes # Routes de l'API
│ ├── tests # Tests backend
│ ├── utils # Fonctions utilitaires
│ │
│ ├── app.js # Point d'entrée de l'application API
│ ├── Dockerfile.api # Dockerfile pour le backend
│ ├── eslint.config.js # Configuration ESLint
│ ├── .env.example # Variables d'environnement exemple
│ └── package.json
│
├── client # Frontend SPA (Svelte + Vite)
│ ├── public # Assets statiques
│ ├── src # Code source de l'application
│ │
│ ├── index.html
│ ├── svelte.config.js
│ ├── vite.config.js
│ ├── Dockerfile.cli # Dockerfile pour le frontend
│ ├── .env.example
│ └── package.json
│
├── Dockerfile.database # Dockerfile pour PostgreSQL
├── docker-compose.yml # Orchestration des conteneurs
├── .database.docker.env # Variables d'environnement base de données
├── .dockerignore
├── package.json # Scripts globaux du projet
└── README.md
git clone https://github.com/ton-username/okanban-docker.git
cd okanban
Créer un fichier .env dans le dossier api :
# Base de données
POSTGRES_USER=okanban
POSTGRES_PASSWORD=okanban
POSTGRES_DB=okanban
# API
PG_URL=postgres://okanban:okanban@db:5432/okanban
JWT_SECRET=secret
# Mistral (optionnel)
MISTRAL_API_KEY=
MISTRAL_MODEL=mistral-small-latest
MISTRAL_BASE_URL=https://api.mistral.ai/v1/chat/completions
⚠️ Si MISTRAL_API_KEY est vide, les fonctionnalités IA seront désactivées.
Créer un fichier .env dans le dossier client :
VITE_API_URL=http://localhost:3000
docker compose up --build -d
Frontend :
http://localhost:4173
API :
http://localhost:3000
docker exec -it okanban-api sh
npm run db:create
npm run db:seed
exit
| username | password | role |
|---|---|---|
| Alice | Passw0rd | admin |
| Bob | Passw0rd | user |
L'application peut être déployée sur un serveur distant grâce à Docker et Docker Hub.
Depuis la racine du projet :
docker compose build
Lister les images :
docker images
Créer un compte sur :
https://hub.docker.com
Puis se connecter :
docker login
Remplacer username par votre identifiant Docker Hub.
docker tag okanban-docker-api username/okanban-api
docker tag okanban-docker-client username/okanban-cli
docker push username/okanban-api
docker push username/okanban-cli
ssh user@server-ip
sudo apt update
sudo apt install docker.io docker-compose-plugin
docker pull username/okanban-api
docker pull username/okanban-cli
docker-compose.yml sur le serveurservices:
api:
image: username/okanban-api
ports:
- "3000:3000"
depends_on:
- db
client:
image: username/okanban-cli
ports:
- "4173:4173"
depends_on:
- api
db:
image: postgres:17-alpine
environment:
POSTGRES_USER: okanban
POSTGRES_PASSWORD: okanban
POSTGRES_DB: okanban
docker compose up -d
L'application sera accessible via :
http://server-ip:4173
1️⃣ Créer un compte :
https://console.mistral.ai
2️⃣ Générer une clé API
3️⃣ Ajouter dans .env :
MISTRAL_API_KEY=sk-xxxxxxxxxxxx
4️⃣ Relancer Docker :
docker compose down
docker compose up --build
POST /auth/login
{
"username": "Alice",
"password": "Passw0rd"
}
GET /auth/me
POST /spellcheck
argon2)Joi)Le projet utilise Docker Compose pour lancer :
services:
- db
- api
- client
Ce projet a été réalisé pour :
Auteur Charly Lamena
Projet pédagogique.