105 lines
3.8 KiB
Markdown
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"}'
|
|
```
|