Files
vreau-digital/PLAN-OPENSOURCE.md
T
Claude VM a6c03a091e initial: split from gov-agreg — vreau.digital standalone platform
Moved from gov-agreg/src/pages/achizitii/* to root (drop prefix).
- 22 pages migrated, 127 files total
- All internal links: /achizitii/X → /X (176 occurrences fixed)
- AchizitiiLayout subnav rewritten: /X paths, top-right link to vreaudigital.ro hub
- BaseLayout new (vreau.digital branding, OG tags, site URL)
- astro.config.mjs: site https://vreau.digital, server output (was static)
- docker-compose: port 5096 (vreaudigital is 5095), container vreau-digital
- deploy.sh: paths /opt/vreau-digital, log /var/log/vreau-digital-deploy.log

Backend shared with gov-agreg:
- PostgreSQL satra (same schemas: seap, firms, anaf, anre, ...)
- Photon, Martin tiles
- Infisical /vreaudigital path (DATABASE_URL etc. shared)

build: PASS (npx astro check 0 errors, npm run build 5s vite + 10s server)
2026-05-13 00:10:32 +03:00

20 KiB
Raw Blame History

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)

## 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):

# .github/workflows/build.yml
# Rulează: npm ci && npm run build
# Fail dacă build-ul pică

2. Deploy automat (la merge în main):

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