100ff96c70a118d0b7bce2b4709c18b5809517ea
SIRET/RNA verification: - Create SiretService with API gouv lookup + JOAFE RNA lookup + cache pool (24h) - Verification page: declared info vs API data side by side - Display NAF code + label (from naf.json), nature juridique code + label - Association/Entreprise/EI badges, ESS badge, RNA, coordonnees lat/long - JOAFE section: objet, regime, domaine, dates, lieu, PDF download link - Tranche effectif with readable labels - Refresh cache button - Page restricted to non-approved organizers only Organizer approval flow: - Approval form with offer (free/basic/custom) and commission rate (default 3%) - Add commissionRate field to User entity + migration - Rejection form with required reason textarea, sent in email - Edit page for approved organizers: all fields modifiable - Modify button in approved organizers table Registration flow pages: - Post-registration success page with email verification message - Organizer gets additional 48h staff review notice - Post-email-verification page: confirmed for buyers, 48h notice for organizers Dashboard: - Simplified Meilisearch sync to single button Tests: SiretServiceTest (9), AdminControllerTest (31), RegistrationControllerTest updated, UserTest updated Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
E-Ticket
Plateforme destinee aux associations pour la vente de tickets evenementiels, la reservation de tables, l'organisation de brocantes et le vote en ligne.
Stack technique
| Composant | Technologie |
|---|---|
| Backend | Symfony 8 / PHP 8.4 |
| Base de donnees | PostgreSQL 16 |
| Cache / Queue | Redis 7 |
| Async | Symfony Messenger |
| Frontend | Bun / Vite / Tailwind CSS |
| Serveur web | Caddy |
| Amazon SES | |
| DNS / CDN | Cloudflare |
| Deploiement | Ansible / Gitea Actions |
Architecture
Developpement
| Service | Port |
|---|---|
| Caddy (web) | localhost:8000 |
| Vite (HMR) | localhost:5173 |
| PostgreSQL | localhost:5432 |
| Redis | localhost:6379 |
| Mailpit (SMTP) | localhost:1025 |
| Mailpit (UI) | localhost:8025 |
| RedisInsight | localhost:5540 |
Production
- 2x PHP-FPM (load balancing via Caddy)
- PostgreSQL master / slave (replication)
- PgBouncer (connection pooling)
- 2x Messenger workers
- Redis
- Caddy installe sur la machine hote
Prerequis
- Docker & Docker Compose
- Make
Installation
# Build les images
make build_dev
# Lance les containers
make start_dev
# Install les dependances
make install_dev
Commandes disponibles
make help
| Commande | Description |
|---|---|
make build_dev |
Build les images Docker dev |
make build_prod |
Build les images Docker prod |
make start_dev |
Lance les containers dev |
make start_prod |
Lance les containers prod (background) |
make stop_dev |
Arrete les containers dev |
make stop_prod |
Arrete les containers prod |
make purge_dev |
Arrete et purge tout (volumes, images) |
make install_dev |
Install les dependances via Docker |
make install_prod |
Install les dependances et build les assets |
make migration_dev |
Genere une migration |
make migrate_dev |
Execute les migrations en dev |
make migrate_prod |
Execute les migrations en prod |
Base de donnees
Dev
| Param | Valeur |
|---|---|
| Host | localhost |
| Port | 5432 |
| Database | e-ticket |
| User | app |
| Password | secret |
Prod
PostgreSQL master/slave avec PgBouncer. Replication streaming asynchrone.
Deploiement
Le deploiement se fait via Gitea Actions (declenchement manuel) + Ansible.
# Deployer la config Caddy
ansible-playbook -i ansible/hosts.ini ansible/deploy-caddy.yml --ask-vault-pass
Mode maintenance
Pour activer la maintenance :
touch /var/www/e-ticket/public/.update
Pour desactiver :
rm /var/www/e-ticket/public/.update
Licence
Licence proprietaire. Voir LICENSE.md.
Description
Languages
PHP
59.3%
Twig
31.5%
JavaScript
6.3%
Shell
1%
SCSS
0.6%
Other
1.3%