Files
ackify/webapp/README.md
Benjamin e95185f9c7 feat: migrate to Vue.js SPA with API-first architecture
Major refactoring to modernize the application architecture:

Backend changes:
- Restructure API with v1 versioning and modular handlers
- Add comprehensive OpenAPI specification
- Implement RESTful endpoints for documents, signatures, admin
- Add checksum verification system for document integrity
- Add server-side runtime injection of ACKIFY_BASE_URL and meta tags
- Generate dynamic Open Graph/Twitter Card meta tags for unfurling
- Remove legacy HTML template handlers
- Isolate backend source on dedicated folder
- Improve tests suite

Frontend changes:
- Migrate from Go templates to Vue.js 3 SPA with TypeScript
- Add Tailwind CSS with shadcn/vue components
- Implement i18n support (fr, en, es, de, it)
- Add admin dashboard for document and signer management
- Add signature tracking with file checksum verification
- Add embed page with sign button linking to main app
- Implement dark mode and accessibility features
- Auto load file to compute checksum

Infrastructure:
- Update Dockerfile for SPA build process
- Simplify deployment with embedded frontend assets
- Add migration for checksum_verifications table

This enables better UX, proper link previews on social platforms,
and provides a foundation for future enhancements.
2025-10-26 02:32:10 +02:00

5.5 KiB

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é)
  • 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

  1. Créer le fichier dans src/components/ui/
  2. Utiliser les utilities cn() de @/lib/utils
  3. Respecter les variants avec class-variance-authority
  4. S'inspirer des composants existants

Support navigateurs

  • Chrome/Edge (dernières 2 versions)
  • Firefox (dernières 2 versions)
  • Safari 15+

Ressources

Licence

MIT - Voir LICENSE dans le répertoire racine