Plateforme collaborative pour l'entraide et les échanges locaux, axée sur le jardinage, la permaculture et la vie durable.
- Frontend: Next.js 15 + React 19 + TypeScript
- Backend: FastAPI + Python 3.12
- Base de données: PostgreSQL avec AsyncPG
- Authentification: JWT
- IA: OpenAI Integration pour conseils personnalisés
- Déploiement: Render (fullstack)
- Monitoring: Sentry + Prometheus metrics
- Node.js 20+
- Python 3.12+
- PostgreSQL 15+
- Git
# 1. Cloner le repository
git clone https://github.com/vidaluca77-cloud/LaVidaLuca-App.git
cd LaVidaLuca-App
# 2. Configuration environnement
cp .env.example .env
cp apps/backend/.env.example apps/backend/.env
cp apps/web/.env.local.example apps/web/.env.local
# 3. Installer les dépendances
npm run setup
# 4. Configurer la base de données
createdb lavidaluca_dev
cd apps/backend
python -m alembic upgrade head
# 5. Lancer l'application complète
npm run dev:fullcd apps/backend
pip install -r requirements.txt
cp .env.example .env
# Configurer DATABASE_URL dans .env
uvicorn app_simple:app --reload --host 0.0.0.0 --port 8000cd apps/web
npm install
cp .env.local.example .env.local
# Configurer NEXT_PUBLIC_API_URL dans .env.local
npm run devGET /- Informations de l'APIPOST /api/v1/guide- Assistant IA pour conseils jardinage/permacultureGET /docs- Documentation Swagger
POST /api/v1/auth/register- Inscription utilisateurPOST /api/v1/auth/login- ConnexionPOST /api/v1/auth/refresh- Renouvellement token
POST /api/v1/guide- Conseils personnalisés IAGET /api/v1/guide/health- Statut service guide
GET /api/v1/users/me- Profil utilisateurPUT /api/v1/users/me- Mise à jour profil
GET /api/v1/activities- Liste des activitésPOST /api/v1/activities- Créer une activitéGET /api/v1/activities/{id}- Détails activité
POST /api/v1/contacts- Formulaire de contactPOST /api/v1/suggestions- Proposer une amélioration
cd apps/backend
pytest tests/ -v
pytest tests/ --cov=. --cov-report=html # Avec couverturecd apps/web
npm run test
npm run test:coverageVisitez http://localhost:3000/test-ia pour tester l'endpoint /guide avec une interface utilisateur.
Le déploiement est automatisé via GitHub Actions :
Dans les settings GitHub du repository, configurer :
RENDER_DEPLOY_HOOK_BACKEND: URL de déploiement Render backend
RENDER_DEPLOY_HOOK_FRONTEND: URL de déploiement Render frontend
-
Push sur
maindéclenche automatiquement :- Tests backend avec PostgreSQL
- Build frontend
- Tests d'intégration
- Déploiement backend sur Render
- Déploiement frontend sur Render
-
Pull Requests exécutent les tests CI sans déploiement
ENVIRONMENT=development|production
DATABASE_URL=postgresql+asyncpg://user:pass@host:port/db
JWT_SECRET_KEY=your-secret-key
OPENAI_API_KEY=your-openai-key
CORS_ORIGINS=http://localhost:3000,https://yourdomain.comNEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
NEXT_PUBLIC_APP_NAME=La Vida Luca
SENTRY_DSN=your-sentry-dsnLaVidaLuca-App/
├── .github/workflows/ # GitHub Actions CI/CD
├── apps/
│ ├── backend/ # API FastAPI
│ │ ├── routes/ # Endpoints API
│ │ ├── tests/ # Tests backend
│ │ ├── models/ # Modèles SQLAlchemy
│ │ └── main.py # Application principale
│ └── web/ # Frontend Next.js
│ ├── app/ # Pages et composants
│ ├── public/ # Assets statiques
│ └── src/ # Code source
├── .env.example # Configuration globale
└── package.json # Scripts npm globaux
- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
- Backend: Black (formatage) + isort + flake8
- Frontend: ESLint + Prettier + TypeScript strict
- Tests: Coverage minimum 80%
- Commits: Convention Conventional Commits
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Issues GitHub: github.com/vidaluca77-cloud/LaVidaLuca-App/issues
- Email: support@lavidaluca.fr
- Documentation: Disponible à
/docsen mode développement
Développé avec ❤️ pour promouvoir l'entraide locale et la vie durable. Frontend --> Backend[FastAPI Backend] Backend --> Database[(PostgreSQL)] Backend --> OpenAI[OpenAI API] Frontend --> Sentry[Sentry Monitoring] Backend --> Sentry
subgraph "Déploiement"
Frontend --> Render[Render Frontend]
Backend --> RenderAPI[Render Backend]
end
subgraph "Fonctionnalités"
Backend --> Activities[Catalogue d'activités]
Backend --> IA[Suggestions IA]
Backend --> Contact[Contact & Rejoindre]
Backend --> Auth[Authentification JWT]
end
## Installation
### Prérequis
- Node.js 18.x ou supérieur
- Python 3.11+
- PostgreSQL 12+
- npm ou yarn
- Git
### 1. Cloner le repository
```bash
git clone https://github.com/vidaluca77-cloud/LaVidaLuca-App.git
cd LaVidaLuca-App
# Installation frontend et backend
npm run setup
# Ou installation séparée:
npm install # Frontend
npm run backend:install # Backendcd apps/backend
cp .env.example .env
# Éditer .env avec vos valeurs# Créer la base de données
createdb lavidaluca_dev
# Appliquer les migrations
npm run backend:migrate
# (Optionnel) Peupler avec des données d'exemple
cd apps/backend && python seed.pyCréer un fichier .env.local à la racine avec les variables suivantes :
# Backend API
NEXT_PUBLIC_API_URL=http://localhost:8000
# Backend API
NEXT_PUBLIC_API_URL=http://localhost:8000
# Sentry (monitoring - requis pour la surveillance des erreurs)
NEXT_PUBLIC_SENTRY_DSN=votre_dsn_sentry
# Sentry Backend (pour le monitoring backend)
SENTRY_DSN=votre_dsn_sentry_backend
# Contact
NEXT_PUBLIC_CONTACT_EMAIL=contact@lavidaluca.fr
NEXT_PUBLIC_CONTACT_PHONE=+33123456789# Frontend seul
npm run dev
# Backend seul
npm run backend:dev
# Frontend + Backend simultanément
npm run dev:fullL'application sera accessible sur :
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8000 - Documentation API:
http://localhost:8000/docs - Monitoring Dashboard:
http://localhost:3000/monitoring(développement uniquement) - Métriques Prometheus:
http://localhost:8000/metrics
| Script | Description |
|---|---|
npm run dev |
Lance le serveur de développement frontend |
npm run build |
Compile l'application pour la production |
npm run start |
Lance l'application compilée |
npm run lint |
Vérifie la qualité du code |
npm run type-check |
Vérifie les types TypeScript |
npm test |
Lance les tests frontend |
| Script | Description |
|---|---|
npm run backend:dev |
Lance le serveur de développement backend |
npm run backend:install |
Installe les dépendances Python |
npm run backend:test |
Lance les tests backend |
npm run backend:migrate |
Applique les migrations de base de données |
npm run backend:migration |
Crée une nouvelle migration |
| Script | Description |
|---|---|
npm run setup |
Installation complète (frontend + backend) |
npm run dev:full |
Lance frontend et backend simultanément |
├── apps/
│ ├── backend/ # API FastAPI
│ │ ├── main.py # Point d'entrée de l'API
│ │ ├── config.py # Configuration
│ │ ├── database.py # Connexion base de données
│ │ ├── auth/ # Authentification JWT
│ │ ├── models/ # Modèles SQLAlchemy
│ │ ├── schemas/ # Schémas Pydantic
│ │ ├── routes/ # Points de terminaison API
│ │ ├── services/ # Logique métier
│ │ ├── migrations/ # Migrations Alembic
│ │ └── tests/ # Tests backend
│ └── web/ # Application frontend Next.js
├── public/ # Fichiers statiques
│ ├── icons/ # Icônes PWA
│ └── manifest.webmanifest
├── src/
│ ├── app/ # App Router Next.js 13+
│ │ ├── api/ # Routes API (legacy)
│ │ ├── catalogue/ # Page catalogue d'activités
│ │ ├── contact/ # Page contact
│ │ ├── rejoindre/ # Page rejoindre
│ │ ├── layout.tsx # Layout principal
│ │ └── page.tsx # Page d'accueil
│ ├── components/ # Composants réutilisables
│ ├── lib/ # Utilitaires et configurations
│ ├── monitoring/ # Outils de monitoring
│ └── types/ # Types TypeScript
├── monitoring/ # Configuration monitoring backend
├── docs/ # Documentation additionnelle
└── tests/ # Tests frontend
-
Connexion du repository
- Connecter le repository GitHub à Render
- Sélectionner la branche
mainpour les déploiements automatiques
-
Configuration des variables d'environnement Dans le dashboard Render, ajouter toutes les variables d'environnement nécessaires
-
Déploiement
# Déploiement automatique via Git git push origin main
- Compression : Gzip automatique
- Images : Optimisation via Next.js
- Fonts : Optimisation automatique des Google Fonts
- Bundle : Tree-shaking et minification
- PWA : Manifest et service worker
- Capture automatique des erreurs frontend
- Monitoring des performances
- Alertes en temps réel
- Session Replay pour le debugging
- Temps de chargement des pages
- Interactions utilisateur
- Erreurs API
- Performances des suggestions IA
// Exemple d'utilisation
import { logger } from '@/lib/logger';
logger.info('Action utilisateur', {
action: 'view_activity',
activityId: 'abc123',
userId: 'user456'
});GET /api/activities- Liste des activitésPOST /api/contact- Envoi de messages de contactGET /api/suggestions- Suggestions IA personnalisées
- Supabase : Base de données et authentification
- OpenAI : Génération de suggestions personnalisées
- Sentry : Monitoring et alertes
# Tests unitaires
npm test
# Tests avec coverage
npm run test:coverage
# Tests en mode watch
npm run test:watch- Unitaires : Composants et fonctions utilitaires
- Intégration : Flux utilisateur complets
- E2E : Tests de bout en bout avec Playwright
- Fork du repository
- Branche :
git checkout -b feature/ma-fonctionnalite - Développement avec tests
- Commit :
git commit -m 'feat: ajouter ma fonctionnalité' - Push :
git push origin feature/ma-fonctionnalite - Pull Request avec description détaillée
- ESLint : Configuration stricte Next.js
- TypeScript : Typage strict activé
- Prettier : Formatage automatique
- Conventional Commits : Messages de commit standardisés
- Tests passent (
npm test) - Build réussit (
npm run build) - Lint sans erreur (
npm run lint) - Types corrects (
npm run type-check) - Documentation mise à jour
- Changements testés manuellement
- Variables d'environnement pour les secrets
- Validation des inputs côté client et serveur
- CSP (Content Security Policy) configuré
- HTTPS obligatoire en production
- JWT tokens via Supabase
- Refresh tokens automatiques
- Logout sécurisé
- Sentry : Capture et suivi des erreurs frontend et backend
- Error Boundaries : Gestion des erreurs React avec fallback UI
- Filtrage intelligent : Les erreurs sensibles sont automatiquement filtrées
- Contexte utilisateur : Tracking des actions utilisateur pour debugging
- Web Vitals : FCP, LCP, FID, CLS en temps réel
- API Performance : Latence, taux de succès/échec des appels API
- Métriques système : CPU, mémoire, connexions base de données
- Métriques métier : Actions utilisateur, utilisation des fonctionnalités
- Interface temps réel :
/monitoring(développement uniquement) - Statut de santé : Aperçu global de l'état de l'application
- Alertes : Système d'alertes configurables pour les problèmes critiques
- Export des données : Téléchargement des métriques au format JSON
- Frontend : JSON structuré avec contexte utilisateur
- Backend : Logs contextuels avec request ID unique
- Activités utilisateur : Tracking des interactions pour analytics
- API calls : Log complet des requêtes/réponses avec durée
# Frontend (.env.local)
NEXT_PUBLIC_SENTRY_DSN=your_sentry_dsn
# Backend (.env)
SENTRY_DSN=your_sentry_backend_dsn- Health check :
GET /health - Métriques Prometheus :
GET /metrics - Dashboard monitoring :
http://localhost:3000/monitoring
- Code splitting automatique par Next.js
- Lazy loading des composants
- Image optimization avec next/image
- Font optimization avec next/font
- FCP < 1.5s (First Contentful Paint)
- LCP < 2.5s (Largest Contentful Paint)
- CLS < 0.1 (Cumulative Layout Shift)
- FID < 100ms (First Input Delay)
- API Docs :
/docs(à venir avec backend) - Storybook : Composants UI (à venir)
- Wiki : Documentation étendue
- Email : tech@lavidaluca.fr
- Issues : GitHub Issues pour les bugs
- Discussions : GitHub Discussions pour les questions
- Backend FastAPI pour l'IA
- Authentification complète
- Dashboard utilisateur
- Mobile app (React Native)
- API publique
- Intégration calendrier
- Notifications push
La Vida Luca - Plateforme collaborative pour la formation des jeunes en MFR et le développement d'une agriculture nouvelle.
Dernière mise à jour : 2024