This page keeps the longer contributor details out of the root README while preserving the setup and repository context that is useful once someone decides to work on SDP.
SDP is an enterprise development platform. Local development is intended for contributing to the platform and evaluating devnet workflows; full self-hosting is still a work in progress.
The public REST API is organized around these areas:
| Area | Purpose |
|---|---|
| Health | Service status |
| API keys | API key creation, scoping, and lifecycle |
| Wallets | Wallet creation and management |
| Projects | Project-level organization |
| Issuance | Token creation and token operations |
| Payments | SOL and token payment flows |
| Compliance | Address and transaction screening |
The OpenAPI source in apps/sdp-api/src/openapi is the source of truth for the public API. Generated API docs should be regenerated with the owning scripts instead of edited by hand.
| Path | Purpose |
|---|---|
apps/sdp-api |
Node.js API, OpenAPI source, route handlers, and Postgres/Redis integrations |
apps/sdp-web |
Dashboard application |
apps/sdp-docs |
Public documentation site and generated API reference |
packages/sdp-types |
Shared runtime types and product constants |
packages/sdp-api-integration |
Maintainer-oriented integration tests |
infra/postgres |
Local Postgres setup |
docs/ops |
Operator and maintainer notes |
Install dependencies:
pnpm installCreate a local API environment file:
cp apps/sdp-api/.env.local.example apps/sdp-api/.env.localFor basic devnet development, set:
SOLANA_RPC_URL=https://api.devnet.solana.comStart the local Postgres and Redis services, then the apps:
pnpm infra:up
pnpm --filter @sdp/api db:postgres:bootstrap
pnpm devTo work on Earn (Treasury and Embedded Yield), also set MARKETS_ENABLED=true and EARN_ENABLED=true in both apps/sdp-api/.env.local and apps/sdp-web/.env.local. The API syncs the strategy catalogue once at start-up and hourly after that.
Useful local URLs:
| Service | URL |
|---|---|
| API | http://localhost:8787 |
| API docs | http://localhost:8787/docs |
| Dashboard | http://localhost:3000 |
Some features need external vendor credentials and may not work in a clean local checkout:
| Feature | Typical dependency |
|---|---|
| Dashboard authentication | Clerk |
| Managed custody providers | Privy, Coinbase CDP, Turnkey, Fireblocks, Para, or similar |
| Compliance screening | TRM, Chainalysis, Elliptic, Range, or similar |
| Fiat ramps | MoonPay, Lightspark, BVNK, or similar |
| Integration tests | Provider credentials and devnet infrastructure |
Keep real credentials in local environment files or the team secret manager. Do not commit secrets or provider-issued tokens.
The repository includes local development infrastructure and deployment-oriented helpers, but full self-hosting is not yet a polished public product path. Expect gaps around provider onboarding, production operations, secret management, compliance integrations, and mainnet readiness.
Common checks:
pnpm --filter @sdp/api test
pnpm --filter @sdp/api typecheck
pnpm --filter sdp-docs check:links
pnpm --filter sdp-docs build
pnpm typecheckRegenerate derived artifacts with:
pnpm -C apps/sdp-api openapi:generate
pnpm -C apps/sdp-docs generate:api
pnpm -C apps/sdp-docs generate:aiOperational notes live under docs/ops. They may reference private deployment conventions and should be kept separate from public getting-started material.