Skip to content

kessa99/configPattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

TOUS les setups officiels 2025

  • NestJS + PostgreSQL / MongoDB / Vector DB
  • FastAPI + PostgreSQL / MongoDB / Vector DB
  • Django + PostgreSQL / MongoDB / Vector DB
  • Express (le tien actuel – déjà inclus pour comparaison)
# SETUP BACKEND 2025 – CHOIX MULTIPLES (NestJS / FastAPI / Django / Express)

> Togo – Novembre 2025 – Projet Edufia Hub  
> Objectif : avoir les meilleures configurations officielles pour chaque stack + PostgreSQL / MongoDB / Vector DB (Qdrant/PGVector)

## 1. NESTJS (TypeScript) – RECOMMANDÉ POUR EDUFIA

### Création du projet (officiel 2025)
```bash
npm i -g @nestjs/cli
nest new edufia-hub-nest --package-manager npm
cd edufia-hub-nest

# Ajouter Prisma + PostgreSQL
npm install prisma @prisma/client
npm install -D prisma
npx prisma init --datasource-provider postgresql

# OU MongoDB (Mongoose)
npm install @nestjs/mongoose mongoose

# OU Vector DB : PGVector (PostgreSQL) ou Qdrant
npm install pgvector @pgvector/sql
# ou
npm install @qdrant/js-client-core

Prisma + PostgreSQL (recommandé)

# .env
DATABASE_URL="postgresql://user:password@localhost:5432/edufia_hub?schema=public"

Prisma + MongoDB

DATABASE_URL="mongodb+srv://user:password@cluster0.mongodb.net/edufia_hub?retryWrites=true&w=majority"

Prisma + PGVector (recommandé pour RAG IA)

// schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Document {
  id        String   @id @default(cuid())
  content   String
  embedding Unsupported("vector(1536)")? // OpenAI = 1536, Cohere = 1024
}

Docker Compose complet (NestJS + PostgreSQL + PGVector + Qdrant + Redis)

# docker-compose.yml
version: '3.9'
services:
  postgres:
    image: pgvector/pgvector:pg16
    environment:
      POSTGRES_DB: edufia_hub
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    ports: ["5432:5432"]
    volumes: ["pgdata:/var/lib/postgresql/data"]

  qdrant:
    image: qdrant/qdrant:latest
    ports: ["6333:6333"]

  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]

volumes:
  pgdata:

Liens officiels NestJS 2025


2. FASTAPI (Python) – Ultra-rapide & moderne

Création du projet

pip install fastapi uvicorn python-dotenv sqlalchemy asyncpg psycopg2-binary
# ou MongoDB
pip install motor pymongo
# ou Qdrant
pip install qdrant-client

PostgreSQL + SQLAlchemy + async

DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/edufia_hub

MongoDB + Motor

DATABASE_URL=mongodb+srv://user:password@cluster0.mongodb.net/edufia_hub

Vector DB – Qdrant (le plus simple avec FastAPI)

from qdrant_client import QdrantClient
client = QdrantClient(url="http://localhost:6333")

Liens officiels FastAPI 2025


3. DJANGO (Python) – Admin intégré, très solide

Création du projet

pip install django djangorestframework psycopg2-binary
django-admin startproject edufia_hub
cd edufia_hub
python manage.py startapp api

PostgreSQL (settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'edufia_hub',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

MongoDB (avec Djongo ou MongoEngine)

pip install djongo
# puis ENGINE: 'djongo'

Vector DB – PGVector dans Django

pip install django-postgres-extensions
# puis dans models.py : from postgres_extensions import VectorField

Liens officiels Django 2025


4. EXPRESS (Node.js + TypeScript) – Ton choix actuel

Tu as déjà la commande complète plus haut.
Voici juste le résumé :

npm init -y
npm install express prisma @prisma/client socket.io argon2 jsonwebtoken helmet cors express-rate-limit
npm install -D typescript ts-node-dev jest supertest @types/express
npx prisma init --datasource-provider postgresql

Liens officiels Express + Clean Architecture

## 5. EXPRESS PUR (JavaScript – sans TypeScript) – Pour les équipes 100 % JavaScript ou débutants

Parfois tu veux juste du JS simple, rapide, sans compilation.  
Voici la config **pro 2025** (même sécurité, même scaling, même Prisma).

### Création du projet (tout en JavaScript)
```bash
mkdir edufia-hub-express-js && cd edufia-hub-express-js
npm init -y

# Dépendances principales (tout en JS)
npm install express cors helmet dotenv jsonwebtoken bcryptjs argon2 socket.io prisma @prisma/client express-rate-limit redis @socket.io/redis-adapter

# Dépendances dev
npm install -D jest supertest nodemon prisma swagger-ui-express swagger-jsdoc

# Initialise Prisma (PostgreSQL)
npx prisma init --datasource-provider postgresql

Structure de dossiers (même Clean Architecture, mais en .js)

mkdir -p src/{config,core/{entities,use-cases,repositories},infrastructure/{database/repositories,websocket/events},interfaces/{http/controllers,http/routes,websocket},middlewares,utils}

Fichiers essentiels (tout en JavaScript)

src/config/env.js

require('dotenv').config();

module.exports = {
  PORT: process.env.PORT || 5000,
  DATABASE_URL: process.env.DATABASE_URL,
  JWT_SECRET: process.env.JWT_SECRET || 'edufia_secret_2025_change_me',
  NODE_ENV: process.env.NODE_ENV || 'development',
  REDIS_URL: process.env.REDIS_URL
};

src/config/database.js

const { PrismaClient } = require('@prisma/client');

const globalForPrisma = global;
const prisma = globalForPrisma.prisma || new PrismaClient();

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;

module.exports = { prisma };

src/app.js

const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const { applySecurity } = require('./middlewares/security');

const app = express();
applySecurity(app);

app.use(express.json({ limit: '500kb' }));
app.use(express.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.json({ message: 'Edufia Hub API – JavaScript Edition 2025' });
});

module.exports = app;

src/server.js

const app = require('./app');
const http = require('http');
const { initSocketIO } = require('./config/socket.io');
const { PORT } = require('./config/env');

const server = http.createServer(app);
initSocketIO(server);

server.listen(PORT, () => {
  console.log(`Edufia JS Backend lancé → http://localhost:${PORT}`);
  console.log(`WebSocket prêt`);
});

package.json – scripts JS

"scripts": {
  "dev": "nodemon src/server.js",
  "start": "node src/server.js",
  "prisma:dev": "prisma migrate dev",
  "prisma:generate": "prisma generate",
  "test": "jest",
  "test:watch": "jest --watch"
}

.env (identique)

PORT=5000
DATABASE_URL="postgresql://user:password@localhost:5432/edufia_hub?schema=public"
JWT_SECRET=edufia_super_secret_js_2025
NODE_ENV=development
REDIS_URL="redis://default:password@localhost:6379"

Lancement

npx prisma generate
npm run dev

Liens officiels Express JS (sans TS) 2025

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors