Skip to content

Latest commit

 

History

History
283 lines (218 loc) · 11.7 KB

File metadata and controls

283 lines (218 loc) · 11.7 KB

Deliverables

Current implementation status for the Stellar Goal Vault project. Last updated: 2026-07-29


Backend API

Core Server

  • Express 5 application with TypeScript — backend/src/index.ts
  • Structured request logging — backend/src/logger.ts
  • Request context propagation — backend/src/requestContext.ts
  • Environment variable validation on startup — backend/src/validateEnv.ts
  • OpenAPI spec generation (zod-to-openapi) — backend/src/openapi.ts

Campaign Service

  • Campaign CRUD + state machine logic — backend/src/services/campaignStore.ts
  • LRU caching layer — backend/src/services/campaignCache.ts
  • Event history tracking — backend/src/services/eventHistory.ts
  • Soroban RPC event indexer — backend/src/services/eventIndexer.ts
  • SQLite database with WAL mode — backend/src/services/db.ts
  • Deterministic data seeding — backend/src/services/seedDeterministic.ts

API Endpoints

  • Campaign CRUD (create, read, list, update)
  • Pledge/contribute endpoint
  • Claim endpoint
  • Refund endpoint
  • Search with pagination and asset filter
  • Campaign stats endpoint
  • Health endpoint with DB status
  • Contributors summary endpoint (backend)
  • Event history endpoint

Middleware

  • API key authentication — backend/src/middleware/apiKeyAuth.ts
  • Response caching — backend/src/middleware/cacheMiddleware.ts
  • Request ID injection — backend/src/middleware/requestId.ts
  • Request body validation (zod) — backend/src/middleware/validateBody.ts

Validation

  • Zod schemas for all endpoints — backend/src/validation/schemas.ts
  • Stellar address validation — backend/src/validation/stellarAddress.ts
  • URL safety checks — backend/src/validation/urlSafety.ts

Frontend

Core UI

  • React 18 + Vite 5 + TypeScript 5 — frontend/
  • Tailwind CSS 3 styling — frontend/src/index.css
  • React Router 6 navigation — frontend/src/App.tsx
  • PWA support (service worker) — frontend/src/sw.ts

Components (40+)

  • CampaignCard — campaign list cards
  • CampaignDetailPanel — campaign detail view
  • CampaignsTable — virtualized campaign table (@tanstack/react-virtual)
  • CampaignTimeline — campaign event timeline
  • CreateCampaignForm — campaign creation form
  • ContributorSummary — contributor breakdown
  • CreatorAnalytics — creator dashboard analytics (recharts)
  • TransactionPreviewModal — transaction preview before signing
  • WalletWidget — Freighter wallet connection
  • SearchInput — campaign search
  • SortDropdown — sort controls
  • EmptyState — empty state illustrations
  • ErrorBoundary — React error boundaries
  • SkeletonCard — loading skeletons
  • ToastContainer — notification toasts
  • CopyButton — clipboard copy utility
  • FundedConfetti — celebration animation
  • IssueBacklog — open-source issue display
  • KeyboardShortcutsOverlay — keyboard shortcuts
  • NotFoundPage — 404 page

Services

  • API client — frontend/src/services/api.ts
  • HTTP client — frontend/src/services/httpClient.ts
  • Freighter wallet integration — frontend/src/services/freighter.ts
  • Soroban SDK integration — frontend/src/services/soroban.ts

Hooks

  • useFreighter — wallet state management
  • useMediaQuery — responsive breakpoints
  • useToast — toast notifications
  • useLocalStorage — persistent state
  • useDebounce — input debouncing

Utilities

  • Input validation — frontend/src/utils/validation.ts
  • CSV export — frontend/src/utils/exportCsv.ts
  • Funding celebration effects — frontend/src/lib/fundingCelebration.ts
  • Keyboard shortcut definitions — frontend/src/lib/shortcuts.ts

Soroban Smart Contract

  • Campaign lifecycle (create, contribute, claim, refund) — contracts/src/lib.rs
  • Initialize with min contribution — contracts/src/lib.rs
  • Update metadata — contracts/src/lib.rs
  • Request deadline extension — contracts/src/lib.rs
  • Approve extension — contracts/src/lib.rs
  • Cancel campaign — contracts/src/lib.rs
  • Pause/unpause — contracts/src/lib.rs
  • State migration — contracts/src/lib.rs
  • Contract unit tests — contracts/src/test.rs
  • 50+ test snapshots — contracts/test_snapshots/
  • Deployment script — scripts/deploy.sh
  • TypeScript bindings generator — scripts/gen-bindings.ts

Testing

Backend Unit Tests (20 files)

  • API endpoint tests — backend/src/api.test.ts, index.test.ts
  • Campaign store tests — backend/src/services/campaignStore.test.ts
  • Concurrent campaign store tests — backend/src/services/campaignStore.concurrent.test.ts
  • Campaign cache tests — backend/src/services/campaignCache.test.ts
  • Database WAL tests — backend/src/services/db.wal.test.ts
  • Seed deterministic tests — backend/src/services/seedDeterministic.test.ts
  • Middleware tests — validateBody.test.ts, requestId.test.ts
  • Validation tests — schemas.test.ts, stellarAddress.test.ts, urlSafety.test.ts
  • Logger tests — backend/src/logger.test.ts
  • OpenAPI tests — backend/src/openapi.test.ts
  • Security tests — backend/src/security.test.ts
  • Rate limiter tests — backend/src/rateLimiter.test.ts
  • Event metadata tests — backend/src/services/__tests__/eventMetadata.test.ts
  • Mutation tests (Stryker) — backend/src/services/__tests__/mutation.test.ts

Frontend Tests (38 files)

  • Component unit tests — frontend/src/components/*.test.tsx
  • Accessibility tests (vitest-axe) — frontend/src/components/*.a11y.test.tsx
  • Hook tests — frontend/src/hooks/*.test.ts
  • Service tests — frontend/src/services/*.test.ts
  • Utility tests — frontend/src/utils/*.test.ts
  • Integration tests — frontend/src/components/CampaignsTable.integration.test.tsx

E2E Tests (Playwright)

  • Campaign lifecycle spec — e2e/campaign-lifecycle.spec.ts
  • Campaign card visual regression — e2e/campaign-card.visual.spec.ts
  • Dashboard page object — e2e/dashboard.ts
  • Playwright config — playwright.config.ts
  • Visual regression config — playwright.visual.config.ts

Integration Tests

  • Test utilities (mock data, API helpers, assertions) — backend/tests/utils.ts (335 lines)
  • Backend integration test suite — backend/tests/integration.test.ts (empty, 0 lines)

CI/CD

GitHub Actions Workflows (16)

  • Main CI pipeline — .github/workflows/ci.yml
  • PR test runner — .github/workflows/pr-tests.yml
  • Backend CI — .github/workflows/backend.yml
  • Frontend CI — .github/workflows/frontend.yml
  • Backend integration tests workflow — .github/workflows/backend-integration-tests.yml
  • Soroban contract build & test — .github/workflows/contracts-ci.yml
  • ABI bindings freshness check — .github/workflows/check-bindings.yml
  • Playwright E2E — .github/workflows/playwright-e2e.yml
  • Visual regression — .github/workflows/playwright-visual-regression.yml
  • Lighthouse CI — .github/workflows/lighthouse-ci.yml
  • Storybook build/deploy — .github/workflows/storybook.yml
  • Load testing — .github/workflows/load-test.yml
  • CodeQL security scanning — .github/workflows/codeql-analysis.yml
  • Gitleaks secret detection — .github/workflows/gitleaks.yml
  • Docker GHCR publish — .github/workflows/publish-ghcr.yml
  • Release-please automation — .github/workflows/release.yml

Supporting Config

  • Dependabot — .github/dependabot.yml
  • Issue templates — .github/ISSUE_TEMPLATE/
  • PR template — .github/PULL_REQUEST_TEMPLATE.md

Infrastructure

  • Docker Compose (dev + prod) — docker-compose.yml, docker-compose.override.yml
  • Backend Dockerfile — backend/dockerfile
  • Frontend Dockerfile — frontend/dockerfile
  • Nginx reverse proxy — nginx/
  • Release-please config — release-please-config.json
  • Benchmarking script — scripts/benchmark.sh
  • SRI check script — scripts/check-sri.sh

Documentation

Core Docs

  • Project README — README.md (574 lines)
  • Changelog — CHANGELOG.md (v0.1.0 through v0.6.0)
  • Contributing guide — CONTRIBUTING.md
  • Security policy — SECURITY.md
  • Security checklist — SECURITY_CHECKLIST.md
  • Deployment guide — DEPLOYMENT.md
  • Operations runbook — RUNBOOK.md
  • FAQ — FAQ.md

Technical Docs

  • Architecture Mermaid diagrams — docs/architecture.md
  • Soroban RPC docs — docs/soroban-rpc.md
  • Architecture Decision Records — adr/0001-sqlite-off-chain-mvp.md, 0002-react-express-mvp.md, 0003-freighter-wallet-integration.md
  • Campaign lifecycle implementation — CAMPAIGN_LIFECYCLE_IMPLEMENTATION.md
  • Multi-token design decision — MULTI_TOKEN_DESIGN_DECISION.md
  • Event metadata documentation — EVENT_METADATA_DOCUMENTATION.md
  • Validation implementation — VALIDATION_IMPLEMENTATION.md, VALIDATION_SUMMARY.md

Testing Docs

  • Integration tests summary — INTEGRATION_TESTS_SUMMARY.md
  • Architecture diagrams — ARCHITECTURE_DIAGRAMS.md
  • Backend test README — backend/tests/README.md
  • Backend test setup — backend/tests/SETUP.md
  • Backend test implementation — backend/tests/IMPLEMENTATION.md
  • Property tests implementation — PROPERTY_TESTS_IMPLEMENTATION.md
  • Property tests verification — PROPERTY_TESTS_VERIFICATION.md
  • Campaign form testing complete — CAMPAIGN_FORM_TESTING_COMPLETE.md

Feature Docs

  • Search feature delivery — SEARCH_FEATURE_DELIVERY.md
  • Implementation summary — IMPLEMENTATION_SUMMARY.md
  • Open source issues — OPEN_SOURCE_ISSUES.md
  • Documentation index — INDEX.md

Quality Tooling

  • Lighthouse CI config — frontend/lighthouserc.json
  • Storybook config — frontend/.storybook/
  • Prettier config — .prettierrc
  • Gitleaks config — .gitleaks.toml
  • Husky git hooks — .husky/
  • VS Code settings — .vscode/

In Progress

Item Status Notes
Backend integration test suite Empty file exists backend/tests/integration.test.ts is 0 lines; utils are ready
Contributor summary frontend wiring Backend done, frontend pending API client + component hookup in frontend/src/services/api.ts and ContributorSummary.tsx

Planned

Item Effort Description
Backend integration test suite 3-5 days Fill backend/tests/integration.test.ts with campaign lifecycle, edge case, and auth tests using existing utils.ts
Contributor summary frontend wiring 0.5 day Add listCampaignContributors() to API client, connect ContributorSummary component
Load test script backend package.json 0.5 day Add load:test and mutation scripts to backend/package.json
Additional E2E test coverage 2-3 days Expand Playwright specs beyond campaign lifecycle (pledge flow, refund flow, search)
API rate limiting tests 1 day Add tests for rate limiter middleware under load
Frontend visual regression coverage 1-2 days Add visual regression specs for key components beyond CampaignCard
Contract property-based testing expansion 2-3 days Expand proptest coverage for edge cases in campaign state transitions
Accessibility audit remediation 1-2 days Address any a11y issues surfaced by existing vitest-axe tests