Web app for the Callora API marketplace: developer dashboard, API management, and billing views.
- React 18 + TypeScript
- Vite for build and dev server
- React Router v6 for client-side routing
- Minimal UI (no component library); ready to extend
- Landing page with product overview
- Dashboard (usage stats, vault balance)
- Screen-reader-friendly dashboard usage gauge with visible usage state and remaining allowance
- Marketplace (browse and compare APIs)
- Pinned APIs on the dashboard for fast access to saved marketplace APIs
- Billing (USDC deposit, Stellar settlement, transaction tracking)
- API Usage analytics view
- 500 error page with retry flow
- 404 catch-all page
- Theme playground for previewing primary/accent/surface tokens live
- Dev proxy to backend at
http://localhost:3000for/api - Global Command Palette: Instantly jump to views, search APIs by name, cycle/toggle light & dark themes, or trigger vault deposits. Use
Cmd+Kon macOS orCtrl+Kon Windows/Linux to open. - Pattern-based status badges: Status indicators now use distinct textures in addition to color so they remain understandable for color-blind users and in grayscale displays.
- Open Command Palette:
Cmd + K(macOS) orCtrl + K(Windows/Linux) - Navigate options:
Up / Down Arrowkeys - Select option:
Enter - Close Palette:
Escapeor backdrop click
Callora uses a comprehensive design token system and component library. All contributors must follow the UI Design System guide when building or modifying UI.
Key principles:
- Use design tokens, not inline hex values β All colors, spacing, and shadows use CSS custom properties
- Reuse shared components β Use existing components from
src/components/before creating new ones - Maintain accessibility β All UI must be keyboard navigable and screen reader friendly
- Test both themes β Verify appearance in both light and dark modes
-
Prerequisites: Node.js 18+
-
Install and run:
npm install npm run dev
-
Open http://localhost:5173.
The dashboard includes an accessible usage gauge that summarizes API spend for the current cycle. It exposes role="progressbar", numeric ARIA values, and a human-readable usage state such as βWithin limitβ, βApproaching limitβ, βCritical usageβ, βLimit reachedβ, or βNo limit configuredβ so screen-reader users receive the same status information as sighted users.
| Command | Description |
|---|---|
npm run dev |
Start dev server (port 5173) |
npm run build |
TypeScript check + production build |
npm run preview |
Serve production build locally |
| Path | Description |
|---|---|
/ |
Landing page |
/dashboard |
Developer dashboard |
/marketplace |
API marketplace |
/billing |
USDC deposit and settlements |
/api-usage |
API usage analytics |
/theme-playground |
Live theme token playground for designers |
/500 |
Server error page |
* |
404 not found |
callora-frontend/
βββ src/
β βββ App.tsx # Router, layout, and route definitions
β βββ main.tsx # Entry point
β βββ index.css # Global styles and design tokens
β βββ ThemeContext.tsx # Light/dark theme context
β βββ ThemeToggle.tsx # Theme toggle component
β βββ ApiUsage.tsx # API usage analytics view
β βββ config/ # Shared app configuration
β β βββ constants.ts # App constants (URLs, deposit limits, loading delay)
β βββ components/ # Shared UI components
β β βββ ApiCard.tsx
β β βββ Breadcrumb.tsx
β β βββ CodeExample.tsx
β β βββ CommandPalette.css
β β βββ CommandPalette.test.tsx
β β βββ CommandPalette.tsx
β β βββ CommandPalette_MANUAL_TEST_PLAN.md
β β βββ Dashboard.tsx
β β βββ EmptyState.tsx
β β βββ FiltersSidebar.tsx
β β βββ NotFound.tsx
β β βββ SearchBar.tsx
β β βββ ServerError.tsx
β β βββ ServerErrorDemo.tsx
β β βββ Skeleton.tsx
β βββ pages/ # Standalone page components
β β βββ ApiDetailPage.tsx
β β βββ MarketplacePage.tsx
β βββ hooks/ # Custom React hooks
β β βββ useDebounce.ts
β βββ data/ # Static and mock data
β β βββ mockApis.ts
β βββ utils/ # Utility functions
β β βββ format.ts # Currency formatters (formatUsdc, formatUsdShortcut, formatPrice)
β βββ vite-env.d.ts
βββ docs/
β βββ UI-Design-System.md
βββ index.html
βββ package.json
βββ tsconfig.json
βββ vite.config.ts
This repo is part of Callora. Backend and contracts live in separate repos: callora-backend, callora-contracts.
See CONTRIBUTING.md for contribution guidelines.