Go to file
eric e23cf9a03c Close Explore/Grow loops: visa wizard, jobs, lessons, gigs notify, map.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 09:26:56 -05:00
backend Close Explore/Grow loops: visa wizard, jobs, lessons, gigs notify, map. 2026-09-04 09:26:56 -05:00
css Initial commit: NomadFlow full-stack digital nomad platform with Next.js, FastAPI, and PocketBase. 2026-08-28 19:49:10 -05:00
deploy Fix live room iframe CSP blocking and add open-in-new-tab fallback. 2026-09-04 07:39:52 -05:00
frontend Close Explore/Grow loops: visa wizard, jobs, lessons, gigs notify, map. 2026-09-04 09:26:56 -05:00
js Initial commit: NomadFlow full-stack digital nomad platform with Next.js, FastAPI, and PocketBase. 2026-08-28 19:49:10 -05:00
pocketbase/pb_data Initial commit: NomadFlow full-stack digital nomad platform with Next.js, FastAPI, and PocketBase. 2026-08-28 19:49:10 -05:00
scripts Close Explore/Grow loops: visa wizard, jobs, lessons, gigs notify, map. 2026-09-04 09:26:56 -05:00
.env.production.example Add production deployment config for nomadweb.nomadro.com 2026-08-28 19:56:34 -05:00
.gitignore Migrate auth/community/social to PocketBase and wire SeaweedFS S3 uploads. 2026-08-30 11:19:30 -05:00
docker-compose.prod.yml Speed up deploys with BuildKit caches and incremental service rebuilds. 2026-08-29 01:36:33 -05:00
docker-compose.yml Rebrand to nomadro and add wifi score, savings goal, daily quote 2026-08-28 23:19:27 -05:00
index.html Rebrand to nomadro and add wifi score, savings goal, daily quote 2026-08-28 23:19:27 -05:00
package.json feat: NomadCNA community layer, social matching, payments, and ebook 2026-08-30 09:38:13 -05:00
README.md Wire connect-ring notifications and durable meetup RSVP. 2026-08-30 19:33:07 -05:00

nomadro · 数字游民旅居平台

品牌 nomadro — 用一行代码环游世界 🌏

线上: https://nomadweb.nomadro.com

产品路径(环环相扣)

功能很多,但不一次全部展示。导航与首页按三条环串联,每页只露出「接下来」:

环 做什么 主要入口
探索 Explore 发现去哪 目的地、地图、下一站、签证;(离首页后再出现计划 / 对比)
连接 Connect 遇见同行 活动 → 社区 → 匹配 → 私信
成长 Grow 路上做事 学院 → 赏金 → 工具箱(按需)→ 电子书
发现城市 ──► 写入计划 / 同城活动 ──► 社区 / 匹配 ──► 学院 / 赏金
  • 顶栏:探索 / 连接 / 成长 三组下拉,EN · 主题 · 通知 固定在右上
  • Ctrl+K 空态只给三环捷径;次要页面要搜索才出现
  • 工具箱默认精选 +「展开全部」,不再当全站站点地图
  • 连接闭环: 活动报名需登录(可取消);匹配 / 报名 / 讨论回复 / 赏金申请会写入通知中心;可选 ntfy 推送(NTFY_ENABLED + 设置里打开「推送」)
  • 订阅: 写入 PocketBase;配置 LISTMONK_* 后同步 Listmonk,未配置时文案如实提示「已登记」

技术栈

层级 技术 说明
前端 Next.js 16 + React 19 仅 UI;App Router、standalone
后端 FastAPI 全部业务逻辑(无 Next.js 业务 API Route)
数据 PocketBase 主存储;本地可 Mock 降级
对象存储 S3 兼容(生产 SeaweedFS) 媒体上传
部署 Caddy + systemd 原生进程;勿与同机 dylive 业务互相干扰

项目结构

nomadweb/
├── frontend/                 # Next.js(页面与组件)
│   ├── src/app/              # 路由
│   ├── src/components/       # UI(含 RingNext 下一步条)
│   └── src/lib/              # api / auth / i18n / rings
├── backend/                  # FastAPI
│   ├── app/routers/          # REST
│   ├── app/services/         # PocketBase、S3、城市深度等
│   └── app/data/             # Mock 降级(开发)
├── deploy/                   # Caddy、systemd、env 模板
├── scripts/                  # 本地开发与生产更新
└── pocketbase/               # PB 数据目录(本地可选)

快速开始

1. PocketBase(可选)

不启动则 API 使用 Mock。

docker run -d -p 8090:8090 -v ./pocketbase/pb_data:/pb_data ghcr.io/muchobien/pocketbase:latest

2. FastAPI

cd backend
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --port 8000

文档:http://localhost:8000/docs

3. Next.js

cd frontend
cp .env.local.example .env.local
npm install --legacy-peer-deps
npm run dev

访问:http://localhost:3000

.\scripts\dev.ps1   # Windows 一键

核心功能一览

按环归类(深度页会互相引导,避免平铺):

探索

能力 路径
地图 / 目的地 /#map /#destinations /destinations/[slug]
智能匹配 首页 CTA / M
下一站决策 /next-stop
城市对比 /compare
旅居计划 /plan(时间轴、预算、签证提醒、清单、ICS)
签证指南 /#visa

连接

能力 路径
活动 RSVP / 直播间 /meetups /meetups/[id]/live
社区讨论 /community
游民匹配 /dating
私信 /chat
通知 /notifications

成长

能力 路径
游民学院 /digital
赏金任务 /gigs
工具箱 /tools(实用小工具,非功能总览)
电子书 /book
会员 /join /pricing

演示账号:demo@nomadro.com / demo123

环境变量

Backend

POCKETBASE_URL=http://127.0.0.1:8090
POCKETBASE_ADMIN_EMAIL=...
POCKETBASE_ADMIN_PASSWORD=...
CORS_ORIGINS=http://localhost:3000
# S3(生产见服务器 deploy/nomadro-api.env)

Frontend

NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
NEXT_PUBLIC_SITE_URL=http://localhost:3000

生产构建:

NEXT_PUBLIC_API_URL=https://nomadweb.nomadro.com/api/v1
NEXT_PUBLIC_SITE_URL=https://nomadweb.nomadro.com

Git 与部署

仓库:gitea.dsx2020.com/eric/nomadweb · 分支 dev1

git checkout dev1
git pull origin dev1
# … 改代码 …
git push origin dev1
python scripts/deploy_update.py   # 服务器 pull + 增量构建重启
生产进程 地址
网站 https://nomadweb.nomadro.com
nomadro-web 127.0.0.1:3055
nomadro-api 127.0.0.1:8055
PocketBase 127.0.0.1:8090
S3 s3.nomadro.com → SeaweedFS

注意: 同机还跑有 dylive.nomadro.com(/opt/douyinWEB)。更新 nomadweb 时不要改动 / 限流 / 杀掉直播相关进程。

密钥仅放服务器 deploy/nomadro-api.env(模板见 *.env.example),勿提交。

快捷键

按键 功能
Ctrl+K 全局搜索(三环捷径)
M 智能匹配
P 旅居计划
T 工具箱
? 帮助
Esc 关闭弹窗

相关

  • 迭代说明:/changelog
  • 前端脚手架说明:frontend/README.md(以本文件为准)

License

MIT