The Valley Wholesale
3,116개 도매 상품을 검색·주문 구성·바로 Valley 영업 담당자에게 전송
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.