当前位置: 首页 > news >正文

【开源】手把手教你搭建本地IT求职面经分享平台 | Next.js + Supabase + Vercel + Cloudflare 全栈项目,国内访问友好,零成本上线

【开源】手把手教你搭建本地IT求职面经分享平台 | Next.js + Supabase + Vercel + Cloudflare 全栈项目,国内访问友好,零成本上线

本项目完全开源,今天把完整部署教程整理出来,包含Cloudflare免费CDN加速方案,使用dpdns.org免费域名,真正零成本解决国内访问问题,大家可以照着搭一个自己城市的版本。


📌 项目预览

  • 线上地址:https://ncbyteinterview.dpdns.org (Cloudflare CDN加速,国内访问友好)
  • GitHub地址:https://github.com/longzhu0725/nanchang-it-interview
  • 目标城市:南昌(可自行替换成任意城市)

核心功能

模块功能说明
🏢企业库本地IT企业名录(30+家南昌企业),含行业、规模、标签、简介
📝面经分享面试/笔试经验,支持Markdown、匿名发布、难度评级
问答社区求职提问、回答、采纳最佳答案
🔐邀请码注册保证社区质量,避免垃圾账号
👍互动功能点赞、收藏、评论、举报
👨‍💼管理后台内容审核、邀请码生成、企业管理

技术栈

  • 前端框架:Next.js 14 (App Router) + TypeScript
  • UI组件:Tailwind CSS + shadcn/ui
  • 后端/数据库:Supabase (PostgreSQL + Auth + RLS)
  • 托管平台:Vercel(免费)
  • CDN加速:Cloudflare(免费)
  • 域名:dpdns.org免费域名(零成本),或自有域名

🚀 零成本快速上线(20分钟)

准备工作

全部用免费服务,不需要花一分钱:

平台用途官网
GitHub存放代码https://github.com
Supabase数据库+用户认证https://supabase.com
Vercel网站托管https://vercel.com
CloudflareCDN加速+DNS管理https://cloudflare.com
DigitalPlat免费域名(dpdns.org)https://dash.domain.digitalplat.org

💡 域名建议:DigitalPlat提供免费dpdns.org二级域名,可以托管NS到Cloudflare,完美实现CDN加速,零成本!如果想要一级域名,Namesilo买个.xyz域名一年几块钱。


第一步:Fork项目代码

  1. 打开:https://github.com/longzhu0725/nanchang-it-interview
  2. 点击右上角Fork到你自己的GitHub账号

第二步:创建Supabase数据库

2.1 新建项目
  1. 登录 https://supabase.com → New Project
  2. 填写项目名、数据库密码(记下来)
  3. 区域选Northeast Asia (Tokyo)Southeast Asia (Singapore)(离国内近)
  4. Create,等1-2分钟初始化
2.2 获取密钥

Settings → API,复制三个值保存到记事本:

  • Project URL(https://xxxx.supabase.co
  • anon public key(eyJ开头的长字符串)
  • service_role key(另一个长字符串,保密!)
2.3 执行数据库初始化SQL

SQL Editor → New query,按顺序执行3个SQL文件

  1. 0001_initial.sql- 表结构、RLS策略、初始企业数据
  2. 0002_notifications_and_views.sql- 通知、视图
  3. 0003_fix_admin_profile.sql- 用户触发器、管理员修复(必须执行!)

SQL文件地址:https://github.com/longzhu0725/nanchang-it-interview/tree/main/supabase/migrations

✅ 验证:执行SELECT tablename FROM pg_tables WHERE schemaname = 'public';,能看到profiles/companies/posts等表即成功。

2.4 临时配置认证回调

Authentication → URL Configuration:

  • Site URL:http://localhost:3000
  • Redirect URLs:http://localhost:3000/auth/callback
  • Save

域名配好后再改回来。


第三步:部署到Vercel

  1. 登录 https://vercel.com → Add New → Project
  2. Import你Fork的仓库(没看到就点Adjust GitHub App Permissions授权)
  3. Environment Variables添加三个变量:
NameValue
NEXT_PUBLIC_SUPABASE_URL你的Project URL
NEXT_PUBLIC_SUPABASE_ANON_KEYanon key
SUPABASE_SERVICE_ROLE_KEYservice_role key
  1. Deploy,等1-2分钟,得到Vercel默认域名(类似xxx.vercel.app

第四步:申请免费域名(已有域名可跳过)

如果你还没有域名,先申请一个免费dpdns.org域名:

  1. 注册DigitalPlat:https://dash.domain.digitalplat.org/signup
    • 需要GitHub账号认证(KYC)
    • 需要一个Gmail/Outlook邮箱
    • 地址信息可以用美国地址生成器生成
  2. 登录后点Domain Registration
  3. 后缀选dpdns.org(推荐,比qzz.io稳定)
  4. 输入你想要的前缀(如nanchangit),点Check Availability
  5. 如果没被占用,就注册成功了,保持页面打开不要关

如果你已经有ncbyteinterview.dpdns.org域名,跳过这步。


第五步:Cloudflare配置CDN+DNS(核心!国内访问关键)

这是解决国内访问Vercel慢的核心步骤,免费域名也能用!

5.1 Cloudflare添加站点
  1. 登录 https://dash.cloudflare.com
  2. 添加站点,输入你的完整域名(如nanchangit.dpdns.orgncbyteinterview.dpdns.org
  3. Free计划,继续
  4. DNS记录页面直接点继续
  5. 关键:复制Cloudflare给的两个Nameserver地址(类似xxx.ns.cloudflare.com
5.2 DigitalPlat修改NS服务器

回到DigitalPlat域名注册页面(或My Domains → 你的域名 → 管理):

  • 找到Nameservers设置,选择Custom Nameservers
  • 填入Cloudflare给的两个NS地址
  • 点Register/Save保存
5.3 等待NS生效

回到Cloudflare点"检查名称服务器",等待域名状态变为活动(Active),通常几分钟。

5.4 添加DNS记录

Cloudflare → 你的域名 → DNS → 记录,添加以下记录:

记录1:CNAME指向Vercel

类型名称内容代理状态TTL
CNAME@cname.vercel-dns.com🟠 已开启代理(橙色云朵)Auto

记录2(如果Vercel提示需要TXT验证)
如果Vercel显示"Verification Needed"和TXT记录要求,添加:

类型名称内容代理状态TTL
TXT_vercelVercel给你的vc-domain-verify=…值⚪ 仅DNS(灰色云朵)Auto

记录3(可选):www子域名

类型名称内容代理状态TTL
CNAMEwwwcname.vercel-dns.com🟠 已开启代理Auto
5.5 SSL配置(必须做!)

Cloudflare → SSL/TLS → 加密模式选Full(不要选Flexible,否则重定向循环)

5.6 开启优化(可选)
  • Speed → Optimization:开启Auto Minify(JS/CSS/HTML全勾)、Brotli、HTTP/3
  • Caching → Configuration:Browser Cache TTL设为4 hours

第六步:Vercel添加域名验证

  1. Vercel → 项目 → Settings → Domains
  2. 添加你的域名(如ncbyteinterview.dpdns.org
  3. 等待验证通过(显示绿色✓ Valid Configuration)
  4. 如果验证不通过:确认TXT记录是灰色云朵,CNAME正确,等待几分钟后点Refresh

第七步:更新Supabase回调地址

Supabase → Authentication → URL Configuration:

  • Site URL改为https://你的域名
  • Redirect URLs添加https://你的域名/auth/callback
  • 保留localhost和Vercel默认域名的回调地址
  • Save

第八步:创建管理员账号

  1. Supabase → Authentication → Users → Add user → Create new user
  2. 填写你的邮箱和密码,创建用户
  3. SQL Editor执行(换成你的邮箱):
INSERTINTOprofiles(id,email,nickname,role)SELECTid,email,split_part(email,'@',1),'admin'FROMauth.usersWHEREemail='你的邮箱@example.com'ONCONFLICT(id)DOUPDATESETrole='admin';
  1. 用管理员账号登录网站,访问/admin/invite-codes生成邀请码

🎉 部署完成!

访问你的域名测试,国内打开速度应该比Vercel默认域名快很多!


💻 本地开发

gitclone https://github.com/你的用户名/nanchang-it-interview.gitcdnanchang-it-interviewcp.env.local.example .env.local# 编辑.env.local填入三个Supabase密钥npminstallnpmrun dev

打开 http://localhost:3000 访问。

推送更新:

gitadd.gitcommit-m"修改说明"gitpush

Vercel自动部署,1-2分钟线上更新。如果Cloudflare缓存没更新,去Cloudflare → Caching → Purge Everything清缓存。


🏢 扩充南昌企业数据

项目默认6家初始企业,执行 nanchang-companies-data.sql 可扩充到30+家,涵盖华勤、龙旗、欧菲光、华为、阿里、腾讯、科大讯飞、思创数码、泰豪等南昌本地IT企业。


❓ 常见问题FAQ

Q1:Cloudflare配置后重定向过多(ERR_TOO_MANY_REDIRECTS)?

A:SSL/TLS模式选了Flexible,改成Full即可。

Q2:Vercel域名验证一直失败?

A:

  1. 确认TXT验证记录是灰色云朵(DNS only),橙色云朵会拦截TXT查询
  2. 多等几分钟DNS传播
  3. 临时把CNAME也切灰色,验证通过再切回橙色

Q3:DigitalPlat找不到修改NS的地方?

A:My Domains → 点击你的域名进入详情页,找Nameservers或DNS Settings。截图发给我帮你找。

Q4:管理员页面跳回首页?

A:执行SQL:

INSERTINTOprofiles(id,email,nickname,role)SELECTid,email,split_part(email,'@',1),'admin'FROMauth.usersWHEREemail='你的邮箱'ONCONFLICT(id)DOUPDATESETrole='admin';

退出重新登录。

Q5:免费域名dpdns.org靠谱吗?

A:DigitalPlat是非营利组织运营的免费域名服务,支持自定义NS,可以托管到Cloudflare,免费续期一年一次,轻量使用完全够用。博主推荐dpdns.org而不是qzz.io,证书申请更稳定。

Q6:更新后网站看不到变化?

A:Cloudflare缓存了旧版本,去Caching → Purge Everything清缓存。开发时可以开启Development Mode。

Q7:国内访问还是不够快?

A:

  1. 确认CNAME是橙色云朵(Proxied)
  2. 确认开启Auto Minify、Brotli、HTTP/3
  3. 添加Page Rule:*你的域名/*→ Cache Level: Cache Everything,Edge Cache TTL: 1 hour
  4. 进阶用户可以尝试Cloudflare SaaS回源优选IP方案(需要第二个域名+绑定支付方式,有封号风险)

✨ 技术亮点

  1. Cloudflare CDN免费加速:配合dpdns.org免费域名,零成本解决国内访问问题
  2. Row Level Security (RLS):数据库层面权限控制,安全可靠
  3. 邀请码机制:注册入口把关,保证社区质量
  4. 匿名发布:支持匿名分享,保护用户隐私
  5. Next.js SSR:服务端渲染,首屏快SEO友好
  6. TypeScript全栈:类型安全,减少bug
  7. 响应式设计:手机/平板/PC完美适配
  8. shadcn/ui极简UI:清爽专注内容

📜 开源协议

MIT License,可自由使用、修改、分发、商用。欢迎Fork做其他城市版本,给原仓库点个Star ⭐ 支持一下!


🙋 最后

如果这篇教程对你有帮助,欢迎点赞、收藏、关注三连!

有问题评论区留言,也可以去GitHub提Issue。

希望这个平台能帮助更多在南昌(或其他城市)找IT工作的朋友们,祝大家都拿到心仪的Offer!💪


相关链接:

  • 项目GitHub:https://github.com/longzhu0725/nanchang-it-interview
  • 线上地址:https://ncbyteinterview.dpdns.org
  • DigitalPlat免费域名:https://dash.domain.digitalplat.org
http://www.cnnetsun.cn/news/3034257.html

相关文章:

  • 激活函数的发展历程#
  • 询优化器<1>查询重写 / 逻辑优化
  • 整个过程没有引入新的线程
  • XCPC 2026 WEEK 14
  • Java毕设选题推荐:基于 SpringBoot 的剧本杀门店预约管理平台的设计与实现 基于 SpringBoot 的沉浸式剧本杀服务系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【机器学习入门】从零到一入门机器学习
  • 合租守则第17条
  • 【毕业设计】基于 SpringBoot 的便民医疗咨询服务平台的设计与实现 基于 SpringBoot 的医疗知识问答共享平台(源码+文档+远程调试,全bao定制等)
  • Java计算机毕设之基于 Java 的在线医生问诊问答平台的设计与实现 基于 Java 的医疗咨询答疑管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目:基于 SpringBoot 的分级医疗问答服务管理平台的设计与实现 基于 SpringBoot 的医疗科普问答互动系统 (源码+文档,讲解、调试运行,定制等)
  • ECC安装与配置:把 Claude Code 装进一个能稳定发挥的 Harness
  • list列表常用的方法(python)
  • 复杂遮挡与动态干扰场景下跨镜轨迹智能补链与 ID 稳定技术
  • 2026年6月最新|苏州SEO/GEO优化公司推荐|7家本地服务商测评对比
  • 非煤矿山用工规范大限将至,无人驾驶矿卡迎来政策强驱动
  • Claude 桌面版深度使用技巧指南
  • 【Claude】Usage credits required for 1M context 报错已解决
  • 华为OD机试2025C卷-相对开音节[100分]( Java _ Python3 _ C++ _ C语言 _ JsNode _ Go)实现100%通过率
  • 【前端分享】封神级React图片预览组件!7KB超轻量,手势/动画/自定义全拿捏!
  • PEO10500-b-PMMA18000聚氧乙烯-b-聚甲基丙烯酸甲酯PEO-PMMA
  • 探秘大模型训练数据:Claude、ChatGPT 等的数据从何而来?能否实现公平交易?
  • WordPress+WooCommerce大型商城解决方案
  • A.每日一题:1344. 时钟指针的夹角
  • 【2026】超详细中望CAD机械版2026安装保姆级教程,永久免费使用,机械设计环境配置指南,看完这一篇就够了
  • 冯·诺依曼结构和哈佛结构
  • 激光焊接不只是替掉了钎焊——它正在重新定义液冷板能长什么样
  • TensorFlow 学习
  • Linux命令-pwd(打印当前工作目录)
  • 三分钟带你认识有机溶质转运蛋白(OST)家族
  • AI引发存储危机,苹果Mac、iPad涨价,iPhone 18会跟进吗?