Last updated: 2026-02-22 Current state: Core API live (buy + sell E2E tested). API-only, no frontend.
- Add
mirror-gitlab.ymlworkflow (force-push main to GitLab on every push) - Update README.md with current API docs
Harden the existing backend before adding user-facing surfaces.
- Add
expires_atcolumn to transactions table (default:created_at + 30 min) - Cleanup job runs every 60s, marks expired pending orders as
expired - Deposit detectors skip expired transactions in
findPendingBuys/Sells - Add
expiredto valid status enum in schema
- Deposit detectors fetch on-chain transaction details after memo match
- Verify actual transferred amount matches expected
usdc_amount(buy) orsol_amount(sell) - Tolerance: exact match for USDC (atomic units), 0.1% for SOL (tx fees)
- Amount mismatch: mark as
failedwith reason, don't deliver/payout
- Replace
console.log/warn/errorwithpinostructured logger - Log levels: info (normal flow), warn (retries), error (failures)
- Low balance alerts: log error when treasury SOL < 10 or payout USDC < 10
- Extend
/health/detailwithpending_orderscount
Build user-facing surfaces. Frontend and skill can be developed in parallel.
- React + Vite single-page app at
devsol.rectorspace.com - Solana wallet adapter (Phantom, Solflare, Backpack)
- Two-tab UI: Buy / Sell
- Flow: connect wallet -> enter amount -> see quote -> confirm -> send tx with memo -> poll status -> show result
- Tailwind CSS, clean utility-focused design
- Static files served by nginx (same VPS, separate from API)
-
devsol:buyskill — agent callsPOST /buy, sends USDC tx, polls/tx/:id -
devsol:sellskill — agent callsPOST /sell, sends devnet SOL tx, polls/tx/:id - Skill
.mdfiles referencing existing API (no SDK needed)
Additive features once the marketplace has users and volume.
- Accept USDT alongside USDC for buy flow
- Payout in USDT or USDC (seller's choice)
- Token registry config, per-token ATA derivation, per-token pricing
- Adjust spread based on reserve levels (low SOL -> higher buy price, low USDC -> higher sell price)
- Optional: volume discounts, time-based pricing
- Deferred until sufficient volume warrants it
- Core marketplace API (buy + sell endpoints)
- Direct USDC deposit buy flow (replaced x402 protocol)
- Devnet SOL deposit sell flow with memo matching
- Deposit detectors (BuyDepositDetector + DepositDetector)
- Mainnet USDC payout service with retry + exponential backoff
- Refund logic (both flows: USDC refund on failed SOL delivery, SOL refund on failed payout)
- Rate limiting (60/min global, 10/min on buy/sell)
- Balance pre-checks (treasury SOL for buy, payout USDC for sell)
- Docker deployment on VPS with GitHub Actions CI
- E2E test scripts (buy + sell, both verified live)
- 112 unit tests across 16 test files
- GitLab mirror workflow (Phase 0)
- Transaction expiry with 30min TTL + cleanup job (Phase 1)
- On-chain deposit amount verification (Phase 1)
- Pino structured logging replacing all console.* (Phase 1)
- Low balance alerts + pending_orders in /health/detail (Phase 1)