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>
24 lines
1.5 KiB
Markdown
24 lines
1.5 KiB
Markdown
# Commands & conventions
|
|
|
|
## Toolchain (Linux, no sudo)
|
|
- Node 22, `pnpm` 11.5.0 installed standalone at `~/.local/share/pnpm/bin` (added to ~/.bashrc PATH; new shells get it). If `pnpm` not found, use `~/.local/share/pnpm/bin/pnpm` or `source ~/.bashrc`.
|
|
- `uv`/`uvx` at `~/.local/bin` (used by the Serena MCP server).
|
|
|
|
## Workspace commands (from repo root)
|
|
- `pnpm install` — install all workspace deps (NOT yet run; expect first-run version fixups).
|
|
- `pnpm -r build` · `pnpm -r typecheck` · `pnpm -r test` · `pnpm dev` (parallel dev).
|
|
- Per package: `pnpm --filter @pyre/api dev`, etc.
|
|
- `lint`/`test` are placeholder echo scripts for now.
|
|
|
|
## Conventions
|
|
- TypeScript strict; ESM only. Because base tsconfig uses `verbatimModuleSyntax` + `moduleResolution: Bundler`, relative imports need explicit `.js` extensions.
|
|
- Internal deps via `workspace:*`. Package names `@pyre/<name>`.
|
|
- Lamport/SOL amounts passed as **strings** in DTOs.
|
|
- Server must **recompute classification**; never trust client-submitted classifications.
|
|
- Secrets only via env (`.env`, never committed). There is intentionally **no private-key/mnemonic env var**.
|
|
|
|
## First Claude Code prompts (from §20)
|
|
1. Plan-only: "Read CLAUDE.md and docs/PYRE_MVP_DESIGN.md. Do not write code yet. Produce an implementation plan for PYRE MVP v0.1 ..."
|
|
2. Then skeleton (already done): monorepo with pnpm workspaces.
|
|
Next real work = Phase 1 (Wallet Scanner): implement scan endpoint + classification in @pyre/core/@pyre/solana, wallet-connect UI.
|