Current implementation status for the Stellar Goal Vault project. Last updated: 2026-07-29
- 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 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
- 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
- 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
- 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
- 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
- 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
- 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
- useFreighter — wallet state management
- useMediaQuery — responsive breakpoints
- useToast — toast notifications
- useLocalStorage — persistent state
- useDebounce — input debouncing
- 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
- 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
- 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
- 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
- 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
- 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)
- 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
- Dependabot —
.github/dependabot.yml - Issue templates —
.github/ISSUE_TEMPLATE/ - PR template —
.github/PULL_REQUEST_TEMPLATE.md
- 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
- 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
- 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
- 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
- Search feature delivery —
SEARCH_FEATURE_DELIVERY.md - Implementation summary —
IMPLEMENTATION_SUMMARY.md - Open source issues —
OPEN_SOURCE_ISSUES.md - Documentation index —
INDEX.md
- 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/
| 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 |
| 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 |