# 🔐 Ackify > **Proof of Read. Compliance made simple.** Service sĂ©curisĂ© de validation de lecture avec signatures cryptographiques et preuves incontestables. [![Build](https://github.com/btouchard/ackify-ce/actions/workflows/ci.yml/badge.svg)](https://github.com/btouchard/ackify-ce/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/btouchard/ackify-ce/branch/main/graph/badge.svg)](https://codecov.io/gh/btouchard/ackify-ce) [![Security](https://img.shields.io/badge/crypto-Ed25519-blue.svg)](https://en.wikipedia.org/wiki/EdDSA) [![Go](https://img.shields.io/badge/go-1.24.5-blue.svg)](https://golang.org/) [![License](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE) > 🌍 [English version available here](README.md) **Site web** : https://www.ackify.eu/fr --- ## 🎯 Pourquoi Ackify ? Prouvez que vos collaborateurs ont lu et pris connaissance de documents importants avec des **signatures cryptographiques Ed25519**. **Cas d'usage** : - Validation de politiques de sĂ©curitĂ© - Attestations de formation - Prise de connaissance RGPD - AccusĂ©s de rĂ©ception contractuels - ProcĂ©dures de conformitĂ© **FonctionnalitĂ©s clĂ©s** : - ✅ Signatures cryptographiques Ed25519 - ✅ **Authentification flexible** : OAuth2 (Google, GitHub, GitLab, custom) ou MagicLink (email sans mot de passe) - ✅ Une signature par utilisateur/document (contrainte base de donnĂ©es) - ✅ Piste d'audit immutable - ✅ Tracking signataires attendus avec rappels email - ✅ VĂ©rification checksums documents (SHA-256/512, MD5) - ✅ Stockage de documents optionnel (systĂšme de fichiers local ou compatible S3) - ✅ Widgets intĂ©grables publics (Notion, Outline, etc.) - ✅ Dashboard admin (Vue.js 3 + mode sombre) - ✅ Multilingue (fr, en, es, de, it) --- ## ⚡ DĂ©marrage Rapide ### PrĂ©requis - Docker & Docker Compose - **Au moins UNE mĂ©thode d'authentification** : - Credentials OAuth2 (Google, GitHub, ou GitLab), OU - Serveur SMTP pour MagicLink (authentification email sans mot de passe) ### Installation #### Option 1 : Script d'Installation AutomatisĂ© (RecommandĂ©) ```bash # TĂ©lĂ©charger et exĂ©cuter le script d'installation bash <(curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh) # Naviguer vers le rĂ©pertoire d'installation cd ackify-ce # Éditer la configuration avec vos credentials OAuth2 nano .env # DĂ©marrer les services docker compose up -d # AccĂ©der Ă  l'interface web open http://localhost:8080 ``` **Ce que fait le script :** - TĂ©lĂ©charge `compose.yml` et `.env.example` - GĂ©nĂšre automatiquement des secrets sĂ©curisĂ©s : - `ACKIFY_OAUTH_COOKIE_SECRET` (chiffrement session AES-256) - `POSTGRES_PASSWORD` (mot de passe base de donnĂ©es) - CrĂ©e un fichier `.env` prĂȘt Ă  l'emploi - Vous n'avez qu'Ă  ajouter vos credentials OAuth2 #### Option 2 : Installation Manuelle ```bash # Cloner le dĂ©pĂŽt git clone https://github.com/btouchard/ackify-ce.git cd ackify-ce # Configurer cp .env.example .env nano .env # Éditer avec vos credentials OAuth2 et gĂ©nĂ©rer les secrets # DĂ©marrer les services docker compose up -d # VĂ©rifier curl http://localhost:8080/api/v1/health # Attendu: {"status":"healthy","database":"connected"} # AccĂ©der Ă  l'interface web open http://localhost:8080 ``` ### Variables d'Environnement Requises ```bash # Application APP_DNS=sign.votre-domaine.com ACKIFY_BASE_URL=https://sign.votre-domaine.com ACKIFY_ORGANISATION="Votre Organisation" # Base de donnĂ©es POSTGRES_USER=ackifyr POSTGRES_PASSWORD=votre_mot_de_passe_securise POSTGRES_DB=ackify # SĂ©curitĂ© (gĂ©nĂ©rer avec: openssl rand -base64 32) ACKIFY_OAUTH_COOKIE_SECRET=votre_secret_base64 # ============================================================================ # Authentification (choisir AU MOINS UNE mĂ©thode) # ============================================================================ # Option 1 : OAuth2 (Google, GitHub, GitLab, custom) ACKIFY_OAUTH_PROVIDER=google ACKIFY_OAUTH_CLIENT_ID=votre_client_id ACKIFY_OAUTH_CLIENT_SECRET=votre_client_secret # Option 2 : MagicLink (authentification email sans mot de passe) # ACKIFY_MAIL_HOST=smtp.example.com # ACKIFY_MAIL_PORT=587 # ACKIFY_MAIL_USERNAME=votre_utilisateur_smtp # ACKIFY_MAIL_PASSWORD=votre_mot_de_passe_smtp # ACKIFY_MAIL_FROM=noreply@example.com ``` **Auto-dĂ©tection** : - OAuth activĂ© automatiquement si `ACKIFY_OAUTH_CLIENT_ID` et `ACKIFY_OAUTH_CLIENT_SECRET` sont dĂ©finis - MagicLink activĂ© automatiquement si `ACKIFY_MAIL_HOST` est configurĂ© - Vous pouvez utiliser **les deux mĂ©thodes simultanĂ©ment** pour une flexibilitĂ© maximale Voir [docs/fr/configuration.md](docs/fr/configuration.md) pour toutes les options. --- ## 📾 Captures d'Ă©cran
Accueil
Upload document
Ajouter lecteurs
Lecteur intégré
Lecture confirmée
Mes confirmations
Mes documents
Admin paramĂštres
--- ## 📚 Documentation ### DĂ©marrage - **[DĂ©marrage Rapide](docs/fr/getting-started.md)** - Installation & premiers pas - **[Configuration](docs/fr/configuration.md)** - Variables d'environnement - **[OAuth Providers](docs/fr/configuration/oauth-providers.md)** - Google, GitHub, GitLab, Custom - **[Configuration Email](docs/fr/configuration/email-setup.md)** - Configuration SMTP ### FonctionnalitĂ©s - **[Signatures](docs/fr/features/signatures.md)** - Flow cryptographique Ed25519 - **[Signataires Attendus](docs/fr/features/expected-signers.md)** - Tracking & rappels - **[Checksums](docs/fr/features/checksums.md)** - VĂ©rification intĂ©gritĂ© documents - **[Stockage Documents](docs/fr/features/storage.md)** - Upload optionnel (local ou S3) - **[Embedding](docs/fr/features/embedding.md)** - oEmbed, iframes, intĂ©grations - **[i18n](docs/fr/features/i18n.md)** - Internationalisation (5 langues) ### Technique - **[Architecture](docs/fr/architecture.md)** - Stack technique & principes de conception - **[Base de DonnĂ©es](docs/fr/database.md)** - SchĂ©ma PostgreSQL & migrations - **[API Reference](docs/fr/api.md)** - Endpoints REST & exemples - **[DĂ©ploiement](docs/fr/deployment.md)** - Production avec Docker Compose - **[DĂ©veloppement](docs/fr/development.md)** - Contribution & setup --- ## 🚀 Utilisation ### Demander une Signature ``` https://votre-domaine.com/?doc=politique_securite_2025 ``` L'utilisateur s'authentifie (OAuth2 ou MagicLink) et signe en un clic. ### IntĂ©grer dans vos Outils **iFrame** : ```html ``` **oEmbed** (Notion, Outline, Confluence) : ``` Collez l'URL embed : https://votre-domaine.com/embed?doc=politique_2025 Embed automatique via oEmbed discovery ``` **Open Graph** (Slack, Teams) : ``` Collez l'URL directe : https://votre-domaine.com/?doc=politique_2025 L'URL se dĂ©ploie automatiquement avec le nombre de signatures ``` > **Important** : Utilisez `/embed?doc=...` pour les intĂ©grations iframe (Notion, Outline) et `/?doc=...` pour les liens directs (emails, Slack). Voir [docs/fr/features/embedding.md](docs/fr/features/embedding.md) pour les dĂ©tails. --- ## đŸ›Ąïž SĂ©curitĂ© - **Ed25519** - Signatures courbe elliptique de pointe - **SHA-256** - Hachage payload pour dĂ©tection altĂ©ration - **PKCE** - SĂ©curitĂ© OAuth2 (automatique) - **AES-256-GCM** - Refresh tokens chiffrĂ©s - **Horodatages immutables** - Triggers PostgreSQL - **Rate limiting** - 5 auth/min, 100 req/min - **HTTPS forcĂ©** - Cookies sĂ©curisĂ©s uniquement Voir [docs/fr/architecture.md](docs/fr/architecture.md) pour tous les dĂ©tails sĂ©curitĂ©. --- ## 🔧 Stack Technique **Backend** : Go 1.24.5, PostgreSQL 16, Chi Router, OAuth2, Ed25519 **Frontend** : Vue 3, TypeScript, Vite, Pinia, Tailwind CSS, shadcn/vue **DevOps** : Docker, Builds multi-Ă©tapes, Image Distroless (< 30MB) **i18n** : 5 langues (fr, en, es, de, it) **Coverage** : 72.6% (180+ tests unitaires, 33 tests d'intĂ©gration) --- ## đŸ€ Support - **Issues** : [GitHub Issues](https://github.com/btouchard/ackify-ce/issues) - **Discussions** : [GitHub Discussions](https://github.com/btouchard/ackify-ce/discussions) - **Email** : contact@ackify.eu --- ## 📄 Licence AGPLv3 - Voir [LICENSE](LICENSE) pour les dĂ©tails. --- **DĂ©veloppĂ© avec ❀ par [Benjamin TOUCHARD](https://www.kolapsis.com)**