Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Edgecoms - Built for the next generation of Shopify.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A full-stack TypeScript monorepo for Edgecoms — thoughtfully crafted Shopify apps and the marketing site that fronts them. Built with Next.js, tRPC, Drizzle, and a shared UI package, orchestrated by Turborepo and Bun workspaces.
packages/uiInstall dependencies (from the repo root):
bun install
Configure environment — copy apps/web/.env.example to apps/web/.env and fill in your database connection, auth secrets, and admin bootstrap credentials.
Start PostgreSQL — spin up the local database container (defined in packages/db/docker-compose.yml):
bun run db:start
Apply the schema to the database:
bun run db:push
Seed the app catalog and create an admin (idempotent):
bun run db:seed
bun run db:create-admin
Run the dev server:
bun run dev
Open http://localhost:3001 to view the app.
edgecoms/
├── apps/
│ ├── web/ # Next.js app (marketing + partner + admin portals)
│ └── worker/ # Railway cron entrypoint (billing-sync)
└── packages/
├── ui/ # Shared shadcn/ui components & design tokens
├── api/ # tRPC routers + the authorization layer
├── auth/ # Better Auth configuration
├── billing/ # Money math, Partner API adapter, reconcile & commissions
├── db/ # Drizzle schema, migrations & local DB compose
├── env/ # Shared, validated environment variables
└── config/ # Shared tooling config (TS, Ultracite, etc.)
Run all scripts from the repo root.
| Script | Description |
|---|---|
bun run dev | Start all apps in development mode |
bun run dev:web | Start only the web app |
bun run build | Build all apps |
bun run check-types | Type-check across the monorepo |
| Script | Description |
|---|---|
bun run db:start | Start local PostgreSQL (Docker, detached) |
bun run db:watch | Start local PostgreSQL in the foreground |
bun run db:stop | Stop the database container |
bun run db:down | Stop and remove the database container |
bun run db:push | Push schema changes to the database |
bun run db:generate | Generate migration files |
bun run db:migrate | Run pending migrations (local) |
bun run db:deploy | Apply migrations to a remote/production database |
bun run db:setup:deploy | First deploy: migrate + seed + create admin (idempotent) |
bun run db:seed | Seed the 7 Edge apps, local (idempotent) |
bun run db:create-admin | Create/promote the admin user (ADMIN_EMAIL / ADMIN_PASSWORD) |
bun run db:studio | Open Drizzle Studio |
| Script | Description |
|---|---|
bun run check | Lint & format check (Ultracite) |
bun run fix | Auto-fix lint & formatting issues |
The web app consumes shadcn/ui primitives through packages/ui:
packages/ui/src/styles/globals.csspackages/ui/src/components/*packages/ui/components.json and apps/web/components.jsonImport shared components like this:
import { Button } from "@edgecoms/ui/components/button";
Add more primitives to the shared package (run from the repo root):
bunx shadcn@latest add accordion dialog popover sheet table -c packages/ui
For app-specific blocks rather than shared primitives, run the shadcn CLI from apps/web instead.
This repo is the Edge Partner Platform — the business layer for Edge's Shopify apps. It has three experiences in one Next.js app plus a billing worker:
/, /products, /partners, /about, /contact) — public, on-brand./partner/*, role partner) — register merchants, track
commission, manage payout details./admin/*, role admin) — approve partners (set rate +
per-app overrides), approve merchants (capturing the grandfathered app set),
mark commissions paid, and group payouts.bigint) with a 3-char
currency — no floating-point math ever touches money.earning_events is an append-only mirror of the Shopify Partner API
transactions stream, idempotent on the Shopify transaction id.The full invariant set lives in CLAUDE.md. The money paths and
authorization boundaries are unit/integration tested (bun run test) against an
in-process Postgres (PGlite) — no Docker required for tests.
apps/worker is a standalone entrypoint (bun src/billing-sync.ts) that runs a
full sync — ingest the Partner API transactions stream, then generate any
missing commissions — and then closes its DB pool and exits. It logs a
structured JSON run summary. Admins can also trigger the same runBillingSync
from the dashboard ("Run sync now").
It needs these (optional everywhere else) env vars:
PARTNER_API_ORGANIZATION_ID="..."
PARTNER_API_ACCESS_TOKEN="..."
PARTNER_API_VERSION="2025-01" # optional
Deploy two services from this one repo against a shared Railway Postgres:
Postgres — add a Railway Postgres service. Enable backups and use its
private networking URL for DATABASE_URL on both services below.
Web service (the Next app)
bun install && bun run buildbun run --filter web start (or cd apps/web && bun run start)DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, CORS_ORIGIN,
and the PARTNER_API_* vars (so the admin "Run sync now" works).Worker service (the cron job)
cd apps/worker && bun src/billing-sync.ts0 */6 * * * (every 6 hours).DATABASE_URL + the PARTNER_API_* vars.Migrations are applied deliberately, by a human — never from a build step. A build that migrates a money database can fire from a preview deploy, run concurrently with another build, or migrate a deployment that is then rolled back, leaving the schema ahead of the code.
From a machine with DATABASE_URL pointing at the production database:
bun install
DATABASE_URL="postgresql://..." ADMIN_EMAIL="..." ADMIN_PASSWORD="..." bun run db:setup:deploy
That applies migrations, seeds the 7 Edge apps, and creates the admin user.
Every step is idempotent — migrations track applied state, the seed upserts on
slug, and create-admin promotes an existing user — so re-running is safe.
Individual steps, if you need them:
bun run db:deploy # migrations only
bun run db:seed:deploy # the 7 Edge apps
bun run db:create-admin:deploy # ADMIN_EMAIL / ADMIN_PASSWORD must be set
Use the :deploy variants for anything remote. The plain db:migrate,
db:seed and db:create-admin scripts load apps/web/.env, so they target
your local database.
Replace the placeholder Partner API GIDs in the seed with your real app GIDs via
PARTNER_API_GID_<SLUG> env vars (see apps/web/.env.example), then re-run
bun run db:seed:deploy.