mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-11 17:27:54 +02:00
Implémente le site Plein R (Accueil + Backend) sur Next.js + Postgres + Docker
Application unique Next.js (App Router, TypeScript) servant : - Accueil public : héro, recherche, métiers, promotions, mises à l'honneur (données issues de Postgres) - Backend authentifié avec RBAC : tableau de bord, adhérents (CRUD), modération des promotions, administrateurs, espace adhérent (publication avec aperçu) Technique : - Drizzle ORM + drizzle-kit (migrations versionnées) sur driver pg - Auth.js v5 (credentials, sessions JWT), rôles admin/moderator/editor/member - Middleware de protection de /backend + gardes par rôle dans chaque vue - Server actions pour toutes les mutations (vérif auth + capacité + revalidate) - Design fidèle aux maquettes (design-system CSS, animations, responsive) Conteneurisation : - 1 conteneur applicatif (sortie standalone) + 1 conteneur Postgres externe - docker-compose avec healthcheck ; migrations + seed au démarrage - scripts migrate/seed bundlés (esbuild) pour un runtime sans devDeps Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XwfhYHzC9hQWPDnQ2p53GL
This commit is contained in:
45 files changed
+12013
No files matched your search
@@ -0,0 +1,47 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 480" fill="none" role="img" aria-label="Plein R — Association des commerçants et entreprises du Bassin de Pompey">
|
||||
<defs>
|
||||
<linearGradient id="plr-tower" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#a9743f"/>
|
||||
<stop offset="1" stop-color="#8a5a30"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- sparkles -->
|
||||
<g>
|
||||
<path d="M96 150 l9 24 24 9 -24 9 -9 24 -9 -24 -24 -9 24 -9 z" fill="#9a6638"/>
|
||||
<path d="M70 250 l7 18 18 7 -18 7 -7 18 -7 -18 -18 -7 18 -7 z" fill="#6FB0C6"/>
|
||||
<path d="M120 95 l6 16 16 6 -16 6 -6 16 -6 -16 -16 -6 16 -6 z" fill="#E0A63C"/>
|
||||
<path d="M300 110 l8 21 21 8 -21 8 -8 21 -8 -21 -21 -8 21 -8 z" fill="#9a6638"/>
|
||||
<path d="M330 215 l7 18 18 7 -18 7 -7 18 -7 -18 -18 -7 18 -7 z" fill="#6FB0C6"/>
|
||||
<path d="M280 250 l6 15 15 6 -15 6 -6 15 -6 -15 -15 -6 15 -6 z" fill="#2C6FB3"/>
|
||||
<circle cx="160" cy="120" r="6" fill="#6FB0C6"/>
|
||||
<circle cx="250" cy="150" r="5" fill="#E0A63C"/>
|
||||
<circle cx="78" cy="190" r="5" fill="#E0A63C"/>
|
||||
<circle cx="318" cy="160" r="5" fill="#9a6638"/>
|
||||
</g>
|
||||
|
||||
<!-- Eiffel tower -->
|
||||
<g stroke="#4a3a24" stroke-width="4" stroke-linejoin="round">
|
||||
<!-- antenna -->
|
||||
<rect x="196" y="60" width="8" height="34" rx="3" fill="url(#plr-tower)"/>
|
||||
<!-- top -->
|
||||
<path d="M188 94 h24 l-3 40 h-18 z" fill="url(#plr-tower)"/>
|
||||
<!-- upper section -->
|
||||
<path d="M183 134 h34 l-7 70 h-20 z" fill="url(#plr-tower)"/>
|
||||
<!-- mid platform -->
|
||||
<rect x="171" y="204" width="58" height="14" rx="3" fill="#6FB0C6"/>
|
||||
<!-- middle section -->
|
||||
<path d="M174 218 h52 l-12 86 h-28 z" fill="url(#plr-tower)"/>
|
||||
<!-- lower platform -->
|
||||
<rect x="156" y="304" width="88" height="16" rx="3" fill="#E0A63C"/>
|
||||
<!-- legs with the iconic arch -->
|
||||
<path d="M160 320 h80 l26 86 h-30 c-6 -34 -22 -44 -36 -44 -14 0 -30 10 -36 44 h-30 z" fill="url(#plr-tower)"/>
|
||||
</g>
|
||||
|
||||
<!-- ribbon banner -->
|
||||
<path d="M40 360 q160 96 320 0 l-12 40 q-148 84 -296 0 z" fill="#9a6638"/>
|
||||
<text x="200" y="402" text-anchor="middle" font-family="'Public Sans',Arial,sans-serif" font-size="20" font-weight="800" letter-spacing="1.5" fill="#f6f2e8">RÉSEAU · RENCONTRE · RÉUSSITE</text>
|
||||
|
||||
<!-- wordmark -->
|
||||
<text x="200" y="352" text-anchor="middle" font-family="'Bricolage Grotesque','Georgia',serif" font-style="italic" font-size="78" font-weight="800" fill="#1E588F" letter-spacing="-1">Plein R</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
Reference in new issue
Block a user