Wocart
Wocart가 알제리 매장의 현금착불 비즈 전체를 운영한다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. 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 전문 보기 ↗