chore: scaffold PYRE MVP monorepo (structure + docs)

pnpm + TypeScript workspace per design doc §13:
- apps/{web,api,worker} skeletons (Next.js 16, Fastify 5, BullMQ)
- packages/{core,solana,prometheus,db,config} (core has real types/DTOs;
  solana/prometheus are stubs)
- programs/pyre-core placeholder (future Anchor, v1.0)
- docs/: PYRE_MVP_DESIGN (canonical), ARCHITECTURE, SECURITY, TOKEN_CLASSIFICATION
- CLAUDE.md, README, .env.example (no private-key var by design)

Skeleton + docs only — no Solana/business logic yet. All workspaces typecheck clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 02:20:55 +00:00
parent e86b57e00f
commit c20094ab56
65 changed files with 13834 additions and 1 deletions

View File

@@ -0,0 +1,23 @@
# Repo structure (pnpm + TypeScript monorepo)
Root: `/home/pyre/pyre`. pnpm workspaces (`apps/*`, `packages/*`). All packages: `@pyre/<name>`, ESM (`"type":"module"`), tsconfig extends `tsconfig.base.json` (strict, Bundler resolution, verbatimModuleSyntax → use `.js` extensions on relative imports).
## apps/ (runtime services)
- `apps/web` (@pyre/web) — Next.js 15 + React 19 + Tailwind + Solana Wallet Adapter. Landing, wallet connect, scanner UI, cleanup preview, receipt page, Prometheus preview, admin review.
- `apps/api` (@pyre/api) — Fastify 5. Endpoints (§14): POST /api/scan, /api/build/close-empty, /api/build/burn, /api/receipt, /api/prometheus/generate, + admin. Has /health live.
- `apps/worker` (@pyre/worker) — BullMQ jobs: metadata enrichment, AI generation, image prompts, safety checks, collision checks, confirmation tracking, receipt enrichment.
## packages/ (shared libs)
- `packages/core` (@pyre/core) — **real type defs**: `TokenClassification` enum (EMPTY_CLOSE_ONLY, INCINERATE_ONLY, TRANSMUTABLE, PROTECTED_SKIP, UNSUPPORTED), API DTOs, CleanupReceipt, Prometheus I/O, risk types. Lamports as strings.
- `packages/solana` (@pyre/solana) — STUBS only (throw "not implemented"): parseTokenAccounts, buildCloseEmptyAccountsTx, buildBurnTx, simulateTransaction, decodeTransaction. deps @solana/web3.js, @solana/spl-token.
- `packages/prometheus` (@pyre/prometheus) — STUBS: buildPrompt, runMetaMixer, parseOutput, runSafetyChecks, generateImagePrompt.
- `packages/db` (@pyre/db) — table-name constants + createPool() stub (pg). Tables in §15.
- `packages/config` (@pyre/config) — Env interface + loadConfig() stub mapping `.env.example`. No private-key var by design.
## other
- `programs/pyre-core` — future Anchor program (v1.0, placeholder README).
- `docs/` — PYRE_MVP_DESIGN.md (canonical), ARCHITECTURE.md, SECURITY.md, TOKEN_CLASSIFICATION.md.
- `preview.html`, `scripts/`, `infra/`, `CLAUDE.md`, `.env.example`.
## CURRENT STATE
Scaffold + docs only. NO Solana/business logic implemented (intentional). `pnpm install` has NOT been run. Dependency version ranges were set from model knowledge — verify against registry/context7 before relying on exact majors.