create-next-mdx-blog-app 2.2.0 → 2.2.1
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.
- package/README.md +4 -1
- package/package.json +89 -87
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ npx create-next-mdx-blog-app .
|
|
|
61
61
|
### Package Information
|
|
62
62
|
|
|
63
63
|
- **Package Name**: `create-next-mdx-blog-app`
|
|
64
|
-
- **Version**: `2.2.
|
|
64
|
+
- **Version**: `2.2.1`
|
|
65
65
|
- **License**: MIT
|
|
66
66
|
- **Homepage**: [https://www.npmjs.com/package/create-next-mdx-blog-app](https://www.npmjs.com/package/create-next-mdx-blog-app/)
|
|
67
67
|
|
|
@@ -222,6 +222,9 @@ The project includes an interactive AI-powered chatbot optimised for readers of
|
|
|
222
222
|
## ✨ AI Article Summarizer
|
|
223
223
|
A **Generate TL;DR** button above every dynamic article streams a short Claude Haiku summary into a collapsible green panel. The slug is the only thing sent over the wire — `src/app/api/summarize/[slug]/route.ts` (edge) fetches the article server-side, applies an origin allow-list (`NEXT_PUBLIC_SITE_URL`) + per-IP rate limit (10/min) + 1-hour in-memory cache, then calls `streamText` and writes the final text to cache via `after()`. The client (`src/components/ArticleSummarizer.tsx`) uses `AbortController` to cancel in-flight requests on close/unmount. Model and prompt live in `src/utils/constants/AiSummaryConfig.ts`.
|
|
224
224
|
|
|
225
|
+
## 👥 Author Profile Pages
|
|
226
|
+
A `/authors` index lists every distinct contributor pulled from the Supabase `Article` table, with per-author profile routes at `/authors/[slug]` showing their bio, avatar, and every article they've published.
|
|
227
|
+
|
|
225
228
|
## 📬 Newsletter Subscription
|
|
226
229
|
The project ships with an integrated **newsletter signup form** powered by [Resend](https://resend.com). Visitors can subscribe from the home page or from the bottom of any article; new subscribers are added to a Resend **Audience** and immediately receive a welcome email.
|
|
227
230
|
|
package/package.json
CHANGED
|
@@ -1,87 +1,89 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "create-next-mdx-blog-app",
|
|
3
|
-
"version": "2.2.
|
|
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
|
-
],
|
|
12
|
-
"bin": {
|
|
13
|
-
"create-next-mdx-blog-app": "./bin/create.js"
|
|
14
|
-
},
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=18.17.0"
|
|
17
|
-
},
|
|
18
|
-
"homepage": "https://next-mdx-blog-starter-sigma.vercel.app/",
|
|
19
|
-
"repository": {
|
|
20
|
-
"type": "git",
|
|
21
|
-
"url": "git+https://github.com/CodingAbdullah/Next-MDX-Blog-Starter.git"
|
|
22
|
-
},
|
|
23
|
-
"keywords": [
|
|
24
|
-
"aws",
|
|
25
|
-
"docker",
|
|
26
|
-
"javascript",
|
|
27
|
-
"jsx",
|
|
28
|
-
"mdx",
|
|
29
|
-
"next",
|
|
30
|
-
"react",
|
|
31
|
-
"sql",
|
|
32
|
-
"supabase",
|
|
33
|
-
"typescript"
|
|
34
|
-
],
|
|
35
|
-
"license": "MIT",
|
|
36
|
-
"scripts": {
|
|
37
|
-
"dev": "next dev",
|
|
38
|
-
"build": "next build",
|
|
39
|
-
"start": "next start",
|
|
40
|
-
"lint": "next lint"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"@ai-sdk/
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@mdx-js/
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@radix-ui/react-
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
59
|
-
"@
|
|
60
|
-
"@types/
|
|
61
|
-
"@types/
|
|
62
|
-
"@types/react
|
|
63
|
-
"@types/react-
|
|
64
|
-
"@
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"eslint
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"next
|
|
74
|
-
"next-
|
|
75
|
-
"
|
|
76
|
-
"react
|
|
77
|
-
"react-
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
|
|
87
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "create-next-mdx-blog-app",
|
|
3
|
+
"version": "2.2.1",
|
|
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
|
+
],
|
|
12
|
+
"bin": {
|
|
13
|
+
"create-next-mdx-blog-app": "./bin/create.js"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18.17.0"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://next-mdx-blog-starter-sigma.vercel.app/",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/CodingAbdullah/Next-MDX-Blog-Starter.git"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"aws",
|
|
25
|
+
"docker",
|
|
26
|
+
"javascript",
|
|
27
|
+
"jsx",
|
|
28
|
+
"mdx",
|
|
29
|
+
"next",
|
|
30
|
+
"react",
|
|
31
|
+
"sql",
|
|
32
|
+
"supabase",
|
|
33
|
+
"typescript"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "next dev",
|
|
38
|
+
"build": "next build",
|
|
39
|
+
"start": "next start",
|
|
40
|
+
"lint": "next lint",
|
|
41
|
+
"doctor": "npx react-doctor@latest"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@inquirer/prompts": "^8.4.3",
|
|
45
|
+
"degit": "^3.0.0",
|
|
46
|
+
"execa": "^9.6.1"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@ai-sdk/anthropic": "^3.0.78",
|
|
50
|
+
"@ai-sdk/react": "^3.0.192",
|
|
51
|
+
"@codesandbox/sandpack-react": "^2.20.0",
|
|
52
|
+
"@eslint/eslintrc": "^3",
|
|
53
|
+
"@mdx-js/loader": "^3.1.1",
|
|
54
|
+
"@mdx-js/react": "^3.1.1",
|
|
55
|
+
"@next/mdx": "^16.2.6",
|
|
56
|
+
"@radix-ui/react-avatar": "^1.1.11",
|
|
57
|
+
"@radix-ui/react-slot": "^1.2.4",
|
|
58
|
+
"@supabase/supabase-js": "^2.106.1",
|
|
59
|
+
"@tailwindcss/postcss": "^4",
|
|
60
|
+
"@types/mdx": "^2.0.13",
|
|
61
|
+
"@types/node": "^25.9.1",
|
|
62
|
+
"@types/react": "^19",
|
|
63
|
+
"@types/react-dom": "^19",
|
|
64
|
+
"@types/react-syntax-highlighter": "^15.5.13",
|
|
65
|
+
"@vercel/analytics": "^2.0.1",
|
|
66
|
+
"ai": "^6.0.190",
|
|
67
|
+
"class-variance-authority": "^0.7.1",
|
|
68
|
+
"clsx": "^2.1.1",
|
|
69
|
+
"eslint": "^10",
|
|
70
|
+
"eslint-config-next": "16.2.6",
|
|
71
|
+
"gray-matter": "^4.0.3",
|
|
72
|
+
"lucide-react": "^1.16.0",
|
|
73
|
+
"next": "^16.2.6",
|
|
74
|
+
"next-mdx-remote": "^6.0.0",
|
|
75
|
+
"next-themes": "^0.4.6",
|
|
76
|
+
"react": "^19.2.6",
|
|
77
|
+
"react-doctor": "^0.2.14",
|
|
78
|
+
"react-dom": "^19.2.6",
|
|
79
|
+
"react-syntax-highlighter": "^16.1.1",
|
|
80
|
+
"resend": "^6.12.3",
|
|
81
|
+
"sonner": "^2.0.7",
|
|
82
|
+
"tailwind-merge": "^3.6.0",
|
|
83
|
+
"tailwindcss": "^4",
|
|
84
|
+
"tsx": "^4.22.3",
|
|
85
|
+
"tw-animate-css": "^1.4.0",
|
|
86
|
+
"typescript": "6.0.3",
|
|
87
|
+
"zod": "^4.4.3"
|
|
88
|
+
}
|
|
89
|
+
}
|