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.
- β 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
pnpm add @michael-nussbaumer/nuxt-directusexport 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",
},
},
});Create a .env file:
DIRECTUS_URL=http://localhost:8055
DIRECTUS_OPENAPI_TOKEN=Bearer your-token-here<script setup lang="ts">
const { login, user, isAuthenticated, logout } = useDirectusAuth();
const handleLogin = async () => {
await login({
email: "user@example.com",
password: "password",
});
};
</script>Protect your routes using page meta:
definePageMeta({
auth: false,
});definePageMeta({
auth: true,
});definePageMeta({
auth: {
unauthenticatedOnly: true,
navigateAuthenticatedTo: "/dashboard",
},
});definePageMeta({
auth: {
navigateUnauthenticatedTo: "/custom-login",
},
});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.
{
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'
}
}Authentication methods:
login(credentials)- Authenticate userlogout()- End sessionregister(data)- Create accountfetchUser()- Get current userverifyEmail(token)- Verify emailrequestPasswordReset(email)- Request resetresetPassword(token, password)- Reset password
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
WebSocket subscriptions:
subscribe(collection, event, callback, options)- Listen to eventsunsubscribe(uid)- Remove specific subscriptionunsubscribeCollection(collection)- Remove all for collectionunsubscribeAll()- Remove all subscriptions
pnpm installpnpm run devpnpm run buildThe module includes a playground for testing:
cd playground
pnpm run devMIT License Β© 2026 michael-nussbaumer Communications
Contributions are welcome! Please feel free to submit a Pull Request.
https://github.com/Michael-Nussbaumer/nuxt-directus-module
Visit: https://michael-nussbaumer.github.io/nuxt-directus-module/