5ème version du site web familial Absolument G. Cette version se base côté serveur sur Node.js 20 LTS avec Express et TypeORM, une base de données PostgreSQL 16 avec PostGIS 3.4, et un client web PWA utilisant Vue 3, Pinia, Vuetify 3 et Vite.
Le projet a été entièrement migré vers des technologies modernes :
- ✅ Backend: Node.js 20 LTS, TypeScript 5, TypeORM 0.3, PostgreSQL 16
- ✅ Frontend: Vue 3, Pinia, Vuetify 3, Vite
- ✅ Tests: Vitest avec 63 tests unitaires
- ✅ Sécurité: Audit complet, 0 vulnérabilités critiques/high
- ✅ Performance: Build 10x plus rapide avec Vite
Voir MIGRATION_GUIDE.md pour les détails.
AbsG5 est une plateforme web familiale complète offrant :
- 👥 Gestion des utilisateurs et authentification sécurisée
- 📸 Galerie photos avec albums et métadonnées
- 💬 Forum de discussion
- 🏆 AGPA (concours photo annuel)
- 📅 Agenda et événements
- 📚 Bibliothèque (GThèque)
- 💭 Citations
- 🔔 Notifications en temps réel (WebSocket)
- Runtime: Node.js 20.x LTS
- Language: TypeScript 5.x
- Framework: Express 4.19.x
- ORM: TypeORM 0.3.x
- Database: PostgreSQL 16.x + PostGIS 3.4.x
- Authentication: JWT (jsonwebtoken 9.x) + bcrypt 5.x
- Security: helmet, rate-limit, CORS
- WebSocket: ws 8.18.x
- Testing: Vitest 4.x
- Framework: Vue 3.4.x
- State Management: Pinia 2.x
- Router: Vue Router 4.x
- UI Framework: Vuetify 3.5.x
- Build Tool: Vite 5.x
- HTTP Client: axios 1.7.x
- Rich Text: TipTap (Vue 3)
- Charts: Highcharts
- Testing: Vitest 4.x + Vue Test Utils
- Node.js 20.x LTS
- PostgreSQL 16.x avec PostGIS 3.4.x
- npm ou yarn
- Git
git clone https://github.com/ikit/AbsG5.git
cd AbsG5cd absg-core
# Installer les dépendances
npm install
# Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos paramètres
# Créer la base de données
createdb -U postgres absg5
psql -U postgres -d absg5 -c "CREATE EXTENSION postgis;"
# Lancer les migrations
npm run migration:run
# Démarrer le serveur
npm run dev # Développement
npm start # Productioncd absg-client
# Installer les dépendances
npm install
# Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos paramètres
# Démarrer le serveur de développement
npm run dev
# Build pour production
npm run build# Backend
cd absg-core
npm test # Watch mode
npm run test:run # Single run
npm run test:coverage # Avec coverage
# Frontend
cd absg-client
npm test # Watch mode
npm run test:run # Single run
npm run test:coverage # Avec coverage# Database
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_DATABASE=absg5
# Server
PORT=3000
NODE_ENV=development
# Security
JWT_SECRET=your_jwt_secret_here
BCRYPT_ROUNDS=10
# CORS
CORS_ORIGIN=http://localhost:5173
# Files
PATH_FILES=./data/files# API
VITE_API_URL=http://localhost:3000
# WebSocket
VITE_WS_URL=ws://localhost:3000# Build images
docker-compose build
# Démarrer les services
docker-compose up -d
# Vérifier les logs
docker-compose logs -f# Backend
cd absg-core
pm2 start npm --name "absg-api" -- start
# Frontend (après build)
cd absg-client
npm run build
# Servir avec nginx ou autre serveur web# Frontend
server {
listen 80;
server_name absolumentg.fr;
root /var/www/absg5/client/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}npm run dev- Serveur de développement avec hot-reloadnpm start- Serveur de productionnpm test- Tests en mode watchnpm run test:run- Tests en mode single runnpm run build- Compile TypeScriptnpm run migration:generate- Génère une migrationnpm run migration:run- Exécute les migrations
npm run dev- Serveur de développement Vitenpm run build- Build de productionnpm run preview- Preview du buildnpm test- Tests en mode watchnpm run test:run- Tests en mode single runnpm run lint- Lint du code
- Guide de Migration - Migration Vue 2 → Vue 3
- Audit de Sécurité - Rapport de sécurité
- Tests de Performance - Guide de performance
- Checklist de Tests - Tests manuels
- Backend README - Documentation backend
- Frontend README - Documentation frontend
AbsG5/
├── absg-core/ # Backend Node.js + TypeScript
│ ├── src/
│ │ ├── controllers/ # API endpoints
│ │ ├── entities/ # TypeORM entities
│ │ ├── services/ # Business logic
│ │ ├── middleware/ # Express middleware
│ │ └── api.ts # Main entry point
│ └── test/ # Tests backend
│
├── absg-client/ # Frontend Vue 3 + Vite
│ ├── src/
│ │ ├── views/ # Page components
│ │ ├── components/ # Reusable components
│ │ ├── stores/ # Pinia stores
│ │ ├── router/ # Vue Router
│ │ └── main.js # Main entry point
│ └── test/ # Tests frontend
│
├── docs/ # Documentation
├── install/ # Scripts d'installation
└── scripts/ # Scripts utilitaires
- Fork le projet
- Créer une branche (
git checkout -b feature/amazing-feature) - Commit les changements (
git commit -m 'Add amazing feature') - Push vers la branche (
git push origin feature/amazing-feature) - Ouvrir une Pull Request
- Backend: TypeScript strict mode, ESLint
- Frontend: Vue 3 Composition API (optionnel), ESLint
- Tests: Vitest, minimum 80% coverage pour nouveau code
- Commits: Conventional Commits (feat:, fix:, docs:, etc.)
- ✅ Authentification JWT sécurisée
- ✅ Mots de passe hashés avec bcrypt (rounds: 10)
- ✅ Headers de sécurité (helmet)
- ✅ Rate limiting (100 req/15min)
- ✅ CORS configuré
- ✅ Validation des entrées
- ✅ Protection CSRF
- ✅ Audit régulier des dépendances
Voir SECURITY_AUDIT.md pour plus de détails.
- ⚡ Vite: Build 10x plus rapide que Webpack
- ⚡ Vue 3: Rendu 2x plus rapide que Vue 2
- ⚡ Pinia: Plus léger que Vuex
- ⚡ PostgreSQL 16: Améliorations de performance
- ⚡ Node.js 20: V8 engine optimisé
Ce projet est sous licence privée - voir le fichier LICENSE pour plus de détails.
- Olivier Gueudelot - Développeur principal - ikit
- La famille Absolument G pour le soutien et les tests
- La communauté Vue.js pour les excellents outils
- Tous les contributeurs open-source
Version: 5.2.0
Dernière mise à jour: Novembre 2025
Status: ✅ Production Ready