foundary-test-1770773605/README.md
rdev-worker 2aa1464b91
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: Set up the monorepo workspace. Ensure the root README describes a pro...
2026-02-11 01:37:19 +00:00

105 lines
3.8 KiB
Markdown

# Foundary Studio
A product studio for conversational product development. Foundary Studio enables teams to build, iterate on, and ship products through natural conversation — turning dialogue into working software.
## Quickstart
```bash
# Clone the repo
git clone https://git.threesix.ai/jordan/foundary-test-1770773605.git
cd foundary-test-1770773605
# Install dependencies
./scripts/install.sh
# Start local development (PostgreSQL, Redis, all services)
./scripts/dev.sh
```
## Architecture
Foundary Studio is a monorepo with Go backend services, TypeScript frontend applications, and shared packages for both.
```
foundary-test-1770773605/
├── services/ # Go API services (port 8001+)
├── workers/ # Go background workers (queue consumers, jobs)
├── apps/ # TypeScript frontend applications (port 3001+)
├── cli/ # Go CLI tools
├── packages/ # Shared TypeScript packages
│ ├── ui/ # Component library (Radix + CSS variables)
│ ├── layout/ # Dashboard layout
│ ├── auth/ # Authentication provider
│ ├── api-client/ # Generated TypeScript API client
│ └── logger/ # HTTP and console logging
├── pkg/ # Shared Go packages
│ ├── app/ # Service bootstrapper
│ ├── auth/ # JWT and API key authentication
│ ├── config/ # Configuration management
│ ├── database/ # Database utilities
│ ├── httpclient/ # Resilient HTTP client (circuit breaker, retries)
│ ├── httperror/ # Typed HTTP errors
│ ├── httpresponse/ # Response envelope ({data, meta})
│ ├── logging/ # Structured logging (slog)
│ ├── middleware/ # HTTP middleware (CORS, recovery, request ID)
│ ├── openapi/ # OpenAPI 3.0 spec builder + Scalar docs
│ ├── queue/ # PostgreSQL-backed job queue
│ ├── realtime/ # WebSocket and Redis pub/sub
│ └── svc/ # Inter-service discovery and communication
├── scripts/ # Development and CI scripts
└── docs/ # API documentation
```
### Tech Stack
| Layer | Technology |
|-------|------------|
| Backend services | Go, Chi router, PostgreSQL, Redis |
| Frontend apps | TypeScript, React |
| Shared UI | Radix primitives, CSS custom properties |
| Job processing | PostgreSQL-backed queue |
| Real-time | WebSocket, Redis pub/sub |
| Workspace | Go workspaces, pnpm workspaces |
| Infrastructure | Docker Compose (local), Woodpecker CI |
## Development
### Scripts
| Script | Description |
|--------|-------------|
| `./scripts/dev.sh` | Start local dev environment (Docker services + all components) |
| `./scripts/install.sh` | Install all dependencies (pnpm packages + Go modules) |
| `./scripts/quality.sh` | Run quality checks (lint, test, typecheck) |
| `./scripts/discover.sh` | List all components in the monorepo |
| `./scripts/generate-client.sh` | Generate TypeScript API client from OpenAPI specs |
### Local Infrastructure
Local development uses Docker Compose for backing services:
- **PostgreSQL 16** on port 5432 (user: `dev`, database: `foundary-test-1770773605`)
- **Redis 7** on port 6379
### API Documentation
Each service exposes an OpenAPI spec at `/openapi.json`. Documentation is generated and deployed automatically on push to `main`.
- **Docs**: https://docs.dfq64dsk.threesix.ai
### Adding Components
Components are added via the rdev API:
```bash
# Add a Go service
curl -X POST $RDEV_API_URL/projects/foundary-test-1770773605/components \
-H "X-API-Key: $RDEV_API_KEY" \
-d '{"type": "service", "name": "my-service"}'
# Add a React app
curl -X POST $RDEV_API_URL/projects/foundary-test-1770773605/components \
-H "X-API-Key: $RDEV_API_KEY" \
-d '{"type": "app", "name": "my-app", "template": "app-react"}'
```