mirror of
https://github.com/btouchard/ackify.git
synced 2025-12-20 12:10:06 -06:00
BREAKING CHANGE: ACKIFY_APP_PASSWORD environment variable is now required for RLS support. The migrate tool creates the ackify_app role before running migrations, ensuring compatibility with existing deployments. Changes: - Add ensureAppRole() in cmd/migrate to create/update ackify_app role - Remove docker/init-scripts/01-create-app-user.sh (no longer needed) - Update compose.yml: add ACKIFY_APP_PASSWORD, backend connects as ackify_app - Update migration 0016: remove conditional role creation - Add RLS documentation (docs/en/configuration/rls.md, docs/fr/configuration/rls.md) - Update configuration docs with RLS section and security checklist Migration path for existing deployments: 1. Set ACKIFY_APP_PASSWORD in .env 2. Run docker compose up (migrate will create the role automatically)
Ackify WebApp - Interface Moderne Vue 3
Interface moderne pour Ackify avec Vue 3, Shadcn Vue et thème Claymorphism.
Stack Technique
- Vue 3.5 - Framework JavaScript progressif
- TypeScript - Typage statique
- Vite 7 - Build tool ultra-rapide
- Tailwind CSS 4 - Framework CSS utility-first
- Shadcn Vue - Composants UI modernes et accessibles
- Radix Vue - Primitives UI headless accessibles
- Lucide Vue Next - Icons modernes
- Vue Router 4 - Routing officiel
- Pinia 3 - State management
- Axios - Client HTTP
Thème Claymorphism
L'interface utilise un design claymorphism avec:
- Effets de glassmorphism subtils
- Ombres douces et dégradés
- Backdrop blur pour profondeur
- Palette de couleurs sombre par défaut
- Support du mode clair/sombre
Variables de thème
Les couleurs sont définies dans src/style.css via les variables CSS:
--color-background
--color-foreground
--color-primary (vert: 142.1 76.2% 36.3%)
--color-secondary
--color-muted
--color-accent
--color-destructive
--color-border
--color-input
--color-ring
Structure des Composants
src/
├── components/
│ ├── ui/ # Composants Shadcn de base
│ │ ├── Button.vue
│ │ ├── Card.vue
│ │ ├── Input.vue
│ │ └── ...
│ ├── layout/ # Composants de mise en page
│ │ ├── AppHeader.vue # Header avec navigation
│ │ ├── AppFooter.vue # Footer avec liens
│ │ ├── AppShell.vue # Layout principal
│ │ └── ThemeToggle.vue # Toggle dark/light mode
│ └── accessibility/ # Composants a11y
│ └── SkipToContent.vue
├── pages/ # Pages de l'application
│ ├── HomePage.vue # Page d'accueil avec hero
│ ├── SignPage.vue # Page de signature
│ ├── SignaturesPage.vue # Liste des signatures
│ ├── admin/
│ │ ├── AdminDashboard.vue
│ │ └── AdminDocument.vue
│ └── ...
├── stores/ # Pinia stores
├── services/ # Services API
├── composables/ # Composables Vue
│ └── useClickOutside.ts
└── lib/
└── utils.ts # Utilitaires (cn, etc.)
Fonctionnalités UI
Header (AppHeader.vue)
- Navigation responsive avec menu mobile
- Menu utilisateur avec dropdown
- Toggle de thème (dark/light)
- Indicateur de page active
- Support clavier complet (accessibilité)
Footer (AppFooter.vue)
- Navigation par catégories
- Liens vers ressources
- Liens légaux
- Icônes sociales
- Responsive
Page d'accueil (HomePage.vue)
- Hero moderne avec gradient background
- Badge d'information
- Boutons CTA avec animations
- Section statistiques (stats cards claymorphism)
- Section "Pourquoi Ackify ?" avec cartes de features
- Section "Comment ça marche ?" avec étapes numérotées
- Section CTA finale
- Effets hover subtils
Accessibilité
- Support navigation clavier
- Focus rings visibles
- ARIA labels et roles
- Skip to content link
- Contraste AA/AAA
- Support
prefers-reduced-motion
Classes Claymorphism Personnalisées
.clay-card # Carte avec effet glassmorphism
.clay-card-hover # Carte avec effet hover
.clay-button # Bouton avec effet glassmorphism
.clay-input # Input avec effet glassmorphism
Développement
Installer les dépendances
npm install
Lancer le serveur de développement
npm run dev
L'application sera accessible sur http://localhost:5173
Build de production
npm run build
Preview du build
npm run preview
Configuration
Proxy API (vite.config.ts)
Le serveur de développement proxie les requêtes API vers le backend Go:
/api/*→http://localhost:8080/oauth2/*→http://localhost:8080
Alias TypeScript
L'alias @/ pointe vers src/
État d'avancement
✅ Complété
- Configuration Tailwind CSS 4
- Installation Shadcn Vue (manuel pour v4)
- Thème claymorphism appliqué
- Composants UI de base (Button, Card, Input)
- Layout complet (Header, Footer, Shell)
- Composants d'accessibilité
- Page d'accueil modernisée avec hero
- Dark mode avec toggle
🚧 À faire
- Moderniser page Sign avec formulaire accessible
- Moderniser page Signatures avec table Shadcn
- Moderniser page Admin avec dashboard KPI
- Ajouter plus de composants UI (Table, Dialog, Dropdown, etc.)
- Animations de transition entre pages
- Loading states et skeletons
- Toasts/notifications améliorés
- Gestion d'erreurs optimisée
- Tests unitaires et E2E
Personnalisation
Changer les couleurs du thème
Modifier les variables dans src/style.css:
@theme {
--color-primary: <nouvelle-couleur>;
/* ... */
}
Ajouter un nouveau composant Shadcn
- Créer le fichier dans
src/components/ui/ - Utiliser les utilities
cn()de@/lib/utils - Respecter les variants avec
class-variance-authority - S'inspirer des composants existants
Support navigateurs
- Chrome/Edge (dernières 2 versions)
- Firefox (dernières 2 versions)
- Safari 15+
Ressources
- Vue 3 Documentation
- Tailwind CSS v4
- Radix Vue
- Shadcn UI (référence React, adapté pour Vue)
Licence
MIT - Voir LICENSE dans le répertoire racine