feat: add ComponentGrid and ComponentTable components for displaying components in grid and table formats

feat: implement HealthBadge and RoleBadge components for displaying health status and roles

feat: create LogViewer component for streaming logs of services

feat: develop SecretsEditor for managing secrets with CRUD operations

feat: introduce ToolCard component for displaying tool information

style: add global CSS variables and styles for consistent theming

feat: set up API client for handling requests to the backend

feat: implement hooks for fetching components, statuses, and tools

feat: create routes for dashboard, component details, and tools

feat: add service management endpoints for starting, stopping, and restarting services

feat: implement event bus for handling real-time updates via SSE

feat: create health check and logs endpoints for monitoring services

feat: add tests for health and tools endpoints to ensure functionality

chore: update project configuration files and dependencies for better development experience
This commit is contained in:
2026-02-21 01:23:37 -08:00
parent f99c2dad86
commit 930bc601b7
63 changed files with 154 additions and 157 deletions

View File

@@ -1,23 +1,20 @@
# Web Frontends in Castle
How to build, serve, and manage web frontends as castle components. Based on
the stack used in [wild-cloud/web](https://github.com/civilsociety-dev/wild-cloud).
How to build, serve, and manage web frontends as castle components.
## Stack
| Layer | Choice |
|-------|--------|
| **Build** | Vite 6 |
| **Language** | TypeScript 5.8 (strict) |
| **Framework** | React 19 |
| **Routing** | React Router 7 |
| **Styling** | Tailwind CSS 4 (`@tailwindcss/vite` plugin) |
| **Components** | shadcn/ui (new-york style) + Radix UI primitives |
| **Icons** | Lucide React |
| **Server state** | TanStack React Query 5 |
| **Forms** | React Hook Form + Zod validation |
| **Testing** | Vitest + Testing Library |
| **Package manager** | pnpm |
- Build: Vite 6
- Language: TypeScript 5.8 (strict)
- Framework: React 19
- Routing: React Router 7
- Styling: Tailwind CSS 4 (`@tailwindcss/vite` plugin)
- Components: shadcn/ui (new-york style) + Radix UI primitives
- Icons: Lucide React
- Server state: TanStack React Query 5
- Forms: React Hook Form + Zod validation
- Testing: Vitest + Testing Library
- Package manager: pnpm
## Scaffolding a new frontend