Skip to content

Project Structure ​

Resux supports root-level application directories and matching app/ directories for the main application conventions.

Common structure ​

txt
my-app/
  app.vue
  error.vue
  resux.config.ts
  resux.halal.config.ts
  env.d.ts
  tsconfig.json
  pages/
  components/
  layouts/
  composables/
  utils/
  shared/
  plugins/
  middleware/
  enhancements/
  client-enhancements/
  islands/vue/
  server/
    api/
    routes/
    middleware/
    plugins/
    utils/
  assets/
  public/
  types/

Most application directories can also live under app/, including pages, components, layouts, plugins, middleware, enhancements, and the app/error components.

Root files ​

FilePurpose
app.vueOptional application shell. Usually contains <ResuxPage />.
error.vueOptional error renderer for not-found and server errors.
resux.config.tsFramework, app head, runtime config, CSS, modules, packages, deployment, media, i18n, and route rules.
resux.halal.config.tsSafety policy, project description, evidence, review contact, and optional AI settings.
env.d.tsAdds generated Resux globals and application types.
tsconfig.jsonTypeScript project configuration.
nitro.config.tsNitro deployment/server configuration.
.env.exampleNon-secret environment variable documentation.

Application directories ​

DirectoryBehavior
pages/File-based routes. Dynamic and catch-all segments are supported.
components/Auto-discovered Resux components. Modules can add more directories.
layouts/Named layouts selected through page metadata.
composables/Auto-imported shared functions and package-analysis input.
utils/Auto-imported shared utilities.
shared/Auto-imported shared modules.
plugins/App plugins. .client and .server suffixes set execution mode.
middleware/Named and global route middleware. .global marks global middleware.
enhancements/Client enhancement plugin files.
client-enhancements/Explicit client enhancement plugin files.
islands/vue/Full Vue runtime island components.
assets/Source assets and global CSS. /assets/* imports are served safely.
public/Static files served from the web root.
types/Application declarations and module augmentation.

Server directories ​

DirectoryBehavior
server/api/Handlers mounted under /api.
server/routes/Custom handlers mounted without the /api prefix.
server/middleware/Request middleware before APIs, public files, and pages.
server/plugins/Server-only setup included in package analysis and Nitro integration.
server/utils/Server-only auto-imported utilities.

Generated directories ​

DirectoryPurpose
.resux/Compiler manifests, server modules, browser handlers, client assets, diagnostics, generated templates, and generated types.
.resux/vite-client/Development client sources consumed by Vite.
.resux/client/Production browser runtime, plugins, middleware, handlers, chunks, and assets.
.resux/server/Development/server modules and manifests.
.resux/server-bundle/Bundled production server manifest.
.resux/dev/Inspectable development manifests and diagnostics.
.resux/types/Generated type declarations.
.resux-nitro/Generated Nitro bridge files.
.nitro/Nitro working output.
.output/Deployable Nitro output.
.resux-generated/Persistent generated media cache when enabled.

Generated output should be ignored by Git and regenerated with resux prepare, resux dev, or resux build.

Naming suffixes ​

TypeScript files support suffixes such as:

txt
plugins/analytics.client.ts
plugins/database.server.ts
middleware/auth.ts
middleware/log.global.ts
middleware/admin.server.ts

Modules can also register files explicitly and override their mode, global status, or public name.

See File Conventions for the complete mapping.

Source-aligned documentation for the Resux resumable web framework.