15 分钟构建 AI 全栈 MVP:NextJS + DeepSeek API 实战教程
💡 快速 MVP 秘诀: 利用现代技术栈+AI API,可以在 15 分钟内构建出一个可部署的全栈应用,快速验证你的想法并获取首批用户。
项目概览
你将构建: 一个 AI 驱动的商业画布生成器,帮助创业者和产品经理快速构建商业模型
技术栈: Next.js 15 (App Router) + Shadcn UI + DeepSeek API
适合人群: 有基础前端知识的开发者,想要快速构建 AI 驱动的 MVP
为什么这是一个好的 MVP 案例?
这个项目展示了现代 MVP 开发的核心要素:
- 快速实现: 15 分钟从零到可用产品
- 有价值核心: 解决商业规划这一真实需求
- 技术杠杆: 利用 AI API 提供核心价值,而非自己构建复杂功能
- 高扩展性: 可轻松迭代添加更多功能
- 易于获取用户: 产品经理和创业者有明确需求,容易找到前 100 位用户
准备工作
1. 开发环境准备
2. 下载代码模板
选择以下任一方式获取起始模板:
pnpm dlx degit jackiexiao/next-shadcn-template my-app或访问以下仓库手动下载:
- GitHub: https://github.com/jackiexiao/next-shadcn-template
- Gitee(国内): https://gitee.com/jackiegeek/next-shadcn-template
3. 获取 AI API 密钥
有两种方式获取 DeepSeek API 访问:
方式 1: 使用 Sealos 统一 API 服务(推荐,支持国内多种模型)
- 访问Sealos注册账号
- 在"AI 代理"服务中创建 API 密钥
- 获得的 API 密钥格式为
sk-xxxxxx
方式 2: 直接使用 DeepSeek 官方 API
- 访问DeepSeek 官网注册账号
- 在开发者设置中创建 API 密钥
4. 配置环境变量
在项目根目录创建.env文件,添加以下内容:
OPENAI_API_BASE_URL=https://aiproxy.hzh.sealos.run/v1
OPENAI_API_KEY=sk-your-api-key-here
OPENAI_MODEL_NAME=deepseek-chat同时创建.env.example文件(不含真实密钥)作为模板示例。
开发步骤
步骤 1: 启动项目(2 分钟)
cd my-app
pnpm install
pnpm dev访问 http://localhost:3000 确认项目正常运行。
步骤 2: 创建 API 端点(5 分钟)
在app/api/generate/route.ts文件中实现处理 AI 请求的端点:
import { NextResponse } from 'next/server';
import { OpenAI } from 'openai';
// 初始化OpenAI客户端
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_API_BASE_URL,
});
export async function POST(req: Request) {
try {
const { idea } = await req.json();
if (!idea) {
return NextResponse.json(
{ error: "请提供业务创意" },
{ status: 400 }
);
}
// 调用AI API生成商业画布
const response = await openai.chat.completions.create({
model: process.env.OPENAI_MODEL_NAME || 'deepseek-chat',
messages: [
{
role: "system",
content: "你是一位经验丰富的商业分析师,擅长帮助创业者分析商业模式。"
},
{
role: "user",
content: `基于用户输入的产品"${idea}"生成商业模式画布的九大要点,内容精炼,词汇精准直接。请按以下格式生成JSON响应:
{
"客户细分": [
{ "point": "point1" },
{ "point": "point2" }
],
"价值主张": [
{ "point": "point1" },
{ "point": "point2" }
],
// 包含其他模块:渠道通路、客户关系、收入来源、核心资源、关键业务、重要合作、成本结构
}`
}
],
temperature: 0.7,
response_format: { type: "json_object" }
});
// 解析AI返回的结果
const content = response.choices[0].message.content;
let canvasData;
try {
canvasData = JSON.parse(content || '{}');
} catch (error) {
console.error('解析JSON出错:', error);
return NextResponse.json(
{ error: "AI返回结果解析失败" },
{ status: 500 }
);
}
return NextResponse.json({ canvas: canvasData });
} catch (error) {
console.error('API调用出错:', error);
return NextResponse.json(
{ error: "处理请求时出错" },
{ status: 500 }
);
}
}步骤 3: 创建用户界面(5 分钟)
修改app/page.tsx文件,实现输入表单和展示结果的界面:
"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Loader2 } from "lucide-react";
export default function Home() {
const [idea, setIdea] = useState("");
const [canvas, setCanvas] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
async function handleSubmit(e) {
e.preventDefault();
if (!idea.trim()) return;
setLoading(true);
setError("");
try {
const response = await fetch("/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ idea }),
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.error || "生成商业画布时出错");
}
setCanvas(data.canvas);
} catch (err) {
setError(err.message || "请求处理失败,请重试");
console.error(err);
} finally {
setLoading(false);
}
}
return (
<main className="flex min-h-screen flex-col items-center p-4 md:p-24">
<div className="max-w-5xl w-full space-y-8">
<div className="text-center space-y-2">
<h1 className="text-3xl font-bold">商业画布生成器</h1>
<p className="text-gray-500">
输入你的创业想法,AI 将帮你生成完整的商业模式画布
</p>
</div>
<form onSubmit={handleSubmit} className="flex gap-2">
<Input
value={idea}
onChange={(e) => setIdea(e.target.value)}
placeholder="例如:一款基于AI的健身教练App"
className="flex-1"
/>
<Button type="submit" disabled={loading || !idea.trim()}>
{loading ? (
<>
<Loader2 className="mr-2 h-4 w-4 animate-spin" />
生成中...
</>
) : (
"生成画布"
)}
</Button>
</form>
{error && <p className="text-red-500 text-center">{error}</p>}
{canvas && (
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{Object.entries(canvas).map(([category, items]) => (
<Card key={category} className="overflow-hidden">
<CardHeader className="bg-gray-50 p-4">
<CardTitle className="text-lg">{category}</CardTitle>
</CardHeader>
<CardContent className="p-4">
<ul className="list-disc pl-5 space-y-1">
{Array.isArray(items) &&
items.map((item, index) => (
<li key={index}>{item.point}</li>
))}
</ul>
</CardContent>
</Card>
))}
</div>
)}
</div>
</main>
);
}步骤 4: 部署上线(3 分钟)
使用 Vercel 快速部署你的应用:
- 将代码推送到 GitHub 仓库
- 注册Vercel并导入你的代码仓库
- 在 Vercel 项目设置中添加环境变量(与
.env文件相同) - 点击部署即可上线
也可以使用命令行部署(需要先安装 Vercel CLI):
pnpm build
pnpm dlx vercel从 MVP 到获取前 100 个用户
现在你已经有了一个功能完整的 AI 商业画布生成器!接下来是寻找前 100 个用户的策略:
目标用户群体
这个产品适合以下人群:
- 创业初期的创始人/团队
- 产品经理需要迅速验证产品创意
- 商科学生学习商业模式构建
推广获客策略
-
内容营销:
- 在知乎/小红书发布"如何构建有效商业模式"相关内容
- 在 Medium/公众号发布使用教程,附带产品链接
-
社区分享:
- 在产品经理/创业者社区发布产品链接
- 获取初步用户反馈,迅速迭代产品
-
增值服务:
- 对活跃用户提供免费的 1 对 1 商业模式评估
- 收集真实反馈,并作为未来付费功能的基础
产品迭代路线
根据用户反馈,计划以下迭代方向:
-
基础增强 (1-2 天):
- 保存生成结果历史
- 导出为 PDF 功能
- 移动端优化
-
功能扩展 (1 周):
- 多种商业画布模板选项
- 细化各模块的问答引导
- 多语言支持
-
变现模式 (2 周):
- 基础功能保持免费
- 高级分析和行业洞察为付费功能
- 个性化咨询服务对接
常见问题解答
为什么使用 Sealos 这类中转 API 服务?
- 一次接入,支持多种国内大模型 API
- 不同模型有各自优势:有些响应快,有些写代码强,有些写作强
- 节省单独接入每个模型的开发时间
Vercel 部署的网站国内无法访问?
- 需要绑定自定义域名才能在国内正常访问
- B 站搜索"Vercel 绑定自定义域名"获取详细教程
如何增加商业画布的准确性?
- 可以调整 API 请求中的 system prompt,使其更专业
- 增加用户输入的引导问题,获取更详细信息
- 尝试不同的 AI 模型,找到效果最好的一个
视频教程
想要观看完整视频教程?点击这里查看详细教学视频