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>
2.2 KiB
2.2 KiB
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:TokenClassificationenum (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.