# CodeFlash AI

## Overview

CodeFlash AI is a JavaScript/TypeScript monorepo that provides a scalable and modular architecture for web applications, focusing on efficient code sharing and robust development practices.

## Project Structure

```
js/
├── common/           # Shared code and database schema
├── cf-api/           # Backend API service
├── cf-webapp/        # Next.js web application
├── VSC-Extension/    # VS Code extension
└── pnpm-workspace.yaml
```

## Prerequisites

- Node.js (v20+)
- pnpm (v10+): `npm install -g pnpm`
- Prisma CLI (installed as devDependency)

## Setup

### 1. Clone the Repository

```bash
git clone https://github.com/your-org/codeflash-ai.git
cd codeflash-ai/js
```

### 2. Install Dependencies

```bash
# Install all workspace dependencies from js/
pnpm install
```

### 3. Database Configuration

```bash
# Generate Prisma client and run migrations
cd common
pnpm prisma generate
pnpm prisma migrate dev
```

## Development Workflow

### Start Development Servers

```bash
# From js/ workspace root:
pnpm --filter cf-api dev
pnpm --filter cf-webapp dev
```

### Build

```bash
# Build individual packages
pnpm --filter cf-webapp build
pnpm --filter cf-api build
pnpm --filter @codeflash-ai/common build
```

## Key Components

### Common Package (`@codeflash-ai/common`)

- Shared TypeScript utilities
- Prisma database schema
- Reusable functions across projects
- Referenced as `"workspace:*"` by cf-api and cf-webapp

#### Usage Example

```typescript
import { createOrUpdateUser } from "@codeflash-ai/common"
```

## Best Practices

1. Always install from the workspace root (`js/`)
2. Keep shared logic in the `common` package
3. Use TypeScript for type safety
4. Follow existing code structure
5. Never commit sensitive data or build artifacts

## Publishing common Package

```bash
cd common
pnpm build
pnpm publish
```
