Key features
- JWT authentication — Cookie-based sessions with 8-hour token expiry and a global middleware that protects every route automatically.
- Role-based access control (RBAC) — Every action (view, add, edit, delete, detail) is gated per profile and per module through a permissions matrix.
- User management — Full CRUD for users, including active/inactive status and avatar uploads via Cloudinary.
- Profile management — Define roles (profiles) with an administrator flag and assign them to users.
- Module management — Register application modules and control access to them through the permissions matrix.
- Permissions matrix — A visual editor to assign bitwise permissions to any profile-module combination.
- Cloudinary photo uploads — Users can upload and manage profile photos with automatic compression.
- Cloudflare Turnstile CAPTCHA — Bot protection on the login form using Cloudflare’s privacy-friendly challenge.
Technology stack
| Layer | Technology |
|---|---|
| Framework | Nuxt.js 4 + Vue 3 |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Database | PostgreSQL (Neon Serverless) |
| ORM | Drizzle ORM |
| Auth | JSON Web Tokens (jsonwebtoken) |
| Password hashing | bcrypt |
| CAPTCHA | Cloudflare Turnstile (@nuxtjs/turnstile) |
| Image hosting | Cloudinary |
Get started
Quickstart
Run Nuxt Secure locally in minutes.
Authentication
Learn how JWT and Turnstile protect your app.
RBAC system
Understand how permissions are evaluated at runtime.
Permissions matrix
Configure granular access per profile and module.