Build composable Nuxt applications with OSDD.
nuxt-osdd brings Open Source Driven Development to Nuxt. It gives you a simple way to declare technical/ and functional/ layers, and CLI commands to generate them quickly.
import { defineOSDDNuxtConfig } from 'nuxt-osdd' export default defineOSDDNuxtConfig({ osdd: { technical: ['Authentication', 'Permission'], functional: ['Contracts', 'Posts'] } })
Why OSDD?
functional/ for business features
Keep product domains like Users, Contracts, or Posts inside functional/. Each layer can own its pages, components, composables, and assets without mixing in infrastructure concerns.
technical/ for shared infrastructure
Put authentication, permissions, API clients, database adapters, and other cross-cutting concerns in technical/ so they stay reusable and independent from business code.
Explicit separation of concerns
In many Nuxt projects, business features and technical building blocks end up mixed together. OSDD gives each concern a clear place: functional/ for product domains and technical/ for shared infrastructure.
Simple configuration
defineOSDDNuxtConfig lets you declare your technical and functional layers in one small osdd block instead of wiring conventions manually.
Built-in layer generation
Generate a new layer in technical/ or functional/ with a ready-to-use structure including nuxt.config.ts, app/, and README.md.
Scales with your app
Add new domains and technical modules as the project grows while keeping a structure that stays predictable for the whole team.
What nuxt-osdd changes in practice
Before: concerns are easy to mix
In a growing Nuxt app, authentication, API code, permissions, and product features can easily evolve side by side with no shared convention. That makes ownership and boundaries less obvious over time.
With OSDD: the role of each folder is clear
. ├── technical │ ├── Authentication │ └── Permissions └── functional ├── Contracts └── Posts
One config entrypoint
Declare your nuxt config with
defineOSDDNuxtConfig({ osdd: { technical: [...], functional: [...] } })
and let the module wire the setup for you.