# PLAN-OPENSOURCE.md — Strategia de Lansare Open-Source
# vreaudigital.ro / gov-agreg

**Data:** 7 aprilie 2026  
**Autor:** Marius + Claude  
**Status:** Draft — planificare pre-lansare

---

## Context și filozofie

Strategia e simplă: construim în privat pe Gitea până avem ceva de care nu ne e rușine, apoi lansăm public pe GitHub cu un bang, nu un whimper. Nu lansăm "early" ca să primim feedback că site-ul e gol. Lansăm când avem cel puțin 3 demo-uri funcționale și un design care inspiră.

**Principiu fundamental:** Prima impresie pe GitHub/HackerNews e greutatea aurului. Nu pierdem acea impresie pe un repo cu un README gol și un commit "initial setup".

---

## 1. Checklist pre-lansare

### Codul și structura

- [ ] Site-ul e live pe vreaudigital.ro (nu doar local sau pe un subdomain de test)
- [ ] Build trece fără erori și fără warning-uri critice (`astro build` clean)
- [ ] Niciun secret, token sau credențial în git history (verifică cu `git log --all -p | grep -i "token\|secret\|key\|password"`)
- [ ] `.gitignore` corect — fără `.env`, fără `node_modules/`, fără fișiere de editor (`.DS_Store`, `.idea/`)
- [ ] Commit history curat — dacă history-ul de pe Gitea conține mesaje interne jenante sau experimente, faci un fresh repo pe GitHub (nu mirror)

### Documentație minimă obligatorie

**README.md** — cel mai important fișier, citit de toți:
- [ ] Ce e proiectul (2-3 propoziții, în română și engleză — da, excepție de la regula "doar română" pentru README)
- [ ] Screenshot sau GIF animat al site-ului în README (obligatoriu — repo-urile fără imagini au CTR mizerabil)
- [ ] Link spre site-ul live (primul lucru)
- [ ] Cum rulezi local (maxim 4 comenzi: clone, npm install, npm run dev)
- [ ] Cum contribui (link spre CONTRIBUTING.md)
- [ ] Licența

**CONTRIBUTING.md:**
- [ ] Cum adaugi un produs nou (flow-ul cu fișierul MDX)
- [ ] Cum raportezi o problemă
- [ ] Convenție de commit messages (simplu: `feat:`, `fix:`, `content:`)
- [ ] Ce nu acceptăm (produse proprietare fără demo live, produse fără legătură cu administrația publică)

**LICENSE:**
- [ ] MIT pentru codul platformei
- [ ] Notă separată: conținutul (produsele listate) aparține autorilor lor

**CODE_OF_CONDUCT.md:**
- [ ] Folosești Contributor Covenant 2.1 (copy-paste standard, traducere în română)
- [ ] Contact pentru raportare abuzuri (un email dedicat, ex: conduct@vreaudigital.ro)

### Issue templates (`.github/ISSUE_TEMPLATE/`)

Trei template-uri, nu mai multe:

**1. `product-submission.md`** — pentru cei care vor să listeze un produs:
```
Nume produs:
URL (live sau demo):
Categorie:
Screenshot/video (link):
Descriere scurtă (2 propoziții):
Unde funcționează deja? (opțional):
```

**2. `bug-report.md`** — standard, minimal:
```
Ce ai încercat să faci:
Ce s-a întâmplat:
Ce te așteptai să se întâmple:
Browser/OS:
```

**3. `improvement.md`** — propuneri de îmbunătățire a platformei

### PR template (`.github/pull_request_template.md`)

```markdown
## Ce face acest PR

## Tip de schimbare
- [ ] Produs nou adăugat
- [ ] Fix conținut existent
- [ ] Îmbunătățire platformă
- [ ] Altele

## Checklist
- [ ] Am rulat `npm run build` local și trece fără erori
- [ ] Screenshot-urile sunt actualizate (dacă e cazul)
- [ ] Nu am adăugat dependențe noi fără motiv
```

### CI/CD minimal

**Nu avem nevoie de ceva complex.** Două GitHub Actions:

**1. Build check** (la orice PR):
```yaml
# .github/workflows/build.yml
# Rulează: npm ci && npm run build
# Fail dacă build-ul pică
```

**2. Deploy automat** (la merge în main):
```yaml
# .github/workflows/deploy.yml
# Cloudflare Pages are GitHub integration nativă — probabil nici nu ai nevoie de Action manual
# Dacă folosești Cloudflare Pages GitHub integration, deploy-ul e automat out of the box
```

**Ce NU adăugăm la CI:** linting strict, type-check cu erori blocante, teste (nu avem), dependency scanning (overkill). Adăugăm când/dacă repo-ul are contributori activi și merită.

---

## 2. Unde lansăm

### GitHub — da, GitHub, nu Gitea

**De ce GitHub și nu Gitea public:**
- Descoperabilitate zero pe Gitea dacă nu știi exact URL-ul
- Stars, forks, trending — GitHub are efect de rețea
- GitHub Discussions, Issues, Actions sunt așteptate de contributori
- "Contribute on Gitea" e o barieră în plus pentru oricine vrea să ajute

**Gitea rămâne ca:**
- Mirror privat / backup (setup automat push mirror)
- Development intern dacă vrei să lucrezi "în privat" înainte de push
- Istoric — nu șterge repo-ul, dar GitHub devine primary

### Nume organizație GitHub

Recomandări în ordinea preferinței:

1. **`vreaudigital`** — dacă domeniul e al nostru, organizația trebuie să fie la fel
2. **`gov-agreg`** — merge ca repo name, nu ca org name (prea tehnic)
3. **`digitalizare-ro`** — alternativă dacă vreaudigital e luat

**Decizie recomandată:** Creezi organizația `vreaudigital` pe GitHub, cu repo-ul principal `vreaudigital.ro` (sau `platform`). Organizația lasă loc pentru repo-uri separate ulterior.

### Structura repo-urilor — monorepo, cel puțin la start

**Monorepo `vreaudigital/platform`** conține:
```
/                     ← codul Astro al platformei
/src/products/        ← un fișier .mdx per produs listat
/src/pages/           ← paginile site-ului
/public/              ← assets statice
/.github/             ← templates, actions
```

**Repo-uri separate (mai târziu, nu acum):**
- `vreaudigital/traducator-birocratic` — dacă demo-ul birocratic devine tool separat cu UI propriu
- `vreaudigital/harta-digitalizarii` — idem
- `vreaudigital/date` — eventual, date curate despre servicii publice

**Nu face multi-repo de la start** — overhead de management fără beneficiu real la dimensiunea actuală.

---

## 3. Criterii de lansare — ce declanșează "go public"

Nu lansăm după un calendar fix. Lansăm când sunt îndeplinite toate criteriile din categoria A și cel puțin 2 din categoria B.

### Categoria A — Obligatorii (toate trebuie bifate)

- [ ] **Site live** pe vreaudigital.ro, accesibil public, fără erori evidente
- [ ] **Minim 5 produse listate** cu pagini complete (screenshot + descriere + link funcțional)
- [ ] **Minim 1 demo funcțional** (nu link extern, ci ceva ce rulează pe domeniul nostru sau demo interactiv embeded)
- [ ] **Design decent** — hero section cu mesaj clar, categorii vizuale, mobile-friendly
- [ ] **README cu screenshot** — cineva care vede repo-ul pe GitHub înțelege imediat ce e
- [ ] **Niciun secret în git** — verificat explicit

### Categoria B — Cel puțin 2 din 4

- [ ] **Traducătorul birocratic funcțional** — cel mai viral produs, dacă îl avem la lansare crește reach-ul masiv
- [ ] **Pagina "Listează-ți produsul"** funcțională (formularul trimite cererea undeva — email sau GitHub Issue)
- [ ] **Minim 3 categorii populate** cu cel puțin 2 produse fiecare
- [ ] **Analytics setup** (Plausible sau Umami) ca să știm dacă oamenii intră

### Ce nu contează pentru timing

- Câte stele are repo-ul (zero la lansare, normal)
- Dacă CONTRIBUTING.md e perfect
- Dacă am răspuns la toate issue-urile (nu există încă)
- Dacă instituțiile știu de noi

---

## 4. Campania de lansare

### Cu o zi înainte — pregătire

- [ ] Draft-urile postărilor sunt scrise și revizuite
- [ ] Screenshot-uri proaspete ale site-ului (nu din beta)
- [ ] GIF animat de 5-10 secunde care arată ce face traducătorul birocratic (tool: LICEcap sau screen2gif)
- [ ] Link-urile scurtate (nu e.g. `github.com/vreaudigital/platform/blob/main/src/...`)
- [ ] Repo-ul GitHub e public (verifică că nu e private)
- [ ] GitHub Discussions activat

### Ziua lansării — ordinea contează

**Dimineața (8-9 AM):**
1. Postare pe HackerNews "Show HN" — postezi tu primul, traficul vine repede dacă prinde
2. Postare pe r/Romania

**Mijlocul zilei (12-14):**
3. Thread pe Twitter/X
4. Post pe LinkedIn (pentru developeri și oameni din tech)

**Seara (18-20):**
5. Facebook — grupurile dev românești (cel mai activ trafic seara)
6. Răspunzi la toate comentariile de peste zi

**Nu posta simultan pe toate canalele** — primești feedback pe unul și poți ajusta mesajul pentru următorul.

### Unde postezi

| Canal | Tip conținut | Ton | Așteptări |
|-------|-------------|-----|-----------|
| **HackerNews** `Show HN:` | Titlu concis, link, scurt context în comentariu | Tehnic, direct | 50-500 upvotes dacă prinde. Trafic calitativ. |
| **r/Romania** | Post cu imagine + text | Emoțional, cetățean | 100-1000 upvotes dacă e share-abil. Audiență mare. |
| **r/opensource** | Post tehnic cu README link | Tehnic, comunitate | Nișat, trafic mic dar relevant |
| **Twitter/X** | Thread 5-7 tweet-uri | Vizual, hashtags | #Romania #civic #digitalizare #opensource |
| **LinkedIn** | Post cu screenshot | Profesional, impact social | Tag developeri și oameni din gov tech |
| **Facebook — Developeri Romania** | Post cu GIF + link | Informal, direct | Grupul cel mai activ din RO pentru dev |
| **Facebook — Civic tech / ONG** | Post axat pe cetățeni | Emoțional, "de ce contează" | Audiență non-tech, share potențial |

### Template post HackerNews

```
Show HN: vreaudigital.ro – open-source hub for Romanian civic tech

[URL: https://vreaudigital.ro]

Romania's public administration still runs on PDF forms, phone queues, 
and websites from 2005. We built an open-source catalog of tools that 
show what's actually possible.

Not enterprise software — demos that work in a browser, in 30 seconds. 
Built by independent developers, for citizens and municipalities.

Current highlights:
- Birocratic Translator: paste any official text, get plain-language explanation
- Digitalization Map: interactive map of which Romanian cities have online services  
- Budget Visualizer: where do your local taxes actually go?

Stack: Astro + Tailwind + Markdown, deployed on Cloudflare Pages. 
Zero database, zero backend, zero cost to run.

Looking for Romanian civic tech projects to list. If you've built something 
in this space, open an issue.
```

### Template post r/Romania

```
Am construit vreaudigital.ro — un catalog de soluții de digitalizare reală

[screenshot/GIF]

Toată lumea se plânge că România digitală = formulare PDF online și site-uri din 2005.
Am decis să arătăm cum ar putea fi altfel.

vreaudigital.ro e un catalog open-source de tools și demo-uri construite de 
programatori independenți, care arată ce e posibil când te gândești la cetățean, 
nu la birocrație.

**Ce găsești acum:**
- Traducătorul birocratic — lipești orice text oficial, primești explicația pe înțelesul tău
- Harta digitalizării — cât de "online" e primăria ta față de celelalte
- Vizualizare buget local — pe ce se duc banii din taxele tale, în grafice

Toate sunt demo-uri reale, nu slide-uri.

Suntem open-source: [link GitHub]

Dacă ai construit ceva similar sau vrei să contribui, bine ai venit.

Ce digitalizare vreți voi să existe și nu există? (Luăm sugestii serios.)
```

### Template thread Twitter/X

```
Tweet 1: 
România digitală = formulare PDF, cozi la ghișeu, site-uri din 2005.
Noi arătăm cum ar putea fi altfel.

Lansăm vreaudigital.ro — un hub open-source de digitalizare reală 🧵

[screenshot site]

Tweet 2:
Nu e un alt portal guvernamental.
E un catalog de demo-uri construite de programatori independenți.

Fiecare produs răspunde la: "ce s-ar schimba în viața ta dacă asta ar exista la primăria ta?"

Tweet 3:
Primul demo: Traducătorul Birocratic 🏛️
Lipești orice text oficial → primești explicația pe românește

[GIF demo]

Tweet 4:
Al doilea: Harta Digitalizării 🗺️
Care primării au servicii online? Care sunt în 2005?
Date crowdsourced, actualizate de comunitate.

Tweet 5:
Open-source, zero buget instituțional, construit în weekenduri.
Stack: Astro + Tailwind + Cloudflare Pages.

Vrei să-ți listezi proiectul? Trimite un issue:
[link GitHub]

Tweet 6:
#Romania #CivicTech #OpenSource #Digitalizare

Dacă știi un programator care a construit ceva util pentru administrație — 
tag-uiți-l. Vrem să-i dăm vizibilitate.
```

### Cine să contactezi direct (outreach personalizat)

**Tech influenceri și comunități românești:**
- Comunitatea React România (Facebook group, ~30k membri)
- Developeri Romania (Facebook group)
- Cluj.rb, JSHeroes, TechHub Cluj — comunități locale cu reach
- Blogeri tech RO: cautăm oameni care au scris despre civic tech, gov tech, sau critica digitalizării

**Jurnaliști relevanti:**
- Recorder.ro — investigații, ar fi interesați de harta digitalizării
- PressOne — tech și societate
- Libertatea — rubrica "România funcțională" sau similare
- G4Media — dacă harta sau bugetele devin știre

**Nu spam blast — mesaj personalizat pentru fiecare:**
```
Bună [Nume],

Am văzut că ai scris/ai vorbit despre [subiect relevant].
Tocmai am lansat vreaudigital.ro — un catalog open-source de soluții de digitalizare 
pentru administrația publică din România.

[Un lucru specific de pe site relevant pentru ei]

Dacă crezi că e relevant pentru audiența ta, m-ar bucura să știu.
Nu e un comunicat de presă — e un proiect mic construit de 1-2 oameni.

[Marius]
```

---

## 5. Community management post-lansare

### Primele 48 de ore — totul contează

- Răspunde la **orice** comentariu, issue, sau mesaj în primele 48h
- Nu lăsa nicio întrebare fără răspuns, oricât de banală
- Dacă cineva raportează un bug real, fix-ul în sub 24h și reply cu "fixed, merci"
- Dacă cineva propune ceva bun, deschide un issue ca să nu se piardă

### Gestionarea primilor contributori

**Primul contributor e cel mai important.** Tratează-l ca un client VIP:

1. **Ghidare activă** — dacă deschid un PR care e aproape bun dar nu perfect, nu-l rejecta, ajută-i să-l corecteze
2. **Merge rapid** — dacă e ok, merge-uiești în 24-48h, nu în 2 săptămâni
3. **Credit public** — menționezi pe Twitter/LinkedIn: "Primul contributor extern: [nume] a adăugat [ce a adăugat]"
4. **Invitație în echipă** — după 2-3 contribuții serioase, îl faci collaborator pe repo

**Ce faci cu submisiile de produse (Issues):**
- Review în maxim 72h (nu 2 săptămâni)
- Template de răspuns dacă lipsesc informații:
  ```
  Mulțumim pentru submisie! 
  
  Ca să putem lista produsul, avem nevoie de:
  - [ ] Screenshot sau video demo (minim 30 de secunde)
  - [ ] Link live sau demo funcțional
  
  Revenim imediat ce le ai.
  ```
- Dacă produsul nu se califică, explici clar de ce (nu un "nu se potrivește" vag)

### Strategia de labels pe issues

Minimal și funcțional — nu inventa 20 de labels:

| Label | Culoare | Când îl folosești |
|-------|---------|------------------|
| `good-first-issue` | Verde deschis | Fix de typo, adăugat un produs cu template gata, fix CSS simplu |
| `help-wanted` | Galben | Funcționalitate pe care noi nu avem timp s-o facem dar e clară |
| `product-submission` | Albastru | Oricine trimite un produs nou |
| `bug` | Roșu | Ceva e stricat |
| `enhancement` | Mov | Idee de îmbunătățire confirmată |
| `wontfix` | Gri | Respins cu explicație |
| `stale` | Gri deschis | Issue inactiv 30+ zile (opțional, nu e urgent) |

**Nu adăuga** labels de prioritate (P0/P1/P2) sau de component (frontend/backend) — overkill pentru un repo gestionat de 1-2 oameni.

### Canal de comunicare cu comunitatea

**Recomandare: GitHub Discussions, nu Discord (deocamdată)**

De ce nu Discord acum:
- Discord necesită moderare activă și prezență constantă
- O comunitate Discord goală arată mai rău decât să nu ai deloc
- Oamenii nu intră pe un Discord cu 5 membri
- Revenim la Discord când avem 50+ contributori activi

**GitHub Discussions — categorii:**
- **Anunțuri** — lansări, produse noi (doar maintainer poate posta)
- **Idei de produse** — ce ar trebui să existe pe portal
- **Ajutor** — întrebări tehnice despre cum să contribui
- **General** — orice altceva

**Newsletter (opțional dar recomandat):**
- Buttondown.email (gratuit până la 1000 abonați) sau Substack
- Frecvență: o dată pe lună, nu mai des
- Conținut: produse noi, impact, câteva statistici, ce urmează
- Subiect: "vreaudigital — [luna] [an]: ce s-a întâmplat"

---

## 6. Planul de migrare Gitea → GitHub

### Opțiunea A — Fresh repo pe GitHub (recomandată)

**Când s-o alegi:** Dacă git history-ul de pe Gitea conține experimente, mesaje de commit interne, sau commit-uri "WIP fix OMG", e mai curat să pornești fresh pe GitHub.

**Pași:**
1. Creezi organizația `vreaudigital` pe GitHub
2. Creezi repo `platform` (public)
3. Pregătești codul local (curat, toate fișierele de mai sus prezente)
4. `git remote add github https://github.com/vreaudigital/platform.git`
5. `git push github main`
6. Setezi GitHub ca remote principal: `git remote set-url origin https://github.com/vreaudigital/platform.git`
7. Pe Gitea, setezi un **push mirror** spre GitHub (Settings → Git Hooks sau Mirrors) — orice push pe Gitea se duce automat și pe GitHub

**Avantaj:** History curat pe GitHub, fără "urmele" de lucru intern.

### Opțiunea B — Mirror automat Gitea → GitHub

**Când s-o alegi:** Dacă history-ul e deja curat și vrei să continui să lucrezi pe Gitea.

**Pași:**
1. Pe Gitea: Settings → Repository → Mirror Settings → Push Mirror
2. Adaugi GitHub URL + token GitHub cu permisii `repo`
3. Testezi că push-ul se propagă corect
4. Setezi sync interval: 10-30 minute (sau imediat la push)

**Dezavantaj:** Issues, PRs, și Discussions de pe GitHub nu se sincronizează înapoi pe Gitea. Trebuie să decizi: GitHub e pentru comunitate, Gitea e pentru tine.

### Ce rămâne pe Gitea

- Backup complet al repo-ului (mirror pasiv)
- Folosit intern dacă vrei să experimentezi înainte de push la GitHub
- Nu îl faci public — rămâne privat ca "working copy"
- Dacă infrastructure-ul de la beletage.ro pică, GitHub rămâne up

### Ce facem cu Cloudflare Pages

Cloudflare Pages poate fi conectat direct la GitHub repo (nu Gitea). La lansare:
1. Deconectezi Cloudflare Pages de la Gitea (dacă era conectat)
2. Reconectezi la GitHub repo `vreaudigital/platform`
3. Deploy-ul automat merge acum din GitHub → Cloudflare Pages

---

## 7. Timeline recomandată

```
Acum                    → Construiești MVP (Faza 1 din PLAN.md)
Săptămâna 4             → Site live pe vreaudigital.ro, 5 produse, 1 demo
Săptămâna 4 (end)       → Checklist pre-lansare complet
Ziua X (lansare)        → Gitea private → GitHub public + campanie
Ziua X+1 până X+7      → Răspunzi la tot, fix rapid, prima contribuție externă
Luna 2                  → 15 produse, GitHub Discussions activ, newsletter #1
Luna 3                  → Evaluezi dacă Discord merită deschis
```

---

## 8. Ce nu faci la lansare (capcane comune)

| Capcana | De ce o eviți |
|---------|---------------|
| Lansezi cu un README gol "coming soon" | Prima impresie = ultima impresie pe HN/Reddit |
| Ceri star-uri în mod agresiv | Pare spam, dăunează credibilității |
| Faci PR blast la zeci de oameni | Spam, te pui rău cu comunitatea |
| Promiti features care nu există | "Roadmap ambițios" fără delivery = credibilitate zero |
| Răspunzi defensiv la critici | Pe HN mai ales, critica negativă tratată bine devine pozitivă |
| Lansezi vineri seara | Postezi luni-marți dimineața pentru engagement maxim |
| Faci un GitHub cu 100 de issues deschise | Arată abandonat. Zero issues la lansare, deschizi tu câteva "good first issue" |

---

## TL;DR — Checklist rapid înainte de butonul "Make public"

```
□ Site live pe vreaudigital.ro
□ 5+ produse cu pagini complete
□ 1+ demo funcțional (traducător birocratic recomandat)
□ README cu screenshot
□ CONTRIBUTING.md
□ LICENSE (MIT)
□ CODE_OF_CONDUCT.md  
□ .github/ISSUE_TEMPLATE/ (3 template-uri)
□ .github/pull_request_template.md
□ GitHub Actions: build check pe PR
□ Niciun secret în git history
□ Org GitHub "vreaudigital" creată
□ Cloudflare Pages reconectat la GitHub
□ Draft-uri postări HN + r/Romania gata
□ 5 persoane de contactat direct pregătite
```

Când toate astea sunt bifate, lansezi un luni dimineața și stai toată ziua la ecran.
