UI Platform - Cloud Run-first monorepo for Africa-focused web applications
# UI Platform
**Monorepo** for multiple independent web applications designed for users in Africa, where data usage has a direct monetary cost.
## Core Principles
1. **Bytes are money** - Optimize for value per megabyte
2. **Perceived speed > raw speed** - Always show something immediately
3. **Scale-to-zero by default** - No always-on servers unless justified
4. **Async by default** - Heavy work never blocks user requests
5. **Offline-first mindset** - Assume intermittent connectivity
See CLAUDE.md for complete architectural guidelines.
## Architecture
**Monorepo Structure:**
- **`apps/*`** - Independent applications (each deploys as separate Cloud Run service)
- **`packages/*`** - Shared code across all applications
- `ui` - Shared UI components (shadcn/ui)
- `config` - Shared configurations
- `types` - Shared TypeScript types
- `utils` - Shared utility functions
- `infra` - Infrastructure and deployment code
**Tech Stack:**
- Monorepo: Bun workspaces
- Framework: Vite / React 19 (ai4su)
- Language: TypeScript
- Styling: Tailwind CSS
- Components: shadcn/ui
- Runtime: Bun
- Deployment: Google Cloud Run
## Getting Started
### Prerequisites
- Bun >= 1.0
- gcloud CLI (for deployment)
### Installation
```bash
# Clone the repository
git clone
cd UI_platform
# Install all dependencies
bun install
```
### Development
```bash
# Run the app
cd apps/ai4su
bun run dev
```
## Working with Apps
### Developing the App
```bash
# Navigate to app
cd apps/ai4su
# Start development server
bun run dev
# Build for production
bun run build
# Type checking
bun run type-check
# Linting
bun run lint
```
### Adding New App
1. **Create app directory:**
```bash
mkdir apps/new-app
cd apps/new-app
```
2. **Initialize framework:**
```bash
bunx create-next-app@latest . --typescript --tailwind --app --use-bun
```
3. **Configure shared packages:**
- Update `tsconfig.json` to extend `@ui-platform/config/tsconfig/nextjs.json`
- Update `tailwind.config.ts` to extend `@ui-pla …