Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
한 번 카탈로그를 올리면 누구든 자신의 스토어에서 판매하고, GitShop이 주문·결제·정산을 처리합니다
Publish a catalogue once. Let anyone sell it from their own store. GitShop runs the orders, the payments and the payouts.
커머스TypeScript · CSSGitHub @BayoGabriel온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Public brand website for GitShop — "GitHub for wholesale commerce". Built with Vite, React 19, TypeScript (strict), Tailwind v4, React Router v7 and Radix UI.
npm install
npm run dev # dev server
npm run build # type-check + production build
npm run lint # eslint
npm run preview # serve the production build
npm run check:buyer-surfaces # fails on supply-chain wording in customer-facing components
npm run check:placeholders # counts data-placeholder flags (STRICT_PLACEHOLDERS=1 fails)
npm run images:placeholders # regenerate all image placeholders in public/images/
node scripts/preview-serve.mjs # gzip-capable static server for dist/ (PORT env, default 5399)
node scripts/axe-check.mjs # axe on every route (needs dev/preview server on :5199, BASE_URL override)
node scripts/capture-screenshots.mjs # docs/screenshots/ at 360/768/1280, light+dark
Optional environment (see .env.example):
| Variable | Purpose |
|---|---|
VITE_API_BASE_URL | Backend origin for sign in / sign up (POST /api/v1/login, POST /api/v1/create-account). Forms degrade honestly when unset. |
VITE_CONTACT_API_URL | Contact form endpoint (POST {name,email,topic,message}). |
VITE_SITE_URL | Canonical origin for canonical/OG URLs (default https://gitshop.co). |
src/styles/tokens.css — the source of truth: black/white/neutral-grey
palette (red for errors only), radii, stack steps, controls, motion, z-index.
Dark theme values live under [data-theme='dark'].src/styles/theme.css — maps semantic tokens to Tailwind utilities
(bg-raised, text-muted, border-border-strong, rounded-md,
duration-fast, …). Do not write hex colours, pixel radii or millisecond
durations in components — use the token utilities.src/styles/typography.css — .display-xl/.display-lg, .h1–.h4,
.body-lg/.body-sm, .caption, .overline, .amount, .measure.src/styles/stack.css — .stack layered-depth primitive (replaces card
shadows), fan-on-hover, stack-assemble hero animation (reduced-motion safe).Type: Sora (display), Inter (body), JetBrains Mono (data) — self-hosted via
Fontsource, loaded in src/main.tsx.
data-theme on <html> is light | dark, resolved from a light | dark |
system preference stored in localStorage (gitshop-theme). The inline
script in index.html prevents flash; src/lib/theme.ts +
src/hooks/useTheme.ts + ThemeToggle drive it.
src/components/ui/ — primitives (Button, Input, Select, Checkbox, Switch,
Badge, Avatar, Card, Tabs, Accordion, Modal, Toast, Table, EmptyState, …).src/components/patterns/ — domain components (RepoCard, WalletCard,
TransactionRow, OrderTimeline, MarkupEditor).src/components/layout/ — SiteHeader, MobileMenu, SiteFooter, Section,
PageHero, RootLayout.src/pages/ — one file per route (lazy-loaded in src/app/router.tsx).src/features/ — marketing (sections + mockups), storefront
(buyer-facing mockups, covered by check:buyer-surfaces), auth,
contact, uikit (demo sections for /ui-kit).src/content/ — all marketing copy and the image manifest (images.ts).public/images/<slot>.webp — replace any photo by overwriting the file at
the same name; see docs/imagery.md and docs/placeholder-inventory.md.src/lib/ — cn, format (integer-minor-unit money), theme./ui-kit route — the component catalogue ("Storybook equivalent") showing
every component and state; toggle the header theme to check light/dark.Rules of thumb:
src/features/marketing/content.ts).lib/format.ts); never
floats, never optimistic success — pending until confirmed.h1 per page; use Section/SectionHeading/PageHero for structure.Official SVGs/PNGs live in src/assets/ (never edit them; Logo.tsx inlines
the official geometry with currentColor). public/ mirrors the files needed
at the site root: favicons, site.webmanifest, og-image-light.png (regenerate
with node scripts/generate-og.mjs), robots.txt, sitemap.xml.
npm run lint && npm run build
Manual checks: /ui-kit for component states, theme toggle for light/dark,
320–1536px widths, keyboard navigation, prefers-reduced-motion.