# 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.