Backed
Les codes promo de tes créateurs YouTube, au même endroit. Cherche une marque, copie le code. Gratuit, sans compte.
Translation pending
Peer-to-peer package delivery. Send packages with travelers already going your route — faster, cheaper, greener.
CommerceTypeScript · JavaScriptGitHub @wnr-groupOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Peer-to-peer package delivery for India — Quiko matches senders who need a package delivered with travellers already going that way, holds the payment in escrow, and releases it on delivery. Quiko keeps a 2% commission.
This is a monorepo containing the web app (which is also the backend/API), the mobile app, and shared code.
| Path | What it is |
|---|---|
quiko-app/ | The main app — Next.js 16 web frontend and the backend/API and database. This is where you'll spend most of your time. |
quiko-app/core/ | Framework-agnostic shared logic (pricing, geo/detour, formatting, moderation). Imported by both web and mobile — keep it free of React/Next/RN. |
quiko-mobile/ | The Expo / React Native mobile app. Talks to quiko-app's API. Currently behind the web app (see plan.md). |
docs/ | Product, design, and business docs (incl. the vendor-onboarding checklist). |
WALKTHROUGH.md | Guided tour of every feature with demo logins — do this after setup to learn the app. |
plan.md | Living plan/journal: every feature built, decisions made, and what's pending. Read this first for context. |
quiko-prototype/ | The original static HTML prototype. Historical reference only — not the live app. |
Stack: Next.js 16 (App Router, React 19) · TypeScript · Drizzle ORM · PostgreSQL (Docker) · custom JWT auth (jose) · Tailwind · Expo/React Native.
⚠️
quiko-appruns a modified Next.js 16. Readquiko-app/AGENTS.md— some APIs differ from the docs you know.
node -v.cd quiko-app
# 1. Install dependencies
npm install
# 2. Create your local env file, then generate a session secret
cp .env.example .env.local
# edit .env.local → set SESSION_SECRET (run: openssl rand -base64 32)
# 3. Start Postgres (Docker) — runs on host port 5433
npm run db:up
# 4. Create the schema and load demo data
npm run db:migrate
npm run db:fixtures # full walkthrough dataset (recommended — see "Seeding")
# 5. Run the app
npm run dev
Open http://localhost:3000.
There's no real SMS in dev — OTP is mocked.
345678.[dev-otp] code for <phone> = 345678.| Role | Phone | Notes |
|---|---|---|
| Admin | 919999900001 | Full admin console (Profile → Open admin panel). |
| Admin | 919000000002 | — |
| Support | 91939313463 | Assist-only ops console (Profile → Open ops console). |
Two seed scripts (both idempotent — safe to re-run):
| Command | What it loads |
|---|---|
npm run db:fixtures | Recommended. A full walkthrough dataset — demo sender/traveller, staff roles, and matches in every state (paid, delivered+review, disputed, cancelled), plus a support thread and a moderation flag. Creates the logins below. |
npm run db:seed | Minimal — just a few traveller profiles + trips so the "find travellers" list isn't empty. |
npm run db:reset | Re-applies migrations, then runs db:seed. |
db:fixtures adds these demo logins (OTP 345678): Sam Sender 918888800001, Tara Traveller 918888800002 (plus the admin/support accounts above). Then follow WALKTHROUGH.md to tour every flow.
The seeds upsert and never delete login profiles — only their own fixture rows — so re-running won't wipe accounts you've created.
The web app (API) must be running first.
cd quiko-mobile
npm install
cp .env.example .env # already points at http://127.0.0.1:3000
npx expo start # press "i" for iOS simulator, "a" for Android
Use
127.0.0.1, notlocalhost, for the API URL — the iOS simulator resolveslocalhostto IPv6 where the dev server isn't listening.
quiko-app)| Command | Does |
|---|---|
npm run dev | Start web + API (hot reload). |
npm run db:up / db:down | Start / stop the Postgres container. |
npm run db:generate | Generate a new migration after editing db/schema.ts. |
npm run db:migrate | Apply pending migrations. |
npm run db:seed | Minimal seed (travellers + trips). |
npm run db:fixtures | Full walkthrough dataset (see Seeding). |
npm run db:reset | Migrate + reseed. |
npm run db:studio | Open Drizzle Studio (browse the DB). |
npm run lint | ESLint. |
npx tsc --noEmit | Type-check the whole app. |
Database: Postgres runs in Docker on host port 5433 (not the default 5432, to avoid clashes). Credentials are quiko / quiko / quiko (see docker-compose.yml).
quiko-app is frontend and backend. Server code lives in lib/queries/* (DB access), Server Actions in app/app/actions.ts, and JSON APIs (for mobile) in app/api/*. Pages are React Server Components.quiko-app/core/ and must stay framework-agnostic (pure TS).lib/payments.ts — Cashfree Easy Split ↔ simulated escrow (default).lib/otp.ts — MSG91 SMS ↔ mock OTP (default).lib/maps.ts — Mapbox (GL JS map, Search Box autocomplete, Directions routes).
Unlike the others this has no free fallback: without NEXT_PUBLIC_MAPBOX_TOKEN
the map and place search are unavailable and only a manual pin works.
Flip any to production by setting its env var — no code change.profiles.staff_role is user / support / admin (not the legacy is_admin). Gate with requireAdmin / requireSupport in lib/auth.ts.db/schema.ts → npm run db:generate → npm run db:migrate. Never hand-edit the DB.For the full feature history, decisions, and what's still pending, read plan.md. Deeper architecture notes are in quiko-app/ARCHITECTURE.md.
Copy the templates and fill them in — real values are never committed:
quiko-app/.env.example → quiko-app/.env.localquiko-mobile/.env.example → quiko-mobile/.envEverything runs locally with just DATABASE_URL, SESSION_SECRET, and DEV_OTP. The Cashfree and MSG91 keys are only needed to leave demo mode. NEXT_PUBLIC_MAPBOX_TOKEN is different — maps and place search do not work without it, in any environment.
spawn … node … ENOENT — the dev server was pinned to a Node version that got upgraded (e.g. after brew upgrade). Stop and restart npm run dev.ECONNREFUSED / DB errors — Postgres isn't up. Run npm run db:up (and make sure Docker Desktop is running).lsof -ti:3000 | xargs kill.EXPO_PUBLIC_API_URL uses 127.0.0.1 and the web app is running.npx tsc --noEmit) and run the flow you touched before pushing.main; open a PR for review rather than pushing to main directly..env.example templates are committed.