CSWeb Community Platform transforme CSWeb en une plateforme moderne, facile a deployer et accessible a tous les instituts statistiques.
Base officielle : Ce projet est base sur CSWeb 8 telecharge depuis le site officiel csprousers.org/downloads. Toutes nos ameliorations sont construites sur cette base officielle et maintiennent une compatibilite 100% avec CSWeb vanilla.
| CSWeb Vanilla | CSWeb Community |
|---|---|
| Setup 2-3 jours | Setup 5 minutes (Docker) |
| MySQL uniquement | Multi-DB (PostgreSQL, MySQL, SQL Server) |
| Breakout global (lent) | Breakout selectif par dictionnaire |
| Pas de monitoring | Logs streaming temps reel |
| Documentation dispersee | Documentation complete (Nextra) |
# 1. Cloner le projet
git clone https://github.com/BOUNADRAME/csweb-community.git
cd csweb-community
# 2. Configurer l'environnement
cp .env.example .env
# Editer .env : renseigner les mots de passe et choisir BREAKOUT_DB_TYPE
# 3. Lancer (voir section "Modes de deploiement" ci-dessous)
docker compose --profile local-postgres up -dCSWeb supporte 6 configurations selon le type de base breakout et le mode (local Docker ou serveur distant).
Local β container Docker sur la meme machine
# .env
BREAKOUT_MODE=local
BREAKOUT_DB_TYPE=postgresql
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DATABASE=csweb_analytics
POSTGRES_USER=csweb_analytics
POSTGRES_PASSWORD=CHANGEZ_MOT_DE_PASSE
# Lancer
docker compose --profile local-postgres up -dServices : CSWeb (:8080) + MySQL metadata (:3306) + PostgreSQL breakout (:5432)
Remote β serveur PostgreSQL distant
# .env
BREAKOUT_MODE=remote
BREAKOUT_DB_TYPE=postgresql
POSTGRES_HOST=votre-serveur-pg.example.com
POSTGRES_PORT=5432
POSTGRES_DATABASE=csweb_analytics
POSTGRES_USER=csweb_analytics
POSTGRES_PASSWORD=votre_mot_de_passe
# Lancer (pas de container breakout)
docker compose up -d csweb mysqlServices : CSWeb (:8080) + MySQL metadata (:3306). PostgreSQL est sur le serveur distant.
Local β container Docker sur la meme machine (port 3307)
# .env
BREAKOUT_MODE=local
BREAKOUT_DB_TYPE=mysql
MYSQL_BREAKOUT_HOST=mysql-breakout
MYSQL_BREAKOUT_PORT=3307
MYSQL_BREAKOUT_DATABASE=csweb_breakout
MYSQL_BREAKOUT_USER=breakout_user
MYSQL_BREAKOUT_PASSWORD=CHANGEZ_MOT_DE_PASSE
# Lancer
docker compose --profile local-mysql up -dServices : CSWeb (:8080) + MySQL metadata (:3306) + MySQL breakout (:3307)
Remote β serveur MySQL distant
# .env
BREAKOUT_MODE=remote
BREAKOUT_DB_TYPE=mysql
MYSQL_BREAKOUT_HOST=votre-serveur-mysql.example.com
MYSQL_BREAKOUT_PORT=3306
MYSQL_BREAKOUT_DATABASE=csweb_breakout
MYSQL_BREAKOUT_USER=breakout_user
MYSQL_BREAKOUT_PASSWORD=votre_mot_de_passe
# Lancer
docker compose up -d csweb mysqlServices : CSWeb (:8080) + MySQL metadata (:3306). MySQL breakout est sur le serveur distant.
Local β container Docker sur la meme machine (2 GB RAM min.)
# .env
BREAKOUT_MODE=local
BREAKOUT_DB_TYPE=sqlserver
SQLSERVER_HOST=sqlserver
SQLSERVER_PORT=1433
SQLSERVER_DATABASE=CSWeb_Analytics
SQLSERVER_USER=sa
SQLSERVER_PASSWORD=VotreStrong!Passw0rd
# Lancer
docker compose --profile local-sqlserver up -dServices : CSWeb (:8080) + MySQL metadata (:3306) + SQL Server breakout (:1433)
Remote β serveur SQL Server distant
# .env
BREAKOUT_MODE=remote
BREAKOUT_DB_TYPE=sqlserver
SQLSERVER_HOST=votre-serveur-sql.example.com
SQLSERVER_PORT=1433
SQLSERVER_DATABASE=CSWeb_Analytics
SQLSERVER_USER=sa
SQLSERVER_PASSWORD=VotreMotDePasse!
# Lancer
docker compose up -d csweb mysqlServices : CSWeb (:8080) + MySQL metadata (:3306). SQL Server est sur le serveur distant.
# Ajouter --profile dev pour phpMyAdmin (:8081) et pgAdmin (:8082)
docker compose --profile local-postgres --profile dev up -dββββββββββββββ¬βββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββ
β SGBD β Mode β Commande β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β PostgreSQL β Local β docker compose --profile local-postgres up -d β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β PostgreSQL β Remote β docker compose up -d csweb mysql β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β MySQL β Local β docker compose --profile local-mysql up -d β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β MySQL β Remote β docker compose up -d csweb mysql β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β SQL Server β Local β docker compose --profile local-sqlserver up -d β
ββββββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ€
β SQL Server β Remote β docker compose up -d csweb mysql β
ββββββββββββββ΄βββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββ
# Breakout selectif par dictionnaire
docker exec -it csweb-app php bin/console csweb:process-cases-by-dict VOTRE_DICTIONNAIREToutes les configurations PHP, MySQL, PostgreSQL et Apache sont pilotables depuis .env. Voir .claude/PERFORMANCE-TUNING.md pour le guide complet.
# Verifier la configuration
docker exec csweb-app php bin/console csweb:check-config
# Avec test des connexions
docker exec csweb-app php bin/console csweb:check-config --test-connections- Backend : Symfony 5.4 LTS, PHP 8.1+
- Databases : MySQL 8.0 (metadata) + PostgreSQL 16 / MySQL 8.0 / SQL Server 2022 (breakout)
- Frontend : Twig, jQuery, Bootstrap 4, DataTables
- DevOps : Docker + Docker Compose
- Documentation : Nextra 2.13 (48 pages)
Documentation complete : https://bounadrame.github.io/csweb-community/
- Installation - Setup en 5 minutes
- Premier Breakout - Tutorial complet
- Architecture - Multi-DB, Local/Remote
- CLI Reference - Commandes disponibles
Bouna DRAME - Lead Developer
- GitHub: @BOUNADRAME
- Portfolio
Assietou Diagne - Developer, ANSD
- Breakout selectif par dictionnaire
- ANSD (Senegal) - Recensement (RGPH5) et enquetes
- Gambie - Recensement
- Guinee - Recensement
- Statinfo - Enquetes
Apache License 2.0 - Voir LICENSE
Made with love for African Statistical Institutes