create-nuxt-base 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/nuxt-base-template/.env.example +2 -1
  3. package/nuxt-base-template/CLAUDE.md +361 -0
  4. package/nuxt-base-template/README.md +127 -13
  5. package/nuxt-base-template/app/app.config.ts +67 -0
  6. package/nuxt-base-template/app/app.vue +10 -2
  7. package/nuxt-base-template/app/assets/css/tailwind.css +124 -84
  8. package/nuxt-base-template/app/components/Modal/ModalBase.vue +65 -0
  9. package/nuxt-base-template/app/components/Transition/TransitionSlide.vue +0 -2
  10. package/nuxt-base-template/app/components/Transition/TransitionSlideBottom.vue +0 -2
  11. package/nuxt-base-template/app/components/Transition/TransitionSlideRevert.vue +0 -2
  12. package/nuxt-base-template/app/composables/use-file.ts +19 -3
  13. package/nuxt-base-template/app/composables/use-share.ts +26 -10
  14. package/nuxt-base-template/app/error.vue +7 -43
  15. package/nuxt-base-template/app/layouts/default.vue +76 -4
  16. package/nuxt-base-template/app/layouts/slim.vue +5 -0
  17. package/nuxt-base-template/app/pages/auth/forgot-password.vue +64 -0
  18. package/nuxt-base-template/app/pages/auth/login.vue +71 -0
  19. package/nuxt-base-template/app/pages/auth/reset-password/[token].vue +110 -0
  20. package/nuxt-base-template/app/pages/index.vue +139 -2
  21. package/nuxt-base-template/app/public/favicon.ico +0 -0
  22. package/nuxt-base-template/docs/nuxt.config.ts +4 -0
  23. package/nuxt-base-template/docs/pages/docs.vue +663 -0
  24. package/nuxt-base-template/eslint.config.mjs +2 -1
  25. package/nuxt-base-template/nuxt.config.ts +73 -31
  26. package/nuxt-base-template/openapi-ts.config.ts +18 -0
  27. package/nuxt-base-template/package-lock.json +9781 -15157
  28. package/nuxt-base-template/package.json +30 -35
  29. package/nuxt-base-template/tsconfig.json +1 -1
  30. package/package.json +3 -3
  31. package/nuxt-base-template/app/composables/use-context-menu.ts +0 -19
  32. package/nuxt-base-template/app/composables/use-form-helper.ts +0 -41
  33. package/nuxt-base-template/app/composables/use-modal.ts +0 -84
  34. package/nuxt-base-template/app/composables/use-notification.ts +0 -29
  35. package/nuxt-base-template/app/middleware/admin.global.ts +0 -9
  36. package/nuxt-base-template/app/middleware/auth.global.ts +0 -9
  37. package/nuxt-base-template/app/middleware/logged-in.global.ts +0 -9
  38. package/nuxt-base-template/app/plugins/auth.server.ts +0 -72
  39. package/nuxt-base-template/app/plugins/form.plugin.ts +0 -21
  40. package/nuxt-base-template/app/plugins/pwa.plugin.ts +0 -114
  41. package/nuxt-base-template/tailwind.config.js +0 -21
@@ -2,6 +2,9 @@
2
2
  import tailwindcss from '@tailwindcss/vite';
3
3
 
4
4
  export default defineNuxtConfig({
5
+ // ============================================================================
6
+ // App Configuration
7
+ // ============================================================================
5
8
  app: {
6
9
  head: {
7
10
  title: 'Nuxt Base Starter',
@@ -9,108 +12,147 @@ export default defineNuxtConfig({
9
12
  },
10
13
  },
11
14
 
15
+ // ============================================================================
16
+ // Bug Reporting (Linear Integration via @lenne.tech/bug.lt)
17
+ // ============================================================================
12
18
  bug: {
13
- enabled: process.env.NODE_ENV !== 'production',
14
-
15
- // Linear Integration
19
+ enabled: process.env.APP_ENV !== 'production',
16
20
  linearApiKey: process.env.LINEAR_API_KEY,
17
21
  linearProjectName: process.env.LINEAR_PROJECT_NAME,
18
22
  linearTeamName: process.env.LINEAR_TEAM_NAME,
19
23
  },
20
24
 
21
- colorMode: {
22
- classSuffix: '',
23
- },
24
-
25
- compatibilityDate: '2024-09-05',
25
+ compatibilityDate: '2025-01-15',
26
26
 
27
+ // ============================================================================
28
+ // Styles
29
+ // ============================================================================
27
30
  css: ['~/assets/css/tailwind.css'],
28
31
 
32
+ // ============================================================================
33
+ // Development Server
34
+ // ============================================================================
29
35
  devServer: {
30
36
  port: 3001,
31
37
  },
32
38
 
39
+ // ============================================================================
40
+ // Experimental Features
41
+ // ============================================================================
33
42
  experimental: {
34
43
  asyncContext: true,
35
44
  renderJsonPayloads: false,
36
45
  typedPages: true,
37
46
  },
38
47
 
48
+ // ============================================================================
49
+ // Environment-specific Layers
50
+ // ============================================================================
51
+ extends: process.env.APP_ENV === 'development' ? ['./docs'] : [],
52
+
53
+ // ============================================================================
54
+ // Image Optimization
55
+ // ============================================================================
39
56
  image: {
40
57
  ipx: {
41
- maxAge: 2592000,
58
+ maxAge: 2592000, // 30 days
42
59
  },
43
60
  provider: 'ipx',
44
61
  },
45
62
 
63
+ // ============================================================================
64
+ // Auto-imports
65
+ // ============================================================================
46
66
  imports: {
47
67
  dirs: ['./states', './stores', './forms', './interfaces', './base', './plugins'],
48
68
  },
49
69
 
70
+ // ============================================================================
71
+ // Nuxt Modules
72
+ // ============================================================================
50
73
  modules: [
51
- '@nuxt/test-utils/module',
52
- '@lenne.tech/nuxt-base',
53
- '@lenne.tech/bug.lt',
54
- '@vueuse/nuxt',
55
- '@nuxtjs/google-fonts',
56
- '@nuxtjs/color-mode',
57
- 'dayjs-nuxt',
58
- '@nuxt/image',
59
- '@nuxtjs/plausible',
60
- '@nuxtjs/seo',
74
+ '@nuxt/test-utils/module', // E2E testing with Playwright
75
+ '@lenne.tech/bug.lt', // Bug reporting to Linear
76
+ '@vueuse/nuxt', // Vue composition utilities
77
+ 'dayjs-nuxt', // Date/time handling
78
+ '@nuxt/image', // Image optimization
79
+ '@nuxt/ui', // NuxtUI component library
80
+ '@nuxtjs/plausible', // Privacy-friendly analytics
81
+ '@nuxtjs/seo', // SEO optimization (sitemap, robots, og-image)
82
+ '@pinia/nuxt', // State management
61
83
  ],
62
84
 
63
- nuxtBase: {
64
- disableGraphql: false,
65
- generateTypes: process.env['GENERATE_TYPES'] === '1',
66
- gqlHost: process.env.API_URL + '/graphql',
67
- host: process.env.API_URL,
68
- schema: process.env.API_SCHEMA,
69
- storagePrefix: process.env.STORAGE_PREFIX,
70
- },
71
-
72
- // sets the default renderer to chromium
85
+ // ============================================================================
86
+ // OG Image Configuration
87
+ // ============================================================================
73
88
  ogImage: {
74
89
  defaults: {
75
90
  renderer: 'chromium',
76
91
  },
77
92
  },
78
93
 
94
+ // ============================================================================
95
+ // Analytics (Plausible)
96
+ // ============================================================================
79
97
  plausible: {
80
98
  apiHost: process.env.PLAUSIBLE_API_URL,
81
99
  ignoredHostnames: ['localhost'],
82
100
  },
83
101
 
102
+ // ============================================================================
103
+ // SEO: Robots.txt
104
+ // ============================================================================
84
105
  robots: {
85
106
  disallow: ['/app', '/auth', '/admin'],
86
107
  },
87
108
 
109
+ // ============================================================================
110
+ // Runtime Configuration (Environment Variables)
111
+ // ============================================================================
88
112
  runtimeConfig: {
89
113
  public: {
90
- gqlHost: process.env.API_URL + '/graphql',
114
+ apiUrl: process.env.API_URL || 'http://localhost:3000',
91
115
  host: process.env.API_URL,
92
116
  webPushKey: process.env.WEB_PUSH_KEY,
93
117
  },
94
118
  },
95
119
 
120
+ // ============================================================================
121
+ // SEO: Site Metadata
122
+ // ============================================================================
96
123
  site: {
97
124
  name: 'Nuxt Base Starter',
98
125
  url: process.env.SITE_URL,
99
126
  },
100
127
 
128
+ // ============================================================================
129
+ // SEO: Sitemap
130
+ // ============================================================================
101
131
  sitemap: {
102
132
  exclude: ['/app/**', '/auth/**'],
103
133
  },
104
134
 
135
+ // ============================================================================
136
+ // Rendering Configuration
137
+ // ============================================================================
105
138
  spaLoadingTemplate: false,
106
139
 
107
140
  ssr: true,
108
141
 
142
+ // ============================================================================
143
+ // Telemetry
144
+ // ============================================================================
109
145
  telemetry: false,
110
146
 
147
+ // ============================================================================
148
+ // Vite Configuration
149
+ // ============================================================================
111
150
  vite: {
112
151
  build: {
113
- cssMinify: 'lightningcss',
152
+ cssMinify: 'esbuild',
153
+ },
154
+ optimizeDeps: {
155
+ exclude: ['@tailwindcss/vite', 'lightningcss', '@vue/devtools-core', '@vue/devtools-kit', '@internationalized/date'],
114
156
  },
115
157
  plugins: [tailwindcss()],
116
158
  },
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from '@hey-api/openapi-ts';
2
+
3
+ export default defineConfig({
4
+ client: '@hey-api/client-fetch',
5
+ input: process.env.API_URL || 'http://127.0.0.1:3000/api-docs-json',
6
+ output: {
7
+ format: 'prettier',
8
+ lint: 'eslint',
9
+ path: './app/api-client',
10
+ },
11
+ plugins: [
12
+ '@hey-api/sdk',
13
+ {
14
+ dates: true,
15
+ name: '@hey-api/typescript',
16
+ },
17
+ ],
18
+ });