Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
Wano는 캄팔라·우간다를 위한 소셜 탐색 플랫폼으로, 장소·행사·경험·식당·커뮤니티·예약을 한 앱에 제공합니다
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.