{"id":24794859,"url":"https://github.com/naftali100/nuxt-tooling-starter-template","last_synced_at":"2025-07-27T21:37:13.861Z","repository":{"id":274333910,"uuid":"922566653","full_name":"naftali100/nuxt-tooling-starter-template","owner":"naftali100","description":"A modern Nuxt 3 starter with TypeScript, Tailwind CSS, Clerk auth, Drizzle ORM, i18n with RTL support, and more to kickstart your projects.","archived":false,"fork":false,"pushed_at":"2025-02-05T09:20:34.000Z","size":164,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T18:49:34.756Z","etag":null,"topics":["nuxt","nuxt3","rtl","starter","template"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naftali100.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-26T15:01:47.000Z","updated_at":"2025-02-05T09:20:37.000Z","dependencies_parsed_at":"2025-03-24T18:42:23.769Z","dependency_job_id":"42340458-bbba-4559-b190-f0e655eaa781","html_url":"https://github.com/naftali100/nuxt-tooling-starter-template","commit_stats":null,"previous_names":["naftali100/nuxt-tooling-starter-template"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/naftali100/nuxt-tooling-starter-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftali100%2Fnuxt-tooling-starter-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftali100%2Fnuxt-tooling-starter-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftali100%2Fnuxt-tooling-starter-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftali100%2Fnuxt-tooling-starter-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naftali100","download_url":"https://codeload.github.com/naftali100/nuxt-tooling-starter-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftali100%2Fnuxt-tooling-starter-template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267428608,"owners_count":24085785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nuxt","nuxt3","rtl","starter","template"],"created_at":"2025-01-29T23:18:34.452Z","updated_at":"2025-07-27T21:37:13.844Z","avatar_url":"https://github.com/naftali100.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nuxt 3 Tooling Starter Template\n\nA feature-packed Nuxt 3 starter template designed to streamline your development process.\n\n## Features\n\n- 📘 **TypeScript support**.\n- ✨ **Prettier** for code formatting.\n- 🛠️ **ESLint** for linting.\n- ⚡ **Lint-staged** for efficient pre-commit checks.\n- 🌗 **Dark mode** support.\n- 🎨 **Tailwind CSS** integration.\n- 🧩 **Shadcn components** for reusable UI elements.\n- 🌐 **Internationalization (i18n)** with RTL support.\n- 🔒 **Clerk** integration for authentication.\n- 🗄️ **Drizzle ORM** for database management.\n- 🐘 **Postgres** as the database.\n- 🔔 **Vue-sonner** for toast notifications.\n- 📦 **pre-made components** switchers, confirm modal and more.\n- 🔒 **Security** configuration with strict CSP.\n- 📝 **Logging** with Winston.\n\n---\n\n## Getting Started\n\n### Step 1: Install Dependencies\n\nInstall the required project dependencies:\n\n```bash\nnpm install\n```\n\n### Step 2: Configure Authentication\n\n1. Sign up for a [Clerk](https://clerk.dev) account.\n2. Add your **Clerk Publishable Key** and **Secret Key** to the `.env` file:\n\n```env\nNUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your-publishable-key\nNUXT_CLERK_SECRET_KEY=your-secret-key\n```\n\n### Step 3: Update Configuration\n\nReplace placeholder values across the project. Search for `CHANGE_ME` and update them with your own values, such as your website's domain.\n\n### Step 4: customizing shadcn components\n\nremove the `components/ui` folder, remove `components.json` file, and run\n\n```bash\npnpm dlx shadcn-vue@latest init\n\npnpm dlx shadcn-vue@latest add\n```\n\n### Step 5: generate migrations \u0026 migrate database\n\n```bash\nnpx drizzle-kit generate \u0026\u0026 npm run db:migrate\n```\n\n### Step 6: run the app\n\n```bash\nnpm run dev\n```\n\n---\n\n## Security\n\nIf you encounter Content Security Policy (CSP) errors during development, follow these steps:\n\n1. Modify CSP settings in the `nuxt.config.ts` file.\n2. If issues persist, consider disabling strict mode.\n\nFor further guidance, refer to:\n\n- [Nuxt Security Module Documentation](https://nuxt-security.vercel.app/headers/csp)\n- [Strict CSP Configuration](https://nuxt-security.vercel.app/advanced/strict-csp)\n- [Improving CSP](https://nuxt-security.vercel.app/advanced/improve-security)\n\n---\n\n## Localization (i18n)\n\nInternationalization is pre-configured. To add or modify locales:\n\n1. Add your languages file in the `i18n` folder.\n2. Add the desired locale to the `locales` array in `nuxt.config.ts`.\n3. Update locale messages in `i18n.config.ts`.\n4. Define locale types in `types/locales.ts`.\n\n### Locale Object Structure\n\nEach locale object in `nuxt.config.ts` should include:\n\n- `code`: Locale code (e.g., `en`, `he`).\n- `language`: Language and region code (e.g., `en-US`, `he-IL`).\n- `dir`: Text direction (`ltr` or `rtl`).\n- `name`: Display name for the locale.\n\n#### Example Configuration\n\n```ts\ni18n: {\n  locales: [\n    {\n      code: 'he',\n      language: 'he-IL',\n      dir: 'rtl',\n      name: 'עברית',\n    },\n    {\n      code: 'en',\n      language: 'en-US',\n      dir: 'ltr',\n      name: 'English',\n    },\n    // Add more locales as needed...\n  ],\n}\n```\n\n### Notes\n\nSome preloaded translation files include components and libraries. Update these translations as needed.\n\n---\n\n## SEO\n\nBasic SEO configuration is included. To customize:\n\n1. Update the `site` settings in `nuxt.config.ts`.\n2. Modify the `title` and `description` in `app.vue`.\n\n#### Titles\n\nThe default configuration shows only the app name. To display page-specific titles, set the `title` property in `useHead` and adjust the `titleTemplate` property. Refer to the [Nuxt SEO documentation](https://nuxtseo.com/learn/mastering-meta/titles) for more details.\n\n---\n\n## Removing Features\n\n### Drizzle ORM\n\nTo remove Drizzle ORM:\n\n1. Uninstall `drizzle-orm`, `drizzle-kit`, and `drizzle-zod` from `package.json`.\n2. Remove related imports from `nuxt.config.ts` and `eslint.config.mjs`.\n3. Delete the `server/db` directory.\n\n### Clerk\n\nTo remove Clerk:\n\n1. Uninstall `vue-clerk` from `package.json`.\n2. Remove `clerk` imports from `nuxt.config.ts`.\n3. Delete `clerk.ts` and `auth.ts` from `server/middleware`.\n4. Remove the `contentSecurityPolicy` configuration related to Clerk in `nuxt.config.ts`. Update or redefine the policy based on your requirements.\n\n### Pre-made Components\n\nThis template comes with several pre-built components to streamline your development process, including:\n\n- **Theme Switcher**: Easily toggle between light and dark modes.\n- **Language Switcher**: Switch between different languages seamlessly.\n- **Copy Token Value**: Quickly copy token values with a single click.\n- **Confirmation Dialog**: User-friendly confirmation prompts.\n- **Breadcrumbs**: Navigate through your app with ease.\n\nIf you wish to remove these components, simply delete the corresponding files from the `components` directory.\n\n---\n\n## Miscellaneous\n\n### Customizing Page Transitions\n\nYou can personalize page transitions by modifying the CSS classes in `app.vue` and the `viewTransition` settings in `nuxt.config.ts`.\n\n### Redirecting Output\n\nNuxt errors in development mode can produce lengthy logs due to extensive configurations. To simplify debugging, redirect the output to a file by running:\n\n```bash\npnpm dev \u003e output.txt 2\u003e\u00261\n```\n\n### Adjusting Logging Levels\n\nCurrently, logging too verbose for easy debugging. Fine-tune the logging settings by editing the following files:\n\n- `utils/logger.ts`\n- `server/plugins/logger-plugin.ts`\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE).\n\n## TODO\n\n- [ ] update clerk to official version (done, theme switch not working)\n- [x] update tailwind to v4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaftali100%2Fnuxt-tooling-starter-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaftali100%2Fnuxt-tooling-starter-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaftali100%2Fnuxt-tooling-starter-template/lists"}