Wocart
Wocart runs the whole cash-on-delivery business for Algerian stores: an Arabic-first checkout, phone verification, Yalidine, ZR Express, NOEST, Guepex and 82 EcoTrack couriers, your own drivers, and M
翻译准备中
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗GreenStore is the frontend of an Azerbaijani classifieds marketplace for plants, trees, garden products and landscaping services. Individuals and businesses publish ads, and buyers contact sellers directly. It works like Turbo.az: there is no cart and no checkout.
It is built from the approved Figma design:
FIGMA_AUDIT.md covers the screens, tokens, assets, data and known gaps.IMPLEMENTATION_REPORT.md covers the original React + Vite build and how it was verified.MIGRATION_PLAN.md and MIGRATION_REPORT.md cover the move to the
Next.js App Router.SEO_ARCHITECTURE.md covers rendering, canonical and indexing rules, structured data, the
sitemap and robots.txt.Demo build — not indexable. There is no backend yet. All listings, sellers, services, people, phone numbers and statistics are sample data copied from the Figma design (
src/data/). Login and registration are simulated in the browser: any well-formed input signs in to the demo seller account, nothing is sent to a server, and everything a visitor changes is kept only in that browser'slocalStorage. A "Demo versiya" banner says so on every page. While the data is sample data, every page isnoindex, robots.txt disallows crawling, and the sitemap is empty (seesrc/seo/env.ts).
@tailwindcss/postcss. The design tokens live in src/styles/index.css under @theme.lucide-react icons. Every icon in the design is a Lucide glyph.@fontsource/inter.npm ci # Node 22 (see .nvmrc / "engines")
npm run dev # http://localhost:3000
npm run build # production build (includes the TypeScript check)
npm start # serve the production build on :3000
npm run typecheck
npm run lint # ESLint (eslint-config-next: core-web-vitals + typescript)
npm test # vitest run
CI (.github/workflows/ci.yml) runs npm ci, lint, typecheck, the unit tests and the production build on every pull
request and on pushes to main.
None are required. Copy .env.example to .env.local to override them locally.
| Variable | Default | Purpose |
|---|---|---|
NEXT_PUBLIC_SITE_URL | Vercel URL, else http://localhost:3000 | Public origin for canonical URLs, Open Graph, the sitemap and robots.txt |
NEXT_PUBLIC_DEMO_MODE | true | "Demo versiya" banner |
SEO_INDEXABLE | false | Indexing opt-in. It only takes effect together with DATA_SOURCE ≠ mock |
DATA_SOURCE | mock | mock: Figma sample data. api: the future Web API repository, not implemented yet |
src/
app/ Next.js routes: route groups (home)/(main)/(auth)/(workflow)/(admin), layouts, metadata,
robots.ts, sitemap.ts, not-found pages
views/ page bodies rendered by the routes (server components, plus client pages for private areas)
components/ ui/ (Button, Badge, Field, Panel, Notice, Dialog, Pagination…), cards/,
layout/ (header, footer, frames, ClientGate + loading frames)
features/ page-specific components and client islands, grouped by area
(home, search, listing, seller, services, account, post-ad, admin, contact)
services/ data-access boundary: MarketplaceRepository interface + mock implementation, query helpers
state/ client state: favourites, demo session and submitted ads (localStorage, hydration-safe)
seo/ switches (env.ts), metadata, catalogue indexing rules, JSON-LD, sitemap/robots builders
data/ typed sample data copied from the Figma file
lib/ formatting (₼ prices, Azerbaijani dates, collation), pagination and search-param helpers
types/ domain types (Listing, Seller, Service, Category…)
styles/ Tailwind entry + design tokens
public/images/ product, service and seller photos exported from Figma (WebP)
docs/figma/ Figma reference renders + image manifest (Figma node → file)
| Path | Screen | Rendering |
|---|---|---|
/ | Home page (Ana səhifə) | static |
/elanlar | Product catalogue. Filters live in the query string: q, kateqoriya, alt, seher, min, max, nov, hundurluk, yas, vip, catdirilma, saticiNovu, siralama, gorunus, sehife | server, per request |
/kateqoriyalar/:kateqoriya, /kateqoriyalar/:kateqoriya/:seher | Category page and category × city page (same catalogue UI) | server, per request |
/elanlar/:slug | Listing detail | prerendered for every active listing |
/saticilar/:slug | Seller profile | server, per request |
/xidmetler, /xidmetler/:slug | Services catalogue and service detail | per request / prerendered |
/daxil-ol, /qeydiyyat | Login and registration (mock session) | private, noindex |
/kabinet, /kabinet/profil, /secilmisler | Cabinet, profile and favourites | private, rendered in the browser |
/kabinet/elanlar/:slug | Owner preview of the seller's own unpublished listings (pending, expired, or posted in this browser) | private, noindex, rendered in the browser |
/elan-yerlesdir[/:step], /elan-yerlesdir/gonderildi | 6-step ad posting wizard and its confirmation | private, rendered in the browser |
/idareetme, /idareetme/moderasiya, /idareetme/kateqoriyalar, /idareetme/sikayetler | Moderation tools (demo) | private, noindex |
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗