create-next-mdx-blog-app 2.1.4 → 2.1.6

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 (115) hide show
  1. package/README.md +12 -10
  2. package/bin/create.js +23 -22
  3. package/package.json +14 -3
  4. package/.env.example +0 -17
  5. package/CLAUDE.md +0 -401
  6. package/Dockerfile +0 -37
  7. package/components.json +0 -21
  8. package/eslint.config.mjs +0 -16
  9. package/mdx-components.tsx +0 -208
  10. package/mdx.d.ts +0 -5
  11. package/next.config.ts +0 -27
  12. package/postcss.config.mjs +0 -5
  13. package/public/file.svg +0 -1
  14. package/public/globe.svg +0 -1
  15. package/public/next.svg +0 -1
  16. package/public/vercel.svg +0 -1
  17. package/public/window.svg +0 -1
  18. package/scripts/action-script/article-manager.ts +0 -99
  19. package/scripts/bash/bulk-create-articles.sh +0 -26
  20. package/scripts/bash/bulk-s3-folder-creation.sh +0 -47
  21. package/scripts/bash/bulk-update-articles.sh +0 -36
  22. package/scripts/bash/create-missing-mdx-files.sh +0 -25
  23. package/scripts/bash/project_setup.sh +0 -19
  24. package/scripts/github-gist-fetcher/fetch-github-gist.ts +0 -72
  25. package/scripts/powershell/bulk-create-articles.ps1 +0 -29
  26. package/scripts/powershell/bulk-s3-folder-creation.ps1 +0 -47
  27. package/scripts/powershell/bulk-update-articles.ps1 +0 -38
  28. package/scripts/powershell/create-missing-mdx-files.ps1 +0 -24
  29. package/scripts/powershell/project_setup.ps1 +0 -18
  30. package/scripts/sql/DDL/alterTable.sql +0 -8
  31. package/scripts/sql/DDL/createIncrementViewCountFunction.sql +0 -19
  32. package/scripts/sql/DDL/createTable.sql +0 -16
  33. package/scripts/sql/DDL/createViewCountsTable.sql +0 -26
  34. package/scripts/sql/DDL/dropTable.sql +0 -3
  35. package/scripts/sql/DDL/truncateTable.sql +0 -2
  36. package/scripts/sql/DML/deleteArticle.sql +0 -6
  37. package/scripts/sql/DML/fetchArticle.sql +0 -15
  38. package/scripts/sql/DML/insertArticle.sql +0 -31
  39. package/scripts/sql/DML/updateArticle.sql +0 -12
  40. package/src/app/api/chat/route.ts +0 -85
  41. package/src/app/api/views/[slug]/route.ts +0 -19
  42. package/src/app/chat/page.tsx +0 -32
  43. package/src/app/code-sandbox/page.tsx +0 -22
  44. package/src/app/dynamic/[dynamic_blog_post]/error.tsx +0 -31
  45. package/src/app/dynamic/[dynamic_blog_post]/page.tsx +0 -40
  46. package/src/app/favicon.ico +0 -0
  47. package/src/app/globals.css +0 -224
  48. package/src/app/layout.tsx +0 -26
  49. package/src/app/not-found.tsx +0 -37
  50. package/src/app/page.tsx +0 -94
  51. package/src/app/sample-blog-post-page/page.tsx +0 -44
  52. package/src/components/ArticleAuthorBio.tsx +0 -27
  53. package/src/components/ArticleCoverImage.tsx +0 -17
  54. package/src/components/ArticleHeader.tsx +0 -56
  55. package/src/components/BackToTopButton.tsx +0 -34
  56. package/src/components/CodeSandboxClient.tsx +0 -107
  57. package/src/components/CodeSandboxFeaturesSection.tsx +0 -47
  58. package/src/components/CopyLinkButton.tsx +0 -38
  59. package/src/components/DynamicArticle.tsx +0 -38
  60. package/src/components/MDXRemoteArticle.tsx +0 -16
  61. package/src/components/ReadingProgressBar.tsx +0 -34
  62. package/src/components/SandpackEditor.tsx +0 -158
  63. package/src/components/SocialShareButtons.tsx +0 -34
  64. package/src/components/StaticArticle.tsx +0 -14
  65. package/src/components/ViewCounter.tsx +0 -32
  66. package/src/components/chat/chat-input.tsx +0 -57
  67. package/src/components/chat/chat-interface.tsx +0 -59
  68. package/src/components/chat/chat-messages.tsx +0 -130
  69. package/src/components/chat/chat-tool-result.tsx +0 -45
  70. package/src/components/customMDXComponents/CodeBlock.tsx +0 -64
  71. package/src/components/customMDXComponents/GistCodeBlock.tsx +0 -19
  72. package/src/components/customMDXComponents/GistCopyButton.tsx +0 -57
  73. package/src/components/customMDXComponents/GitHubGist.tsx +0 -84
  74. package/src/components/customMDXComponents/MDXImage.tsx +0 -23
  75. package/src/components/ui/avatar.tsx +0 -53
  76. package/src/components/ui/badge.tsx +0 -46
  77. package/src/components/ui/button.tsx +0 -59
  78. package/src/components/ui/textarea.tsx +0 -21
  79. package/src/github_gists/9570f2405cc511f8eea0c8758fc98e89.txt +0 -34
  80. package/src/lib/utils.ts +0 -6
  81. package/src/markdown/ArticleContent.mdx +0 -107
  82. package/src/markdown/DynamicArticleContent.mdx +0 -58
  83. package/src/utils/constants/AiChatConfig.ts +0 -24
  84. package/src/utils/constants/ArticleAuthorInfoList.ts +0 -10
  85. package/src/utils/constants/ArticleHeaderInfoList.ts +0 -18
  86. package/src/utils/constants/GitHubGistConstants.ts +0 -77
  87. package/src/utils/constants/SandboxExamples.ts +0 -142
  88. package/src/utils/constants/SocialShareConstants.ts +0 -20
  89. package/src/utils/constants/ToolConfig.ts +0 -21
  90. package/src/utils/constants/index.ts +0 -12
  91. package/src/utils/functions/crud/deleteArticle.ts +0 -17
  92. package/src/utils/functions/crud/fetchAllArticles.ts +0 -16
  93. package/src/utils/functions/crud/fetchArticle.ts +0 -26
  94. package/src/utils/functions/crud/index.ts +0 -5
  95. package/src/utils/functions/crud/insertArticle.ts +0 -45
  96. package/src/utils/functions/crud/updateArticle.ts +0 -26
  97. package/src/utils/functions/index.ts +0 -3
  98. package/src/utils/functions/rpc/incrementViewCount.ts +0 -19
  99. package/src/utils/functions/rpc/index.ts +0 -1
  100. package/src/utils/functions/supabase_client/SupabaseClient.ts +0 -13
  101. package/src/utils/functions/supabase_client/index.ts +0 -1
  102. package/src/utils/types/ArticleAuthorInfoType.ts +0 -6
  103. package/src/utils/types/ArticleCoverImageType.ts +0 -4
  104. package/src/utils/types/ArticleHeaderInfoType.ts +0 -13
  105. package/src/utils/types/ChatInputType.ts +0 -5
  106. package/src/utils/types/ChatInterfaceType.ts +0 -4
  107. package/src/utils/types/ChatMessagesType.ts +0 -8
  108. package/src/utils/types/GitHubGistType.ts +0 -5
  109. package/src/utils/types/MDXImageType.ts +0 -8
  110. package/src/utils/types/SandboxExampleType.ts +0 -5
  111. package/src/utils/types/SocialShareButtonsType.ts +0 -13
  112. package/src/utils/types/ToolConfigType.ts +0 -8
  113. package/src/utils/types/ToolInvocationPartType.ts +0 -9
  114. package/src/utils/types/index.ts +0 -12
  115. package/tsconfig.json +0 -49
package/README.md CHANGED
@@ -16,7 +16,7 @@ This starter kit is built with **Static Site Generation (SSG)** compliance at it
16
16
  ## ⚙️ Project Setup
17
17
 
18
18
  ### Prerequisites
19
- - **Node.js**: Ensure you have Node.js installed (version 15.x or later).
19
+ - **Node.js**: Ensure you have Node.js installed (version 18.17.0 or later).
20
20
  - **NPM**: Node Package Manager comes with Node.js.
21
21
 
22
22
  ### Installation
@@ -31,7 +31,13 @@ This starter kit is built with **Static Site Generation (SSG)** compliance at it
31
31
  npm install
32
32
  ```
33
33
 
34
- 3. Start the development server:
34
+ 3. Configure environment variables:
35
+ ```bash
36
+ cp .env.example .env.local
37
+ # Fill in SUPABASE_URL, SUPABASE_ANON_KEY, ANTHROPIC_API_KEY, and others in .env.local
38
+ ```
39
+
40
+ 4. Start the development server:
35
41
  ```bash
36
42
  npm run dev
37
43
  ```
@@ -40,17 +46,13 @@ If you want, you can also run this project using the following command:
40
46
  ```bash
41
47
  npx create-next-mdx-blog-app .
42
48
  ```
43
- This will instantly create and setup the starter kit project for you to work on.
49
+ This will clone the repository, install dependencies, and guide you through environment setup automatically.
44
50
 
45
51
  ## ![NPM](https://img.shields.io/badge/NPM-CB3837?style=for-the-badge&logo=npm&logoColor=white) Package
46
52
 
47
- ### Install via NPM
48
-
49
- ```bash
50
- npm install create-next-mdx-blog-app
51
- ```
53
+ ### Quick Start
52
54
 
53
- ### Quick Start with NPX
55
+ **`npx create-next-mdx-blog-app .`**
54
56
 
55
57
  ```bash
56
58
  npx create-next-mdx-blog-app .
@@ -59,7 +61,7 @@ npx create-next-mdx-blog-app .
59
61
  ### Package Information
60
62
 
61
63
  - **Package Name**: `create-next-mdx-blog-app`
62
- - **Version**: `2.1.4`
64
+ - **Version**: `2.1.5`
63
65
  - **License**: MIT
64
66
  - **Homepage**: [https://www.npmjs.com/package/create-next-mdx-blog-app](https://www.npmjs.com/package/create-next-mdx-blog-app/)
65
67
 
package/bin/create.js CHANGED
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env node
2
- const { execa } = require('execa');
3
2
  const path = require('path');
4
3
  const fs = require('fs');
5
- const inquirer = require('inquirer');
6
4
  const degit = require('degit');
7
5
 
8
6
  // GitHub repository URL of the template (the repo you want to clone)
@@ -20,16 +18,15 @@ async function setup() {
20
18
  }
21
19
 
22
20
  // Ask the user if they want to set up the blog
23
- const answers = await inquirer.prompt([
24
- {
25
- type: 'confirm',
26
- name: 'install',
27
- message: 'Do you want to set up a Next.js MDX blog app here?',
28
- default: true,
29
- },
30
- ]);
21
+ // inquirer v9+ is ESM-only — use dynamic import and the @inquirer/prompts confirm helper
22
+ const { confirm } = await import('@inquirer/prompts');
23
+ const { execa } = await import('execa');
24
+ const install = await confirm({
25
+ message: 'Do you want to set up a Next.js MDX blog app here?',
26
+ default: true,
27
+ });
31
28
 
32
- if (!answers.install) {
29
+ if (!install) {
33
30
  console.log('Aborted the installation.');
34
31
  return;
35
32
  }
@@ -37,22 +34,26 @@ async function setup() {
37
34
  console.log('Setting up the Next.js MDX blog app...');
38
35
 
39
36
  try {
40
- // Use degit to clone the repository into the current directory
41
- const emitter = degit(repoUrl, { cache: false, force: true });
37
+ // Clone only the Next.js app subdirectory directly into cwd
38
+ // so the user gets project files at the root without repo meta-files
39
+ console.log('Cloning repository...');
40
+ const emitter = degit(`${repoUrl}/mdx-medium-blog-post-provider`, { cache: false, force: true });
42
41
  await emitter.clone(cwd);
43
42
 
44
- // If there's no package.json, initialize it first
45
- if (!hasPackageJson) {
46
- console.log('Initializing npm project...');
47
- await execa('npm', ['init', '-y'], { stdio: 'inherit' }); // Initialize package.json with default values
48
- }
49
-
50
- // Install dependencies
43
+ // Install dependencies app root is now cwd
51
44
  console.log('Installing dependencies...');
52
- await execa('npm', ['install'], { stdio: 'inherit' });
45
+ await execa('npm', ['install'], {
46
+ stdio: 'inherit',
47
+ cwd,
48
+ });
53
49
 
54
50
  console.log('Next.js MDX Blog setup completed!');
55
- console.log('To start the app, run:');
51
+ console.log('');
52
+ console.log('Before starting the app, configure your environment variables:');
53
+ console.log(' cp .env.example .env.local');
54
+ console.log(' # Fill in SUPABASE_URL, SUPABASE_ANON_KEY, ANTHROPIC_API_KEY, and others in .env.local');
55
+ console.log('');
56
+ console.log('Then start the development server:');
56
57
  console.log(' npm run dev');
57
58
  }
58
59
  catch (error) {
package/package.json CHANGED
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "name": "create-next-mdx-blog-app",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
+ "description": "A production-ready technical blog starter kit built with Next.js, MDX, Supabase, and TypeScript.",
5
+ "author": {
6
+ "name": "Abdullah Muhammad",
7
+ "url": "https://github.com/CodingAbdullah"
8
+ },
9
+ "files": [
10
+ "bin/"
11
+ ],
4
12
  "bin": {
5
13
  "create-next-mdx-blog-app": "./bin/create.js"
6
14
  },
15
+ "engines": {
16
+ "node": ">=18.17.0"
17
+ },
7
18
  "homepage": "https://next-mdx-blog-starter-sigma.vercel.app/",
8
19
  "repository": {
9
20
  "type": "git",
@@ -21,7 +32,7 @@
21
32
  "supabase",
22
33
  "typescript"
23
34
  ],
24
- "license": "MIT License",
35
+ "license": "MIT",
25
36
  "scripts": {
26
37
  "dev": "next dev",
27
38
  "build": "next build",
@@ -47,7 +58,7 @@
47
58
  "degit": "^2.8.4",
48
59
  "execa": "^9.6.1",
49
60
  "gray-matter": "^4.0.3",
50
- "inquirer": "^13.3.2",
61
+ "@inquirer/prompts": "^8.3.2",
51
62
  "lucide-react": "^1.7.0",
52
63
  "next": "^16.2.1",
53
64
  "next-mdx-remote": "^6.0.0",
package/.env.example DELETED
@@ -1,17 +0,0 @@
1
- # Supabase — required for dynamic blog post fetching
2
- SUPABASE_URL=
3
- SUPABASE_ANON_KEY=
4
-
5
- # Anthropic — required for the Blog Assistant chat feature
6
- ANTHROPIC_API_KEY=
7
-
8
- # GitHub — optional but recommended for the <GitHubGist> component
9
- # Without a token, the GitHub API allows 60 requests/hr per IP.
10
- # With a token (read-only gist scope), the limit rises to 5,000 requests/hr.
11
- GITHUB_TOKEN=
12
-
13
- # GitHub username used to construct mdxgists.net URLs (defaults to CodingAbdullah)
14
- GITHUB_USERNAME=
15
-
16
- # Base URL for mdxgists.net links (defaults to https://mdxgists.net)
17
- GIST_BASE_URL=
package/CLAUDE.md DELETED
@@ -1,401 +0,0 @@
1
- # CLAUDE.md
2
- Production Configuration File
3
- Project: Next-MDX-Blog-Starter
4
-
5
- ---
6
-
7
- # PROJECT PURPOSE
8
-
9
- This repository is a production-grade Next.js App Router blog starter kit built using MDX, Supabase, AWS S3, and TypeScript strict mode.
10
-
11
- This project follows a Static Site Generation (SSG-first) architecture and is optimized for performance, SEO, maintainability, and production deployment.
12
-
13
- Claude Sonnet 4 is the primary coding model used to develop and maintain this project.
14
-
15
- Claude acts as a senior production engineer responsible for generating safe, correct, production-ready code.
16
-
17
- ---
18
-
19
- # CORE STACK
20
-
21
- Framework
22
- • Next.js (App Router only)
23
- • React
24
- • TypeScript (strict mode mandatory)
25
-
26
- Content
27
- • MDX
28
- • gray-matter
29
- • next-mdx-remote
30
-
31
- Database
32
- • Supabase (direct integration via Server Components)
33
-
34
- Storage
35
- • AWS S3 (image storage)
36
-
37
- UI
38
- • shadcn/ui
39
- • lucide-react
40
-
41
- Other
42
- • Docker
43
- • Vercel Analytics
44
-
45
- ---
46
-
47
- # ARCHITECTURE RULES
48
-
49
- This project is SSG-first.
50
-
51
- Claude must always prefer Static Site Generation over dynamic rendering.
52
-
53
- Use dynamic rendering ONLY when explicitly required.
54
-
55
- All blog posts must be statically generated when possible.
56
-
57
- Use generateStaticParams when applicable.
58
-
59
- Avoid unnecessary client-side rendering.
60
-
61
- Prefer Server Components over Client Components.
62
-
63
- Never introduce performance regressions.
64
-
65
- ---
66
-
67
- # TYPESCRIPT REQUIREMENTS (MANDATORY)
68
-
69
- All generated code must:
70
-
71
- • use strict mode
72
- • never use any
73
- • include explicit types
74
- • include proper return types
75
- • include proper interfaces
76
- • include proper error handling
77
- • be production-ready
78
- • be compile-ready immediately
79
-
80
- Never generate placeholder code.
81
- Never generate incomplete code.
82
- Never generate mock implementations.
83
-
84
- ---
85
-
86
- # PROJECT STRUCTURE RULES
87
-
88
- Claude must respect existing project structure.
89
-
90
- Key directories:
91
-
92
- /app
93
- /src/markdown
94
- /src/utils
95
- /src/utils/functions
96
- /src/utils/functions/crud
97
- /src/utils/functions/supabase_client
98
- /components
99
- /components/customMDXComponents
100
- /scripts
101
-
102
- Never restructure folders unless explicitly instructed.
103
-
104
- Never break import paths.
105
-
106
- ---
107
-
108
- # MDX SYSTEM RULES
109
-
110
- Static MDX:
111
-
112
- • Must be statically generated at build time
113
- • Must use gray-matter for frontmatter parsing
114
- • Must support metadata generation
115
-
116
- Dynamic MDX:
117
-
118
- • Must use next-mdx-remote
119
- • Must render server-side only
120
- • Must never expose raw MDX to client
121
-
122
- Frontmatter must include:
123
-
124
- ---
125
- title: string
126
- description: string
127
- publishedAt: string
128
- author: string
129
- tags: string[]
130
- image: string
131
- ---
132
-
133
- Claude must validate frontmatter when generating MDX logic.
134
-
135
- ---
136
-
137
- # MDX COMPONENT RULES
138
-
139
- File: mdx-components.tsx
140
-
141
- Must override:
142
-
143
- • img → Next Image
144
- • a → Next Link
145
-
146
- Must maintain accessibility.
147
-
148
- Custom MDX components must live inside:
149
-
150
- /components/customMDXComponents
151
-
152
- Examples:
153
-
154
- • CodeBlock
155
- • MDXImage
156
- • GitHubGist
157
-
158
- All components must be fully typed.
159
-
160
- ---
161
-
162
- # SUPABASE RULES
163
-
164
- Supabase is integrated directly.
165
-
166
- Claude must NOT create custom backend APIs unless explicitly instructed.
167
-
168
- Supabase client location:
169
-
170
- /src/utils/functions/supabase_client
171
-
172
- CRUD functions location:
173
-
174
- /src/utils/functions/crud
175
-
176
- Rules:
177
-
178
- • Never expose secrets
179
- • Never expose service role key
180
- • Use environment variables
181
- • Use server-side access
182
- • Respect Row Level Security
183
-
184
- Environment variables allowed:
185
-
186
- SUPABASE_URL
187
- SUPABASE_ANON_KEY
188
-
189
- Never commit .env files.
190
-
191
- ---
192
-
193
- # AWS S3 RULES
194
-
195
- AWS S3 is used for image storage.
196
-
197
- Claude must:
198
-
199
- • Use public image URLs
200
- • Use Next Image component
201
- • Never expose credentials
202
- • Never embed secrets
203
-
204
- S3 domain configuration exists in next.config.ts
205
-
206
- ---
207
-
208
- # DOCKER RULES
209
-
210
- Docker must:
211
-
212
- • Use multi-stage builds
213
- • Use production Node runtime
214
- • Exclude dev dependencies
215
- • Inject environment variables at runtime
216
- • Expose port 3000
217
-
218
- Claude must generate production-ready Docker configurations only.
219
-
220
- ---
221
-
222
- # ANALYTICS RULES
223
-
224
- Vercel Analytics is used.
225
-
226
- Claude must:
227
-
228
- • Keep analytics lightweight
229
- • Avoid blocking rendering
230
- • Avoid performance regressions
231
-
232
- ---
233
-
234
- # ARTICLE MANAGER SCRIPT RULES
235
-
236
- File:
237
-
238
- /scripts/action-script/article-manager.ts
239
-
240
- Commands supported:
241
-
242
- insert
243
- delete
244
- update
245
- fetch
246
- fetchAll
247
-
248
- Claude must:
249
-
250
- • Maintain CLI interface
251
- • Validate arguments
252
- • Provide proper error handling
253
- • Provide proper exit codes
254
- • Maintain strict typing
255
-
256
- Never break script interface.
257
-
258
- ---
259
-
260
- # PERFORMANCE RULES
261
-
262
- Claude must:
263
-
264
- • Prefer Server Components
265
- • Avoid unnecessary Client Components
266
- • Avoid hydration mismatches
267
- • Avoid blocking rendering
268
- • Optimize images
269
- • Optimize imports
270
- • Avoid unnecessary JS
271
-
272
- ---
273
-
274
- # SECURITY RULES
275
-
276
- Claude must never:
277
-
278
- • expose secrets
279
- • expose environment variables
280
- • leak Supabase credentials
281
- • introduce unsafe eval
282
- • introduce vulnerabilities
283
-
284
- All input must be validated.
285
-
286
- ---
287
-
288
- # GIT WORKFLOW RULES (CRITICAL)
289
-
290
- Claude must NEVER commit automatically.
291
-
292
- Claude must NEVER commit after generating code.
293
-
294
- Claude must NEVER create commits unless explicitly instructed.
295
-
296
- Claude must ONLY commit when the user explicitly writes:
297
-
298
- commit changes
299
- create commit
300
- commit this feature
301
-
302
- Without explicit commit instruction, Claude must NOT commit.
303
-
304
- All commits must be batch commits.
305
-
306
- ---
307
-
308
- # BRANCH WORKFLOW RULES (CRITICAL)
309
-
310
- Claude must NEVER create branches automatically.
311
-
312
- Claude must NEVER invent branch names.
313
-
314
- Branches may ONLY be created when explicitly instructed.
315
-
316
- Allowed prefixes:
317
-
318
- dev/
319
- fix/
320
-
321
- Claude must NEVER commit directly to main or master.
322
-
323
- Claude must NEVER switch branches automatically.
324
-
325
- ---
326
-
327
- # COMMIT SAFETY RULES
328
-
329
- When committing, Claude must ensure:
330
-
331
- • only relevant files included
332
- • no unrelated files included
333
- • no secrets included
334
- • code compiles
335
- • strict TypeScript passes
336
- • commit is atomic
337
-
338
- Commit messages must be clear and professional.
339
-
340
- ---
341
-
342
- # CODE GENERATION REQUIREMENTS
343
-
344
- All generated code must:
345
-
346
- • be production-ready
347
- • be fully typed
348
- • include error handling
349
- • follow modern best practices
350
- • follow Next.js App Router patterns
351
- • be modular
352
- • be maintainable
353
-
354
- Claude must never generate placeholder implementations.
355
-
356
- Claude must never generate incomplete logic.
357
-
358
- Claude must never generate fake implementations.
359
-
360
- ---
361
-
362
- # DEPLOYMENT TARGETS
363
-
364
- Project must remain compatible with:
365
-
366
- • Vercel
367
- • Docker deployment
368
- • Static hosting (SSG mode)
369
-
370
- Claude must preserve deployment compatibility.
371
-
372
- ---
373
-
374
- # DEFAULT BEHAVIOR
375
-
376
- Unless explicitly instructed otherwise, Claude must assume:
377
-
378
- • production environment
379
- • strict TypeScript required
380
- • Supabase integration active
381
- • AWS S3 active
382
- • SSG preferred
383
-
384
- Claude must behave as a senior production engineer.
385
-
386
- ---
387
-
388
- # PRIORITY ORDER
389
-
390
- Claude must prioritize in this order:
391
-
392
- 1 Security
393
- 2 Type safety
394
- 3 Performance
395
- 4 Maintainability
396
- 5 SEO
397
- 6 Developer experience
398
-
399
- ---
400
-
401
- END OF FILE
package/Dockerfile DELETED
@@ -1,37 +0,0 @@
1
- # Dockerize the Next.js application and run a production version in a container using this Dockerfile
2
- # Build stage
3
- FROM node:20-alpine AS builder
4
-
5
- WORKDIR /app
6
-
7
- # Copy package files
8
- COPY package*.json ./
9
-
10
- # Install dependencies
11
- RUN npm ci
12
-
13
- # Copy the rest of the application
14
- COPY . .
15
-
16
- # Build the application
17
- RUN npm run build
18
-
19
- # Production stage
20
- FROM node:20-alpine AS runner
21
-
22
- WORKDIR /app
23
-
24
- # Set environment variables
25
- ENV NODE_ENV=production
26
-
27
- # Copy necessary files from builder
28
- COPY --from=builder /app/next.config.ts ./
29
- COPY --from=builder /app/public ./public
30
- COPY --from=builder /app/.next/standalone ./
31
- COPY --from=builder /app/.next/static ./.next/static
32
-
33
- # Expose the port the app runs on
34
- EXPOSE 3000
35
-
36
- # Command to run the application
37
- CMD ["node", "server.js"]
package/components.json DELETED
@@ -1,21 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "new-york",
4
- "rsc": true,
5
- "tsx": true,
6
- "tailwind": {
7
- "config": "",
8
- "css": "src/app/globals.css",
9
- "baseColor": "neutral",
10
- "cssVariables": true,
11
- "prefix": ""
12
- },
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/hooks"
19
- },
20
- "iconLibrary": "lucide"
21
- }
package/eslint.config.mjs DELETED
@@ -1,16 +0,0 @@
1
- import { dirname } from "path";
2
- import { fileURLToPath } from "url";
3
- import { FlatCompat } from "@eslint/eslintrc";
4
-
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = dirname(__filename);
7
-
8
- const compat = new FlatCompat({
9
- baseDirectory: __dirname,
10
- });
11
-
12
- const eslintConfig = [
13
- ...compat.extends("next/core-web-vitals", "next/typescript"),
14
- ];
15
-
16
- export default eslintConfig;