尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Web PWA ghép chuyến Hoà Lạc ↔ Hà Nội (ghép taxi / đi chung xe, chia chi phí). Beachhead: sinh viên. Spec đầy đủ: docs/roadmate-mvp-design.md. Kế hoạch triển khai: plans/260923-roadmate-mvp-web/plan.md. • Next.js 15 (App Router, TypeScript) — UI + API layer (Route Handlers) • Supabase (Postgres + Auth + RLS + Realtime + Storage) • Tailwind CSS v4 + shadcn/ui-style components • PWA (@ducanh2912/next-pwa), mobile-first • pnpm (bắt buộc — không dùng npm/yarn/bun) • Node ≥ 20 (repo test trên v22) • pnpm ≥ 10 • Docker (cho Supabase local)查看完整 README ↗
Web PWA ghép chuyến Hoà Lạc ↔ Hà Nội (ghép taxi / đi chung xe, chia chi phí).
Beachhead: sinh viên. Spec đầy đủ: docs/roadmate-mvp-design.md.
Kế hoạch triển khai: plans/260923-roadmate-mvp-web/plan.md.
@ducanh2912/next-pwa), mobile-firstpnpm install
# 1) Supabase local (Docker). In ra URL + anon/service keys.
pnpm db:start
pnpm db:status # copy URL + keys vào .env.local
# 2) App
cp .env.example .env.local # điền các biến từ db:status
pnpm dev # http://localhost:3000
Health check: /api/health — trả { ok: true } khi kết nối được Supabase.
Xem .env.example. Tóm tắt:
| Biến | Vị trí | Ghi chú |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | client + server | URL project (local hoặc cloud) |
NEXT_PUBLIC_SUPABASE_ANON_KEY | client + server | Anon key (RLS áp dụng) |
SUPABASE_SERVICE_ROLE_KEY | server-only | Bypass RLS — chỉ dùng trong Route Handlers. KHÔNG để lộ ra client. |
NEXT_PUBLIC_SITE_URL | client + server | Base URL của app |
⚠️ Không commit
.env.localhay bất kỳ secret nào.
| Lệnh | Việc |
|---|---|
pnpm dev | Chạy dev server |
pnpm build / pnpm start | Build + chạy production |
pnpm lint | ESLint |
pnpm typecheck | tsc --noEmit |
pnpm db:start / db:stop / db:status | Supabase local (Docker) |
pnpm db:reset | Reset DB + chạy lại migrations/seed |
pnpm db:types | Gen TypeScript types từ schema → lib/db/types.ts |
app/
(app)/ # shell mobile-first: TopBar + 5 tab + TabBar
board/ create/ mine/ notifs/ profile/
api/health/ # health check kết nối Supabase
layout.tsx # root: fonts, theme, toaster
manifest.ts # PWA manifest
components/
shell/ # TopBar, TabBar, ThemeToggle, PageStub
ui/ # button, switch, sonner (shadcn-style)
theme-provider.tsx
lib/
supabase/ # client (browser) + server/admin
utils.ts # cn()
supabase/ # config, migrations, seed (từ Phase 02)
zalo_id (nullable tới khi liên kết Zalo).