# RESILIENCE — Microsite

Single-page institutional microsite for the **RESILIENCE** research project
(*Residential Energy-Efficiency Strategies Incorporating Lifecycle Sustainability
and Circular Economy*), INESC Coimbra.

- **Project code (Streamline):** SLC20260008
- **Client:** INESC Coimbra — Álvaro Gomes
- **Methodology:** Spec-Driven Development — see [`specs/`](./specs)

## Stack
Vite · React · TypeScript · Tailwind CSS v4 · shadcn/ui · @tanstack/react-router
· framer-motion · lucide-react.

## Getting started
```bash
npm install
npm run dev      # dev server (http://localhost:5173)
npm run build    # type-check (tsc -b) + production build
npm run preview  # preview the production build
```

> **Requisito:** Node.js ≥ 18 e npm instalados e disponíveis no PATH.

## Docker (funcionamento isolado — recomendado)
Não requer Node no host: o build corre dentro da imagem (multi-stage node→nginx).
```bash
docker build -t resilience-microsite .
docker run --rm -p 8080:80 resilience-microsite   # http://localhost:8080
# ou:
docker compose up --build
```
Ver [`specs/06-deployment.md`](./specs/06-deployment.md) para detalhes.

## Structure
```
src/
  data/project.ts         # conteúdo canónico (fonte: input_files/)
  lib/                    # utils + scroll helper
  components/
    ui/                   # primitivos shadcn (button, card, badge, dialog, sheet)
    layout/               # Header, Footer, Section
    sections/             # Hero, Goal, WorkPlan, Gantt, Indicators
  App.tsx                 # composição da single page
  router.tsx              # @tanstack/react-router (rota /)
```

## Sections
Header (anchors: Home · Work plan · Indicators) → Hero → Goal & contribution →
Work plan (cards + interactive Gantt) → Indicators (clickable cards) → Footer
(partners + funding).

## Notes
- Conteúdo em inglês; fonte de verdade em `input_files/` (não inventar conteúdo).
- Logos dos parceiros são placeholders até serem fornecidos (ver `specs/CHANGELOG.md`).
- Paleta navy institucional definida em `src/index.css` (afinável).
