# SkinSense Backend

AI-Based Dermatology Clinical Decision Support System (MVP).

## Stack

- Node.js + Express
- MySQL (Sequelize)
- Qdrant (vector search)
- OpenAI (embeddings + chat)

## Quick start (Docker)

```bash
# From repo root
docker compose up -d

# Backend runs on http://localhost:8000
# MySQL on 3306, phpMyAdmin on 8080, Qdrant on 6333
```

Set `OPENAI_API_KEY` in `backend/.env.development` before running diagnosis or ingestion.

## Local development (without Docker backend)

```bash
cd backend
npm install
cp .env.example .env.development

# Start MySQL + Qdrant via Docker
docker compose up -d mysql qdrant

npm run db:migrate
npm run db:seed
npm run dev
```

## Default admin

- Email: `admin@skinsense.dev`
- Password: `Admin@12345`

## Ingest PDF dataset into Qdrant

```bash
cd backend
# Requires OPENAI_API_KEY
npm run ingest -- --reindex

# Test with a small batch first
npm run ingest -- --reindex --limit=50
```

## API endpoints

| Method | Endpoint | Auth |
|--------|----------|------|
| GET | `/api/v1/health` | Public |
| POST | `/api/v1/auth/login` | Public |
| POST | `/api/v1/diagnosis/sessions` | Public |
| POST | `/api/v1/diagnosis/sessions/:id/answer` | Public |
| GET | `/api/v1/admin/patients` | Admin JWT |
| GET | `/api/v1/admin/sessions/:id` | Admin JWT |
