Plateforme de mise en relation entre freelances et entreprises permettant la gestion de projets, le suivi de jalons avec checkpoints, les paiements sécurisés via Stripe, et la communication en temps réel.
- Docker et Docker Compose
- Node.js 22+
- Git
# Base de données
DATABASE_URL="postgresql://freehunt:password@localhost:5432/freehunt"
BACKEND_POSTGRES_USER="freehunt"
BACKEND_POSTGRES_PASSWORD="password"
BACKEND_POSTGRES_DB="freehunt"
# URLs et authentification
FRONTEND_URL="http://localhost:5173"
AUTHENTIK_URL="http://localhost:9000"
PORT="3000"
# Services externes
STRIPE_SECRET_KEY="sk_test_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
# Stockage (MinIO pour le développement local)
S3_ACCESS_KEY="minioadmin"
S3_SECRET_KEY="minioadmin"
S3_URL="http://localhost:10000"
# Authentik
AUTHENTIK_PG_PASS="authentik_password"
AUTHENTIK_PG_USER="authentik"
AUTHENTIK_PG_DB="authentik"
AUTHENTIK_SECRET_KEY="your-64-char-secret-key"
# Matomo
MATOMO_DB_ROOT_PASSWORD="matomo_root_password"
MATOMO_DB_NAME="matomo"
MATOMO_DATABASE_PASSWORD="matomo_password"NEXT_PUBLIC_API_URL="http://localhost:3000"
NEXT_PUBLIC_SOCKET_URL="http://localhost:3001"
NEXT_PUBLIC_MATOMO_URL="http://localhost:8090"
NEXT_PUBLIC_MATOMO_SITE_ID="1"- Cloner le projet
git clone https://github.com/FreeHunt/freehunt.git
cd freehunt- Créer les fichiers d'environnement
# Copier le fichier d'exemple pour le backend
cp .env.example .env
# Copier le fichier d'exemple pour le frontend
cp frontend/.env.local.example frontend/.env.local
# Modifier les variables selon votre configuration (notamment les clés Stripe)
nano .env- Démarrer les services d'infrastructure avec Docker Compose
# Démarrer tous les services (base de données, Authentik, Matomo, MinIO)
docker compose -f compose.yaml -f compose.dev.yaml up -d
# Attendre que tous les services soient démarrés (environ 2-3 minutes)
docker compose ps- Configurer Authentik (première fois uniquement)
Voir le fichier AUTHENTIK.md pour les instructions détaillées de configuration d'Authentik.
- Configurer MinIO (stockage S3 local)
Voir le fichier MINIO.md pour les instructions de configuration de MinIO pour le stockage de fichiers en local.
- Installer les dépendances du backend
cd backend
npm install- Installer les dépendances du frontend
cd frontend
npm install- Appliquer les migrations de base de données
cd backend
npx prisma migrate dev- Peupler la base de données (optionnel)
cd backend
npx prisma db seed- Lancer le backend en mode développement
cd backend
npm run start:dev- Lancer le frontend en mode développement
cd frontend
npm run devL'application sera accessible sur :
- Frontend : http://localhost:5173
- Backend API : http://localhost:3000
- Documentation API : http://localhost:3000/api
- Authentik : http://localhost:9000
- Matomo : http://localhost:8090
- Adminer : http://localhost:8080
# Arrêter tous les services
docker compose -f compose.yaml -f compose.dev.yaml down
# Redémarrer les services
docker compose -f compose.yaml -f compose.dev.yaml restart
# Voir les logs des services
docker compose -f compose.yaml -f compose.dev.yaml logs -f
# Nettoyer complètement (attention : supprime les données)
docker compose -f compose.yaml -f compose.dev.yaml down -v- Frontend : Next.js 15 avec TypeScript, TailwindCSS et shadcn/ui
- Backend : NestJS avec TypeScript, Prisma ORM et validation
- Base de données : PostgreSQL avec migrations Prisma
- Authentification : Authentik (Single Sign-On)
- Stockage fichiers : AWS S3 (MinIO pour le développement)
- Paiements : Stripe avec webhooks
- Analytics : Matomo auto-hébergé
- Proxy inverse : Traefik pour la production
- Communication temps réel : Socket.IO pour le chat
- Microservices containerisés avec Docker
- API RESTful avec documentation Swagger/OpenAPI
- WebSocket pour la messagerie temps réel
- Upload de fichiers sécurisé vers S3
- Authentification centralisée avec Authentik
- Gestion des états de paiement avec Stripe
- Infrastructure as Code avec Terraform
- Authentification et inscription sécurisée via Authentik
- Mots de passe forts requis (validation côté client et serveur)
- Protection CORS et validation des données
- Gestion sécurisée des sessions et cookies
- Guards d'autorisation pour les routes protégées
- Conteneurs Docker pour tous les services
- Orchestration Docker Compose (développement) et Docker Swarm (production)
- Déploiement automatisé avec GitHub Actions
- Registre Docker via GitHub Container Registry
- Configuration SSL/TLS en production
- Monitoring des services
- Plateforme complète freelance/entreprise avec rôles différenciés
- Création et gestion d'annonces de mission avec statuts
- Système de candidatures
- Gestion des projets avec jalons (checkpoints)
- Paiements automatisés via intégration Stripe
- Messagerie en temps réel entre utilisateurs
- Upload et gestion de documents (avatars, logos)
- Système de compétences techniques et humaines
- Interface moderne et responsive avec TailwindCSS
- Composants réutilisables avec shadcn/ui
- Animations fluides avec Framer Motion
- Interface mobile optimisée
- Tests end-to-end avec Jest et Supertest
- Tests unitaires des services backend
- Tests des endpoints API critiques
- Validation des fonctionnalités utilisateur
- Couverture des scénarios métier principaux
- Monitoring des services avec Uptime Kuma
- Analytics avec Matomo
- Suivi via Jira Software
- Validation des changements avec Pull Requests
- CI/CD automatisé avec GitHub Actions
- Déploiement automatique en production
- Infrastructure as Code avec Terraform
- Réplication des services en production
- Secrets management avec Docker Swarm
- Authentification via Authentik
- Paiements sécurisés avec Stripe Connect
- Communication temps réel WebSocket
- Stockage cloud AWS S3
