Wano 是为坎帕拉和乌干达提供的社交发现平台——地点、活动、体验、餐厅、社区和预订,全部集中在一个应用中。Wano × AFCON 2027 是我们的发布活动。
AI 翻译
Wano is the social discovery platform for Kampala and Uganda — places, events, experiences, restaurants, communities, and bookings, all in one app. Wano × AFCON 2027 is our launch campaign.
社交TypeScript · CSSGitHub @denisekiremire-a11y在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A Kampala-focused discovery, booking and rewards app for travellers in Uganda — browse and book hotels, restaurants, tours/experiences, transport, spas, attractions and rentals from Wano-verified vendors, earn Passport stamps and points, and redeem rewards. Every listing type stays pay-at-venue today; a behind-a-flag paid-bookings pilot (Flutterwave, with Pesapal planned next) is layered on top without changing that default. AFCON 2027 content (club pages, match tickets, venue pages) lives behind its own flag and reuses the same booking/rewards machinery rather than a parallel system.
src/proxy.ts (Next 16's
renamed middleware.ts) for route protection.postgres.js driver), with Postgres Row-Level Security as a second,
database-enforced layer under the app's own server-side authorization checks. See
RLS and database migrations below — this is the part most likely to
trip up a new environment.src/lib/session.ts,
src/lib/auth.ts), email verification, WhatsApp/SMS phone verification, and self-service password
reset — deliberately lightweight (no third-party auth provider) so it stays easy to reason about.PAID_BOOKINGS_ENABLED kill switch.src/lib/whatsapp.ts) for phone verification and reminders.capacitor.config.ts) — this
is a server-rendered app with server actions and live cookies, not a static export, so the native
shell loads the deployed site at runtime rather than bundling a build.src/app/globals.css).src/app/api/cron/*, Neon
for managed Postgres in production.Start a Postgres database. Either run the bundled one:
docker compose up -d
or point DATABASE_URL at any managed Postgres (Neon, Supabase, RDS, etc).
Configure environment variables:
cp .env.example .env.local
# then edit .env.local — set DATABASE_URL and generate an AUTH_SECRET:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Install dependencies (already done if you're continuing this session):
npm install
Push the schema, apply RLS, and seed demo data:
npm run db:push
# then every file in drizzle/manual_*.sql, in the order described below —
# db:push alone does not set up RLS or any other non-schema.ts SQL
npm run db:seed
npm run db:seed:wano
(db:seed:birthday, db:seed:journal and db:seed:clubs add more optional demo content for
those specific features — not required for a basic local setup.)
The seed scripts create the 5 fixed journeys, demo challenges, a handful of demo accredited
vendors (one pending accreditation), and demo accounts — all with password
WanoLocalDev-9214! (local dev only; see src/db/seed.ts if you change it):
[email protected] (already has 2 of 5 stamps)[email protected] (and several others — see src/db/seed.ts)[email protected]These credentials are for a local database only — never rendered on any page, and never the credentials for the live/production deployment.
Run the dev server:
npm run dev
Open http://localhost:3000.
(Optional) Admin email notifications. The admin gets an email whenever someone signs up (traveller or vendor), a vendor submits an accreditation document, or someone submits/applies to start a club. This works out of the box in a sort of way — without any setup it just logs the email to the server console instead of sending it, so nothing breaks, but nothing actually arrives anywhere either. To get real emails:
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗
RESEND_API_KEY in .env.local (and in your Vercel project's environment variables for
production).[email protected] (same as the site's public support
address) — set ADMIN_NOTIFICATION_EMAIL to change that.[email protected] address, which only
delivers to the email on your own Resend account. To send to any address, verify a real domain
under Domains in Resend, then set EMAIL_FROM to an address on that domain (e.g.
Wano <[email protected]>).NEXT_PUBLIC_APP_URL to your real deployed URL so the links inside notification emails
(e.g. "review this vendor", a password reset link) point somewhere real instead of
localhost:3000.