# JobRant Development Notes

## Quick Start

```bash
cd /var/www/vhosts/applie.org/public_html

# Install dependencies (already done)
npm install

# Generate Prisma client & push schema to database
npx prisma generate
npx prisma db push

# Start development server
npm run dev
# App runs at http://localhost:3000

# Build for production
npm run build
```

## Database Setup

### Current: SQLite (Development)
- Uses SQLite with file-based storage
- Database file: `prisma/dev.db`
- No setup required - works immediately

### Switch to PostgreSQL (Production)
1. Update `prisma/schema.prisma`:
   ```prisma
   datasource db {
     provider = "postgresql"
     url      = env("DATABASE_URL")
   }
   ```

2. Create PostgreSQL database:
   ```sql
   CREATE USER jobrant WITH PASSWORD 'your_password';
   CREATE DATABASE jobrant OWNER jobrant;
   GRANT ALL PRIVILEGES ON DATABASE jobrant TO jobrant;
   ```

3. Update `.env`:
   ```
   DATABASE_URL="postgresql://jobrant:your_password@localhost:5432/jobrant"
   ```

4. Run:
   ```bash
   npx prisma db push
   ```

## Docker Setup (If Available)

```bash
# Start PostgreSQL only
docker compose up -d db

# Start full app + database
docker compose up -d
```

## Environment Variables (.env)

```env
DATABASE_URL="file:./dev.db"           # SQLite (dev)
# DATABASE_URL="postgresql://..."       # PostgreSQL (prod)

NEXTAUTH_SECRET="generate-a-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# OAuth (optional - for login)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=

# Payments (optional)
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=

# AI (optional)
OPENAI_API_KEY=
```

## Key Commands

```bash
npm run dev          # Development server
npm run build        # Production build
npm run lint         # Run ESLint
npm run db:studio    # Open Prisma Studio (visual DB editor)
npm run db:push      # Push schema changes
npx prisma generate  # Regenerate Prisma client
```

## Project Structure

```
├── prisma/
│   └── schema.prisma    # Database schema
├── src/
│   ├── app/
│   │   ├── page.tsx     # Homepage
│   │   ├── layout.tsx   # Root layout
│   │   └── api/         # API routes
│   │       ├── auth/
│   │       ├── companies/
│   │       ├── problems/
│   │       └── chat/
│   ├── components/      # React components
│   └── lib/            # Utilities (prisma client, helpers)
├── docker-compose.yml  # Docker setup
└── .env                # Environment variables
```

## Troubleshooting

**Port 3000 already in use:**
```bash
lsof -i :3000
kill -9 <PID>
```

**Database locked:**
```bash
rm prisma/dev.db
npx prisma db push
```

**Prisma client out of sync:**
```bash
npx prisma generate
npx prisma db push
```

## Production Deployment Notes

- Build output is in `.next/`
- Use `npm run build` before deploying
- Set `NODE_ENV=production`
- Consider PM2 for process management:
  ```bash
  npm install -g pm2
  pm2 start npm --name "jobrant" -- start
  pm2 save
  ```
