https://github.com/btouchard/ackify-ce
π Proof of Read. Compliance made simple.
https://github.com/btouchard/ackify-ce
acknowledgments audit-trail compliance document-management document-tracking enterprise enterprise-solutions gdpr-compliance open-source policy-management rgpd
Last synced: 7 months ago
JSON representation
π Proof of Read. Compliance made simple.
- Host: GitHub
- URL: https://github.com/btouchard/ackify-ce
- Owner: btouchard
- License: agpl-3.0
- Created: 2025-09-10T15:08:38.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-01-20T14:40:44.000Z (7 months ago)
- Last Synced: 2026-01-20T18:47:21.178Z (7 months ago)
- Topics: acknowledgments, audit-trail, compliance, document-management, document-tracking, enterprise, enterprise-solutions, gdpr-compliance, open-source, policy-management, rgpd
- Language: Go
- Homepage: https://ackify.eu
- Size: 32.7 MB
- Stars: 180
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Copyright: COPYRIGHT
Awesome Lists containing this project
README
# π Ackify
> **Proof of Read. Compliance made simple.**
Secure document reading validation with cryptographic signatures and irrefutable proof.
[](https://github.com/btouchard/ackify-ce/actions/workflows/ci.yml)
[](https://codecov.io/gh/btouchard/ackify-ce)
[](https://en.wikipedia.org/wiki/EdDSA)
[](https://golang.org/)
[](LICENSE)
> π«π· [Version franΓ§aise disponible ici](README_FR.md)
**Website**: https://www.ackify.eu
---
## π― Why Ackify?
Prove that collaborators have read and acknowledged important documents with **Ed25519 cryptographic signatures**.
**Use Cases**:
- Security policy validation
- Training attestations
- GDPR acknowledgment
- Contractual agreements
- Compliance procedures
**Key Features**:
- β
Ed25519 cryptographic signatures
- β
**Flexible authentication**: OAuth2 (Google, GitHub, GitLab, custom) or MagicLink (passwordless email)
- β
One signature per user/document (database enforced)
- β
Immutable audit trail
- β
Expected signers tracking with email reminders
- β
Document checksum verification (SHA-256/512, MD5)
- β
Optional document storage (local filesystem or S3-compatible)
- β
Public embeddable widgets (Notion, Outline, etc.)
- β
Admin dashboard (Vue.js 3 + dark mode)
- β
Multilingual (fr, en, es, de, it)
---
## β‘ Quick Start
### Prerequisites
- Docker & Docker Compose
- **At least ONE authentication method**:
- OAuth2 credentials (Google, GitHub, or GitLab), OR
- SMTP server for MagicLink (passwordless email authentication)
### Installation
#### Option 1: Automated Installation Script (Recommended)
```bash
# Download and run installation script
bash <(curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh)
# Navigate to installation directory
cd ackify-ce
# Edit configuration with your OAuth2 credentials
nano .env
# Start services
docker compose up -d
# Access web interface
open http://localhost:8080
```
**What the script does:**
- Downloads `compose.yml` and `.env.example`
- Generates secure secrets automatically:
- `ACKIFY_OAUTH_COOKIE_SECRET` (AES-256 session encryption)
- `POSTGRES_PASSWORD` (database password)
- Creates ready-to-use `.env` file
- You only need to add your OAuth2 credentials
#### Option 2: Manual Installation
```bash
# Clone repository
git clone https://github.com/btouchard/ackify-ce.git
cd ackify-ce
# Configure
cp .env.example .env
nano .env # Edit with your OAuth2 credentials and generate secrets
# Start services
docker compose up -d
# Verify
curl http://localhost:8080/api/v1/health
# Expected: {"status":"healthy","database":"connected"}
# Access web interface
open http://localhost:8080
```
### Required Environment Variables
```bash
# Application
APP_DNS=sign.your-domain.com
ACKIFY_BASE_URL=https://sign.your-domain.com
ACKIFY_ORGANISATION="Your Organization"
# Database
POSTGRES_USER=ackifyr
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=ackify
# Security (generate with: openssl rand -base64 32)
ACKIFY_OAUTH_COOKIE_SECRET=your_base64_secret
# ============================================================================
# Authentication (choose AT LEAST ONE method)
# ============================================================================
# Option 1: OAuth2 (Google, GitHub, GitLab, custom)
ACKIFY_OAUTH_PROVIDER=google
ACKIFY_OAUTH_CLIENT_ID=your_client_id
ACKIFY_OAUTH_CLIENT_SECRET=your_client_secret
# Option 2: MagicLink (passwordless email authentication)
# ACKIFY_MAIL_HOST=smtp.example.com
# ACKIFY_MAIL_PORT=587
# ACKIFY_MAIL_USERNAME=your_smtp_username
# ACKIFY_MAIL_PASSWORD=your_smtp_password
# ACKIFY_MAIL_FROM=noreply@example.com
```
**Auto-detection**:
- OAuth is enabled automatically if `ACKIFY_OAUTH_CLIENT_ID` and `ACKIFY_OAUTH_CLIENT_SECRET` are set
- MagicLink is enabled automatically if `ACKIFY_MAIL_HOST` is configured
- You can use **both methods simultaneously** for maximum flexibility
See [docs/en/configuration.md](docs/en/configuration.md) for all options.
---
## πΈ Screenshots
Home
Document Upload
Add Readers
Integrated Reader

Reading Confirmed
My Confirmations
My Documents
Admin Settings

---
## π Documentation
### Getting Started
- **[Getting Started](docs/en/getting-started.md)** - Installation & first steps
- **[Configuration](docs/en/configuration.md)** - Environment variables
- **[OAuth Providers](docs/en/configuration/oauth-providers.md)** - Google, GitHub, GitLab, Custom
- **[Email Setup](docs/en/configuration/email-setup.md)** - SMTP configuration
### Features
- **[Signatures](docs/en/features/signatures.md)** - Ed25519 cryptographic flow
- **[Expected Signers](docs/en/features/expected-signers.md)** - Tracking & reminders
- **[Checksums](docs/en/features/checksums.md)** - Document integrity verification
- **[Document Storage](docs/en/features/storage.md)** - Optional upload (local or S3)
- **[Embedding](docs/en/features/embedding.md)** - oEmbed, iframes, integrations
- **[i18n](docs/en/features/i18n.md)** - Internationalization (5 languages)
### Technical
- **[Architecture](docs/en/architecture.md)** - Tech stack & design principles
- **[Database](docs/en/database.md)** - PostgreSQL schema & migrations
- **[API Reference](docs/en/api.md)** - REST endpoints & examples
- **[Deployment](docs/en/deployment.md)** - Production with Docker Compose
- **[Development](docs/en/development.md)** - Contributing & setup
---
## π Usage
### Request a Signature
```
https://your-domain.com/?doc=security_policy_2025
```
User authenticates (OAuth2 or MagicLink) and signs with one click.
### Embed in Your Tools
**iFrame**:
```html
```
**oEmbed** (Notion, Outline, Confluence):
```
Paste the embed URL: https://your-domain.com/embed?doc=policy_2025
Automatic embed via oEmbed discovery
```
**Open Graph** (Slack, Teams):
```
Paste direct URL: https://your-domain.com/?doc=policy_2025
URL unfurls automatically with signature count
```
> **Important**: Use `/embed?doc=...` for iframe integrations (Notion, Outline) and `/?doc=...` for direct links (emails, Slack).
See [docs/en/features/embedding.md](docs/en/features/embedding.md) for details.
---
## π‘οΈ Security
- **Ed25519** - State-of-the-art elliptic curve signatures
- **SHA-256** - Payload hashing for tampering detection
- **PKCE** - OAuth2 security (automatic)
- **AES-256-GCM** - Encrypted refresh tokens
- **Immutable timestamps** - PostgreSQL triggers
- **Rate limiting** - 5 auth/min, 100 req/min
- **HTTPS enforced** - Secure cookies only
See [docs/en/architecture.md](docs/en/architecture.md) for full security details.
---
## π§ Tech Stack
**Backend**: Go 1.24.5, PostgreSQL 16, Chi Router, OAuth2, Ed25519
**Frontend**: Vue 3, TypeScript, Vite, Pinia, Tailwind CSS, shadcn/vue
**DevOps**: Docker, Multi-stage builds, Distroless image (< 30MB)
**i18n**: 5 languages (fr, en, es, de, it)
**Coverage**: 72.6% (180+ unit tests, 33 integration tests)
---
## π€ 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
---
## π License
AGPLv3 - See [LICENSE](LICENSE) for details.
---
**Developed with β€οΈ by [Benjamin TOUCHARD](https://www.kolapsis.com)**