# vreau.digital — Platformă de transparență achiziții publice

## Ce e proiectul

Platforma standalone de transparență pentru achizițiile publice din România. Agregator cross-source via CUI pe 17 surse publice (SEAP, ANAF, ANRE, ANCOM, ASF, AAAS, AEP, CNSC, Curtea Conturi, RegAS, bugetar, ONRC, AFIR, fonduri-ue, CNAS, APIA, GNM).

**Spin-off din `gov-agreg` (vreaudigital.ro)** — vreaudigital.ro rămâne hub-ul de marketing/discoverability. Vreau.digital e produsul real, live, cu DB conectat.

## Stack

- Astro 5 + React 19 + Tailwind 3.4 (NU v4) + Node @astrojs/node standalone
- PostgreSQL 17 @ satra:5432 (17+ schemas + public_kpi snapshots)
- MapLibre 5 + Martin tile server @ 10.10.10.166:3010
- Photon geocoder daemon @ satra:2322
- Docker container @ satra:5096 → Traefik @ proxy 10.10.10.199 → Cloudflare → vreau.digital

## Routes (toate la rădăcină, NU sub /achizitii/)

| Route | Scop |
|---|---|
| `/` | landing — KPI naționale + secțiuni principale |
| `/cauta` | search SEAP cu MapLibre map, filtre cross-source, CPV autocomplete |
| `/retete` + `/retete/[slug]` | rețete investigative (49+) |
| `/investigation` + `/investigation/[slug]` | pagini narative cu cifre live (15+) |
| `/firma/[cui]`, `/autoritate/[cui]` | profile cu timeline 10 ani financiar + badges cross-source |
| `/red-flags` | landing cross-source signals (snapshot table — 207ms) |
| `/top-contracte`, `/top-firme`, `/fonduri-ue` | leaderboards |
| `/azi` | activitate zilnică SEAP |
| `/risc/*` | risk analysis (single-bidder, economii-suspect, termen-scurt, overprice) |
| `/explorer` | data browser |
| `/harta` | Civic OS map — bani publici per județ |
| `/api/og/firma/[cui].png` etc. | OG image generation |
| `/api/cpv/search` | CPV nomenclature autocomplete |
| `/api/profil/[side]/[cui]` | JSON profile API |
| `/api/ocds/*` | Open Contracting Data Standard endpoints |
| `/api/harta/*` | Civic OS map data |
| `/api/version` | deploy verification |

## Data sources & freshness

| Schema | Rows | Cadence | Live? |
|---|---:|---|---|
| seap.announcements | 781K+ | daily WSP scrapers (T+0) | ✓ |
| firms.entities (ONRC) | 4.005M | monthly fresh import | ✓ |
| firms.financials | 7.77M (10 ani, 2015-2024) | annual data.gov.ro | ✓ |
| anaf.datornici | 47K T1 2026 LIVE | **quarterly via 2captcha** | ✓ |
| anaf.lista_alba | 648K T1 2026 LIVE | **quarterly via 2captcha** | ✓ |
| anre.licente | 29K | weekly | ✓ |
| ancom.operatori | 518 | weekly | ✓ |
| asf.entitati | 849 | weekly | ✓ |
| aaas.firme | 11 (limit sursă) | weekly | ✓ |
| aep.donatii_pj/pf/rvc | 380K | monthly | ✓ |
| cnsc.decizii | 29K | weekly | ✓ |
| curteacont.rapoarte | 1133 | weekly | ✓ |
| regas.ajutoare | 78K | monthly | ✓ |
| bugetar.entitate | 18K | quarterly | ✓ |
| cnas.furnizori | 36K (50+ PDFs parse) | monthly | ✓ |
| apia.fermieri | 191 (snapshot test) | quarterly | ✓ |
| fonduri.beneficiar_anunt | 41K | weekly | ✓ |
| fonduri.afir_plati | 5.33M | monthly | ✓ |

## Deploy

- CI/CD: Gitea webhook → `satra:9867/hooks/vreau-digital-deploy` → `/opt/vreau-digital/deploy.sh`
- Build args: BUILD_SHA, BUILD_REF, BUILD_TIME → expose via /api/version
- Secrete: Infisical Machine Identity `/vreaudigital` (DATABASE_URL, TWOCAPTCHA_KEY)
- Verifică `/api/version` post-push

## Reguli operaționale

- `npx astro check` + `npm run build` PASS înainte de commit
- DACĂ scp pe satra → reset ÎNAINTE de push (deploy.sh git pull --ff-only fails)
- Pre-create `/var/log/vreau-digital-*.log` cu chown bulibasa pentru scrapere noi
- NU echo niciun secret. `$VAR` unexpanded. `--env-file` (NU `-e`)
- DB queries: `/tmp/govq.sh` reads SQL stdin → architools_db pe satra
- Memory: scrie DIRECT în `~/Code/claude-memory/projects/vreau-digital/memory/` + git commit + push (sync cron clobbers `~/.claude/.../memory/` every 60s)
- systemd OnCalendar: `Sun *-*-*` (cu SPACE după ziua), NU `Sun*-*-*`
- Comit-uri mici, focusate. NU amend.

## Sister project: gov-agreg (vreaudigital.ro)

Hub-ul de marketing/discoverability — listează produsele, idei, propuneri. Conține REDIRECTS de la /achizitii/* la vreau.digital.

- **Repo:** `gitadmin/gov-agreg`
- **Domain:** `https://vreaudigital.ro`
- **Local path:** `/home/orchestrator/Code/gov-agreg/`

NU atinge marketing pages (idei, despre, contribuie, produse) — alea sunt în gov-agreg.

Vezi `PROMPTS.md` pentru context tehnic complet + istoric sesiuni.
