FAQ
Every answer here is checked against the code that ships.
Running it
Do I need a backend to run it?
No. The zip ships a .env.development that sets VITE_USE_MOCK_AUTH=true, so npm run dev answers its own /auth/* calls in the browser and serves every demo module from memory. Nothing reaches the network.
What are the sign-in details?
The form arrives filled with admin@admin.com and 12345678, because the same file sets VITE_DEMO_MODE=true. That is all it does: it pre-fills the form and shows no banner. With the demo backend on, any email and any password of six characters or more work, and you sign in as a Demo User who can do everything.
How do I turn the demo backend off?
Delete the two lines in .env.development when your own API answers. .env.example documents the API, auth, realtime and demo variables, with what each one does. Connect your API walks through the switch.
Why does sign-in fail on npm run preview?
Vite reads .env.development only for npm run dev, so a production build runs without the demo backend and expects a real API. Point it at one, or set VITE_USE_MOCK_AUTH=true in the environment of that build if you are deploying a public demo.
Nothing loads and sign-in fails with a 502
The mock is off and the proxy is pointing at nothing. Either turn the mock on, or set VITE_API_TARGET to a backend that is running.
My new page returns a 404
Restart the dev server. unplugin-vue-router reads the route table at boot, so a new file under a module's pages/ folder is not routed until it does.
Which Node version?
^20.19.0 || >=22.12.0. The repository pins 24 in .nvmrc.
Can I use pnpm or yarn?
The lockfile is npm's and .npmrc sets legacy-peer-deps=true, which is what the dependency tree resolves against. npm is the supported path; another package manager may work but is not what the project is tested with.
What is in it
Is this Nuxt?
No. It is a Vue 3 single-page app built with Vite, with file-based routes from unplugin-vue-router. There is no server-side rendering.
Which component library?
shadcn-vue on top of Reka UI, styled with Tailwind 4. The thirty primitives live in src/shared/components/ui/ as source you own and can edit. They are MIT licensed, per shadcn-vue's terms.
Is it all TypeScript?
Yes, in strict mode, with noUncheckedIndexedAccess on. npm run type-check is part of npm run build, so a type error fails the build.
Are there tests?
The zip ships no test runner, so every script in package.json runs as it is. Add the one your team uses. Vitest fits the Vite setup: npm install -D vitest jsdom @vue/test-utils, then a test script and a vitest.config.ts. The core tests under jsdom with no browser: the schema engine is pure, and useCrud, useConfig and the theme, font and i18n composables run without a mounted app.
How many languages, and is right-to-left real?
Nine ship: English, Arabic, German, Spanish, French, Indonesian, Italian, Portuguese and Turkish. Arabic sets dir="rtl" on <html> and the whole shell mirrors — sidebar, icons, table column order, and the partial fill on a rating. ui.direction pins the direction independently of language, so you can preview it without switching.
Can I delete the demo modules?
Yes. A module is a folder. Delete it, remove its two lines from src/main.ts, its entry from src/layouts/navItems.ts, and its namespace from the nine locale files.
Building on it
Where do I change the brand color?
theme.primary in src/core/config/defaultConfig.ts, or live in the settings drawer, which also gives you a paste-ready snippet. One hex becomes an eleven-stop ramp. See Theming.
Does the generator overwrite my work?
No. It refuses before writing anything if the module folder exists, if the route is already taken, or if the translation namespace is in use. --dry-run prints the full plan and writes nothing.
Why does the generator need a JSON file instead of my API URL?
Because it must not guess. It reads the JSON type of each value in a row you paste, and anything a shape cannot say — a date, an image, a set of statuses, a nullable field — you declare in annotations. A field named created_at is not a date until you say so.
What does the generator not write?
Permissions, the API call and its auth, the pagination request contract, and the store's contents. It cannot know them, so it marks the seam and says so in its output.
How do I hide a button from a role?
<template>
<Button v-permission="'create User'">
Add user
</Button>
</template>And gate the route with meta.permission. Neither is a security boundary; your backend is. See Permissions.
My table header shows products.fields.nmae
A translation key that no locale file defines renders as itself, deliberately, so a hand-written English label also works. That means a typo is silent. npm run check:i18n is the check that finds it.
Licensing
Can I use it for client work?
Yes. You may build for yourself, your employer or paying clients, modify the source, and deploy to any number of servers and users, across an unlimited number of projects within your license tier.
What may I not do?
Resell or redistribute the source as a template, kit or boilerplate; publish it in a public repository; build a competing admin template from it; or remove the copyright notice.
The third-party libraries it depends on keep their own licenses, which are typically MIT, Apache-2.0 or BSD-3-Clause.
If you are not sure whether something falls inside the license, ask before assuming. The contact address is in the LICENSE file.