Simple personal certificate management and automated renewal reminders. https://certified.env0.nl
Find a file
Joël van de Wouw 83daaca38b
Some checks failed
linter / quality (push) Failing after 3s
tests / ci (8.3) (push) Failing after 3s
tests / ci (8.4) (push) Failing after 3s
tests / ci (8.5) (push) Failing after 3s
Add Claude Code launch config for the dev server
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:39:05 +02:00
.claude Add Claude Code launch config for the dev server 2026-07-12 15:39:05 +02:00
.github Initial commit 2026-07-12 14:44:58 +02:00
app Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
bootstrap Initial commit 2026-07-12 14:44:58 +02:00
config Initial commit 2026-07-12 14:44:58 +02:00
database Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
lang Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
public Initial commit 2026-07-12 14:44:58 +02:00
resources Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
routes Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
storage Initial commit 2026-07-12 14:44:58 +02:00
tests Replace email-only sharing with secure share pages 2026-07-12 15:38:43 +02:00
.editorconfig Initial commit 2026-07-12 14:44:58 +02:00
.env.example Initial commit 2026-07-12 14:44:58 +02:00
.gitattributes Initial commit 2026-07-12 14:44:58 +02:00
.gitignore Initial commit 2026-07-12 14:44:58 +02:00
.npmrc Initial commit 2026-07-12 14:44:58 +02:00
artisan Initial commit 2026-07-12 14:44:58 +02:00
boost.json Initial commit 2026-07-12 14:44:58 +02:00
composer.json Initial commit 2026-07-12 14:44:58 +02:00
composer.lock Initial commit 2026-07-12 14:44:58 +02:00
package-lock.json Initial commit 2026-07-12 14:44:58 +02:00
package.json Initial commit 2026-07-12 14:44:58 +02:00
phpstan.neon Initial commit 2026-07-12 14:44:58 +02:00
phpunit.xml Initial commit 2026-07-12 14:44:58 +02:00
pint.json Initial commit 2026-07-12 14:44:58 +02:00
README.md Initial commit 2026-07-12 14:44:58 +02:00
vite.config.js Initial commit 2026-07-12 14:44:58 +02:00

Certified

Certified is a self-hosted certificate manager built on Laravel 13, Livewire 4, and Flux. It helps you keep track of certificates (diplomas, licenses, compliance documents, etc.), organize them into categories, and get notified before they expire.

Features

  • Certificate management — upload, edit, and download certificates, organized by category
  • OCR extraction — automatically read certificate details on upload via a pluggable OCR backend (Klippa, Mistral, or none)
  • Expiry notifications — email alerts when a certificate is expiring soon or has expired
  • Secure sharing — share a certificate with an external recipient via a signed URL, without requiring them to log in
  • Multi-language support

Stack

  • Laravel 13 (Octane-ready)
  • Livewire 4 + Flux UI
  • Tailwind CSS 4 / Vite
  • Laravel Fortify for authentication

Getting started

composer install
npm install

cp .env.example .env
php artisan key:generate

php artisan migrate

npm run dev
# in another terminal
php artisan serve

Testing

composer test

OCR providers

The OCR backend is configurable via app/Ocr. Available providers: NoneProvider (disabled), KlippaProvider, and MistralProvider. Configure credentials in .env.