# TaskFlow

Aplicación mínima pero ejecutable: **PostgreSQL 16** + **API NestJS (MikroORM 6, JWT)** + **frontend Angular (nginx)**.

## Arranque rápido

```bash
cd taskflow
cp .env.example .env   # opcional; compose ya tiene defaults
docker compose up --build
```

Espera a que la API termine el sync de esquema y el seed. Luego:

| Servicio   | URL |
|-----------|-----|
| Frontend  | http://localhost:8080 |
| API       | http://localhost:3000/api |
| Health    | http://localhost:3000/api/health |
| PostgreSQL| localhost:5432 (`taskflow` / `taskflow` / db `taskflow`) |

### Usuario demo

- Email: `demo@taskflow.local`
- Contraseña: `Demo123!`

El seed crea también un proyecto demo con dos tareas y etiquetas `bug` / `feature`.

## Dominio

- **Usuarios**: registro y login JWT (`POST /api/auth/register`, `POST /api/auth/login`)
- **Proyectos**: CRUD básico (`/api/projects`)
- **Tareas**: CRUD, asignación y estados `pendiente` | `en_curso` | `hecha` (`/api/tasks?projectId=…`)
- **Etiquetas**: listado (`/api/tags`) y asociación al crear/editar tareas (`tagNames`)

## Variables de entorno (compose)

Ver `.env.example`. Principales:

- `POSTGRES_*` — credenciales de la base
- `JWT_SECRET` / `JWT_EXPIRES_IN`
- `CORS_ORIGIN` — origen del front (default `http://localhost:8080`)
- `API_PUBLIC_URL` — URL que el build del front usa para llamar a la API (default `http://localhost:3000`)

## Esquema de base de datos

En este demo, al arrancar la API se ejecuta **`SchemaGenerator.updateSchema()`** (sync) y después el seed.

Para un flujo con migraciones en serio:

```bash
cd api
npx mikro-orm migration:create
npx mikro-orm migration:up
```

(Desactiva el sync del seed si pasas a migraciones en producción.)

## Desarrollo local (sin Docker del front/API)

1. Levanta solo Postgres: `docker compose up db`
2. API: `cd api && npm install && npm run start:dev` (Node 22+)
3. Web: `cd web && npm install && npm start` (ajusta `environment.ts`)

## Estructura

```
taskflow/
  docker-compose.yml
  .env.example
  README.md
  api/          NestJS + MikroORM
  web/          Angular standalone + nginx
```
