尚未偵測到更新。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).