@michael-nussbaumer/nuxt-directus
v0.2.8
Published
Nuxt 4 module for Directus SDK with auth and TypeScript type generation
Readme
@michael-nussbaumer/nuxt-directus
A production-ready Nuxt 4 module that integrates Directus SDK with authentication, configurable global auth middleware, and automatic TypeScript type generation from Directus OpenAPI schema.
Features
- ✅ Directus SDK Integration - Seamless integration with @directus/sdk
- 🔐 Authentication Composables - Login, logout, register, verify email, and more
- 🛡️ Global Auth Middleware - Configurable route protection with page meta
- 📘 TypeScript Type Generation - Auto-generate types from Directus OpenAPI schema
- ⚙️ Flexible Configuration - Customize behavior via module options
- 🚀 Nuxt 4 Ready - Built for Nuxt 4 with full TypeScript support
Installation
pnpm add @michael-nussbaumer/nuxt-directusQuick Start
1. Add Module to nuxt.config.ts
export default defineNuxtConfig({
modules: ["@michael-nussbaumer/nuxt-directus"],
directus: {
enableGlobalMiddleware: true,
auth: {
loginPath: "/auth/login",
afterLoginPath: "/",
},
types: {
enabled: true,
openApiUrl: "http://directus.local/server/specs/oas",
output: "./schema/schema.d.ts",
authHeaderEnv: "DIRECTUS_OPENAPI_TOKEN",
},
},
});2. Set Environment Variables
Create a .env file:
DIRECTUS_URL=http://localhost:8055
DIRECTUS_OPENAPI_TOKEN=Bearer your-token-here3. Use Auth Composable
<script setup lang="ts">
const { login, user, isAuthenticated, logout } = useDirectusAuth();
const handleLogin = async () => {
await login({
email: "[email protected]",
password: "password",
});
};
</script>Page Meta Authentication
Protect your routes using page meta:
Public Page
definePageMeta({
auth: false,
});Protected Page (Default)
definePageMeta({
auth: true,
});Unauthenticated Only (Login Page)
definePageMeta({
auth: {
unauthenticatedOnly: true,
navigateAuthenticatedTo: "/dashboard",
},
});Custom Redirects
definePageMeta({
auth: {
navigateUnauthenticatedTo: "/custom-login",
},
});Documentation
Comprehensive guides for all module features:
- Getting Started - Installation, setup, and basic usage
- Configuration - Module options and environment variables
- Authentication - Login, logout, registration, and user management
- API Usage - CRUD operations, queries, and filtering
- Real-time WebSocket - Live subscriptions and event handling
- Middleware - Route protection and authentication flows
- Permissions - Advanced access control
- Type Generation - Automatic TypeScript types from OpenAPI schema
- Examples - Code examples and use cases
Or browse the docs folder in this repository.
Quick Reference
Module Options
{
enableGlobalMiddleware: true,
auth: {
loginPath: '/auth/login',
registerPath: '/auth/register',
afterLoginPath: '/',
afterLogoutPath: '/auth/login'
},
types: {
enabled: true,
openApiUrl: 'http://directus.local/server/specs/oas',
output: './schema/schema.d.ts',
authHeaderEnv: 'DIRECTUS_OPENAPI_TOKEN'
}
}Composables
useDirectusAuth()
Authentication methods:
login(credentials)- Authenticate userlogout()- End sessionregister(data)- Create accountfetchUser()- Get current userverifyEmail(token)- Verify emailrequestPasswordReset(email)- Request resetresetPassword(token, password)- Reset password
useDirectusApi()
API operations:
getItems(collection, query)- Fetch multiple itemsgetItem(collection, id, query)- Fetch single itemcreateOne(collection, data)- Create itemcreateMany(collection, data)- Create multiple itemsupdateOne(collection, id, data)- Update itemupdateMany(collection, ids, data)- Update multiple itemsdeleteOne(collection, id)- Delete itemdeleteMany(collection, ids)- Delete multiple itemscustomRequest(path, options)- Custom endpoint
useDirectusRealtime()
WebSocket subscriptions:
subscribe(collection, event, callback, options)- Listen to eventsunsubscribe(uid)- Remove specific subscriptionunsubscribeCollection(collection)- Remove all for collectionunsubscribeAll()- Remove all subscriptions
Development
Setup
pnpm installDevelopment Server
pnpm run devBuild
pnpm run buildPlayground
The module includes a playground for testing:
cd playground
pnpm run devLicense
MIT License © 2026 michael-nussbaumer Communications
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Repository
https://github.com/Michael-Nussbaumer/nuxt-directus-module
Documentation Site
Visit: https://michael-nussbaumer.github.io/nuxt-directus-module/
