EN CV
# Emanuel Dan
> Software developer · arhitectură, debugging, coordonare · București
 

Întâi înțeleg problema. Apoi o rezolv simplu și solid.

Fac software pentru web din 2009, iar de șapte ani lucrez la sisteme de vânzare pentru restaurante: un kiosk de comandă folosit în patru țări, ecranul din bucătărie, o aplicație pentru livrări și un front end nou pentru back office. Sunt implicat direct în decizii, de la arhitectură până la ultima linie din log-uri.
 
17anide cod scris pentru producție, din 2009
30+brandurifolosesc kioskul la care lucrez, toate pe același cod
4țăriUngaria, Franța, Polonia și România
25+site-uripentru hoteluri și restaurante, plus motoare de rezervări
 
$ whoamisoftware developer · arhitectură, debugging, coordonare · BucureștiSfat: apasă ⌘K sau Ctrl K ca să deschizi orice fișier.
# Despre mine
De la ecranul din restaurant până la server.
 
Am început să fac site-uri în 2009, apoi am lucrat la motoare de rezervări, CMS-uri proprii și portaluri pentru hoteluri. Unul dintre ele a luat premiul Best Hotel Website la eTravel Awards 2018. Din 2019 sunt la Bitsoft și fac software pentru restaurante fast-food.
Sunt pragmatic, analitic și mă interesează rezultatul. Țin la calitatea și performanța a ceea ce construiesc, dar la fel de mult contează ce schimbă pentru utilizatori, pentru clienți și pentru oamenii care lucrează zilnic cu el. Prefer să fiu implicat direct în deciziile tehnice și în implementare: vreau să înțeleg cum funcționează lucrurile, nu doar să dau mai departe sarcini.
Cel mai mult timp îl petrec pe kioskul de comandă, alături de ecranul din bucătărie, aplicația pentru livrări și noul front end de back office. Îmi plac părțile pe care nu le vede nimeni: același cod configurat pentru fiecare client, nu copii separate; teste care trec prin toată comanda pentru fiecare brand; release-uri atât de liniștite încât le poți face și vinerea.
 
## Acum
- Software pentru restaurante la Bitsoft: kiosk, ecran de bucătărie, livrări, back office
- Priorități, estimări și compromisuri, discutate cu echipa
- București, România
 
> Best Hotel Website, eTravel Awards 2018
# Ce fac
Cod, debugging și deciziile din jurul lor.
 
## Dezvoltare și arhitectură
Aplicații web, back end-uri, integrări și API-uri, mai ales în PHP și JavaScript, plus bazele de date din spate. Construiesc pentru termen lung, iar performanța o măsor, nu o ghicesc.
De exemplu:
- Un kiosk de comandă folosit de peste 30 de branduri, același cod configurat pentru fiecare client
- Integrări cu sisteme POS, terminale de plată și imprimante fiscale
- Un motor de reguli prin care am mutat 117 automatizări din casă în cod testat
 
## Analiză și debugging
Găsesc cauza problemelor care trec prin mai multe sisteme: citesc log-uri, fac ipoteze și le testez și văd ce afectează o schimbare înainte să ajungă în producție. Soluția trebuie să rezolve problema, nu să ascundă simptomul.
De exemplu:
- Suport în producție, de la prima investigație până la release
- Modificările la plăți și la partea fiscală, verificate pe configurația fiecărui client înainte să plece
- Un banc de test care a rulat din nou cam 12.400 de evenimente, ca să dovedească faptul că o migrare n-a schimbat nimic din ce nu trebuia
 
## Coordonare tehnică
Stabilesc prioritățile de dezvoltare, estimez efortul, lucrez cu echipele tehnice și pun pe masă, clar, compromisul dintre timp, complexitate și beneficiul pentru business.
De exemplu:
- Fiecare tichet de suport urmărit de la raportare până la release
- Modificări planificate pe client și pe țară, ca o rezolvare pentru unul să nu strice la altul
<template>
<!-- Bitsoft · din 2019 -->
<h1>Kiosk de comandă</h1>
<p>Aplicația de kiosk din restaurantele fast-food, folosită de mai mulți clienți. Clientul alege din meniu, își personalizează produsele, plătește cu cardul și primește bonul fiscal, iar comanda ajunge direct în casa de marcat (POS) și în bucătărie.</p>
<ul>
<li>Același cod, configurat pentru fiecare client, folosit de peste 30 de branduri, printre care Burger King, Popeyes, Subway, Bellozzo și Pep&Pepper</li>
<li>Integrări cu sisteme POS, terminale de plată și imprimante fiscale, inclusiv cu regulile fiscale franceze (NF525)</li>
<li>Build-uri Electron pentru Windows și Linux, cu actualizări de la distanță</li>
<li>Teste automate care parcurg toată comanda pentru fiecare variantă de brand (Jest, Playwright)</li>
</ul>
</template>
 
<script setup>
const stack = ["Vue", "Quasar", "Electron", "Node.js", "Jest", "Playwright", "Docker"]
</script>
# În jurul kioskului
<!-- Bitsoft · platforma pentru restaurante -->
Kioskul e doar o etapă din drumul unei comenzi prin restaurant. Lucrez și la celelalte aplicații prin care trece.
 
  1. ComandăSite de comenzi onlinecomenzi de mâncare de pe web (o perioadă)
  2. BucătărieKDSecranul din bucătărie, în prezent
  3. LivrareDispatchaplicația pentru livrări, în prezent
  4. RapoarteBreeze Reportingaplicație Flutter pentru iOS și Android

Back officeun front end refăcut peste sistemul existent

# Unelte MCP pentru suport
<!-- Bitsoft · unelte AI -->
Servere MCP prin care agenții AI pot citi baza de date POS, ca tichetele de suport să fie investigate pe date reale.
 
$ agent "check the ticket against POS data"● pos-db · read_orders(location, date)● pos-db · read_payments(order)✓ found the mismatch
 
tags: MCP MySQL
# Mai demult: site-uri pentru turism și HoReCa, 2011 – 2019
Portaluri pentru hoteluri, motoare de rezervări, comenzi online pentru restaurante și SEO. Unele site-uri au fost refăcute între timp de alții.
 
- Albena Resort · Portal de resort, motor de rezervări
- Pizza Hut Delivery · Comenzi online, livrare
- Mera Hotels · Portal pentru un grup de hoteluri
- Sergiana Group · Catalog, restaurante, hartă cu magazine
- Poiana Brașov · Site turistic
- Europa Royale · Site de hotel
- Capital Plaza · Site de hotel
- InterContinental · Site pentru evenimente
- Linea Closer to the Moon · Site de restaurant
- Scandia Sibiu · Site de hotel
- Cheile Grădiștei · Site de resort
- Studio One · Site de aparthotel
# house.py · Personal · Home Assistant · în lucru
"""
O casă care se descurcă singură
Casa mea ia singură decizii. Încălzește fiecare cameră separat, pornește aerul condiționat când panourile solare produc în plus, udă grădina doar dacă nu urmează să plouă, trage fiecare rulou când soarele bate în geamul lui și merge mai departe pe baterie când se ia curentul. În spate sunt 190 de dispozitive, peste 3.000 de entități și șase integrări scrise de mine în Python.
"""
 
class House(Autonomous):
devices = 190 # dispozitive
entities = 3.066 # entități
own_integrations = 6 # integrări proprii
automations_in_code = 117 # automatizări mutate în cod
 
def heating(self): # Încălzire
"""Fiecare zonă are rolul ei: moduri de confort, somn și eco, eco cât stă un geam deschis sau nu e nimeni în cameră, încălzire pornită dinainte după program, mod de plecat de acasă și protecție la îngheț."""
 
def solar_and_ac(self): # Solar și aer condiționat
"""Ce produc panourile în plus decide care aparat de aer condiționat are voie să încălzească sau să răcească. Când scade soarele, aparatele se opresc pe rând, iar dacă invertorul nu mai trimite date, sistemul consideră că nu e soare."""
 
def irrigation(self): # Irigații
"""Programe pe zone, cu pompă și electrovalve. Udatul se anulează dacă se anunță ploaie sau deja plouă, iar după un restart se închid întâi toate electrovalvele."""
 
def shutters(self): # Rulouri
"""Fiecare rulou știe unde e soarele față de geamul lui: azimut, înălțime, o corecție pentru fiecare lună și temperatura maximă din prognoză. În nopțile cu îngheț se închid, iar dacă le miști de mână, regulile stau pe pauză până seara."""
 
def weather(self): # Vremea
"""O integrare pentru stația meteo (Wunderground sau Tempest, citită printr-un mic server PHP) dă prognoza de ploaie pe care o folosesc irigațiile și celelalte reguli."""
 
def power_and_presence(self): # Curent și prezență
"""Alerte de la UPS și pentru tensiunea din rețea, revenire după o pană de curent, rutine la plecare și la venire acasă, tag-uri NFC, detectarea persoanelor pe camere și patru panouri pe perete, cu ecrane diferite vara și iarna."""
 
# Cum am construit-o
# - Șase integrări proprii: aproximativ 9.000 de linii de cod și patru carduri de dashboard, configurabile din interfață, în engleză și română
# - 117 automatizări YAML, 48 de scripturi și 146 de helperi mutați în cod, printr-un motor de reguli care folosește chiar mecanismul de automatizări din Home Assistant, ca totul să se comporte exact ca înainte
# - Fiecare migrare a avut backup și restaurare dintr-o singură comandă. Partea de climatizare am verificat-o 1:1 pe un banc de test comparativ (46 de scenarii, cam 12.400 de evenimente), iar orice schimbare voită de comportament a intrat ca o corectură numerotată, aprobată de mine
# - Un mod de test care lucrează pe o copie a setărilor, ca să pot face încercări fără să ating casa
# Tot de mine: lumini care își iau culorile de pe coperta albumului care se aude, o bandă LED comandată prin infraroșu care se poartă ca o lumină normală și automatizări pentru receiverul Denon.
 
$ python house.py --today06:10 Dormitorul se încălzește dinainte la temperatura de confort09:40 Panourile produc în plus: aerul condiționat din living pornește pe căldură12:15 Soare pe geamurile de sud și zi caldă: se trag 3 rulouri16:30 Soarele scade: aparatele de aer condiționat se opresc pe rând18:00 Se anunță ploaie: udatul de seară se anulează21:05 Geam deschis în birou: zona trece pe eco23:40 Îngheț: rulourile rămase deschise se închid✓ Gata pe azi. 7 decizii, 0 intervenții manuale.
// Cum lucrez: Fapte înainte de păreri, pași mici înainte de salturi mari.
// Când lucrurile se complică, caut întâi cauza reală, apoi cea mai simplă soluție care o rezolvă cu adevărat. Complexitatea nu e un merit în sine, așa că nu adaug mecanisme care aduc prea puțin.
 
export const principles = [
{ name: "Pragmatic",
why: "O soluție stabilă și suficient de rapidă e de obicei mai bună decât una perfectă care costă dublu. Complexitatea trebuie să-și merite locul." },
{ name: "Întâi dovezile",
why: "Log-uri, măsurători și teste, nu impresii. Când două variante arată la fel pe hârtie, le măsor." },
{ name: "Cauza reală, apoi soluția simplă",
why: "Aflu ce s-a stricat de fapt, apoi fac cea mai mică schimbare care rezolvă problema de tot. A ascunde simptomul nu se pune." },
{ name: "Schimbări mici, reversibile",
why: "Pași mici, verificați înainte de producție, fiecare cu o cale de întoarcere. Fiecare migrare din casa mea a avut o restaurare dintr-o singură comandă." },
{ name: "Optimizare cu măsură",
why: "Performanța contează, dar o pun în balanță cu costul dezvoltării, cu mentenanța și cu ce are nevoie firma acum." },
{ name: "Pe limba tuturor",
why: "Explicații clare, fără limbaj de corporație, ca oamenii care răspund de un sistem să-l înțeleagă și să poată decide singuri." },
] as const;
 
// Când se strică ceva
export const whenSomethingBreaks = [
1. "Observ" → "Reproduc problema, strâng log-uri, metrici și ore exacte și notez separat ce e sigur și ce e doar presupunere.",
2. "Fac ipoteze" → "Scriu cauzele posibile, începând cu cele mai probabile și mai ușor de verificat.",
3. "Testez" → "Fac cel mai mic experiment care poate confirma sau elimina o cauză.",
4. "Repar" → "Rezolv cauza reală cu cea mai simplă corectură care ține, reversibilă și verificată înainte de producție.",
5. "Verific" → "Compar înainte și după și adaug un test, ca problema să nu mai apară fără să observe nimeni.",
];
# Tehnologie și AI
Un coleg, nu o scurtătură.
 
Mă atrag tehnologiile noi și automatizarea, iar AI-ul îl folosesc ca pe un partener tehnic cu care gândesc, nu ca pe o mașină de generat conținut. Vreau să lucrez mai repede fără să pierd din calitate sau control: ce scrie AI-ul trece prin același review, aceleași teste și același scepticism ca orice alt cod.
 
## La ce îl folosesc
- Să dezvolt și să fac debugging mai repede
- Să analizez probleme tehnice complicate
- Să automatizez partea repetitivă a muncii
- Să compar obiectiv mai multe variante tehnice
- Zi de zi, în fluxul de lucru: agenți de programare, servere MCP prin care citesc sistemele pe care le întrețin, lint și teste după fiecare modificare
 
> Deschis la nou, dar atent să nu iau de bun tot ce generează.
$ git log --career
 
commit 0449dfa (HEAD -> main)
Autor: Emanuel Dan
Perioada: 2019 – prezent
Senior Full-Stack Developer @ Bitsoft
Software pentru lanțuri internaționale de restaurante fast-food: kioskul de comandă, ecranul din bucătărie (KDS), o aplicație pentru livrări, front end-ul refăcut pentru back office, site-ul de comenzi online și o aplicație Flutter pentru rapoarte. Integrări cu plăți, case de marcat și sisteme POS, teste automate, release-uri și suport.
 
commit b669ecc
Autor: Emanuel Dan
Perioada: 2017 – 2019
Web Developer @ Red Route Digital
Motoare de rezervări, un CMS propriu, integrări prin API și SEO pentru hoteluri și resorturi. Peste 25 de proiecte livrate, printre care și site-ul premiat cu Best Hotel Website la eTravel Awards 2018.
 
commit 1058843
Autor: Emanuel Dan
Perioada: 2011 – 2017
Web Developer @ Expremio Technology
Site-uri și aplicații web pentru clienți locali, mai ales lanțuri hoteliere din România, de la dezvoltare până la mentenanță pe termen lung.
 
commit 0d5ebcb
Autor: Emanuel Dan
Perioada: 2009 – 2011
Web Developer @ Tecksoft Concept
Primele site-uri puse în producție, de la zero până la mentenanță.
 
{
"Front end": ["Vue.js", "Quasar", "JavaScript", "HTML", "CSS", "Sass", "Electron"],
"Mobile": ["Flutter", "Dart"],
"Back end": ["PHP", "Laravel", "Node.js", "API-uri REST", "MySQL", "NoSQL"],
"Calitate și livrare": ["Jest", "Playwright", "ESLint", "Docker", "Git", "CI"],
"Tehnologie pentru restaurante": ["Integrare POS", "Terminale de plată", "Imprimante fiscale", "NF525", "Configurare per client"],
"AI și automatizări": ["Agenți AI pentru cod", "Servere MCP", "Python", "Home Assistant"],
"also": "Și: SEO, WordPress · Română (nativ), engleză (C1)"
}
# În timpul liber
Curiozitatea nu se oprește la 6.
 
Și după program e aceeași curiozitate, doar pe alt hardware: electronică, sisteme audio-video, automatizarea casei și infrastructura mea digitală. Îmi place să experimentez, să configurez și să îmbunătățesc sisteme complicate, iar proiectele personale le iau la fel de în serios ca pe cele de la job.
Mă interesează eficiența energetică, casa inteligentă, sunetul și imaginea de calitate și tehnologia care se potrivește în viața de zi cu zi fără să te încurce. Când ceva mă prinde, intru în detalii, compar variantele și caut o soluție care să țină ani de zile.
 
- O casă care se descurcă singură · vezi cum
- Rețeaua de acasă, făcută ca la un birou mic: pfSense, VLAN-uri, VPN, failover pe mai multe conexiuni
- Eficiență energetică și panouri solare
- Audio, video și electronică
- Fotografie · vezi galeria
- Snowboard și mașini
 
## Cum e să lucrezi cu mine
- Analitic și curios · Caut explicații logice și mecanisme pe care le pot verifica.
- Direct și pragmatic · Concluzii clare și recomandări pe care le poți pune în practică.
- Independent · Vreau să înțeleg o soluție destul de bine încât să pot decide singur ce fac cu ea.
- Exigent cu calitatea · Văd detaliile, nepotrivirile și soluțiile făcute pe genunchi.
- Mereu caut ceva mai bun · De obicei se poate și mai bine, așa că nu mă opresc din căutat.
- Deschis la argumente · Dacă vii cu dovezi mai bune, îmi schimb părerea. Iar puțin umor sec nu strică.
 
> Țin la autonomie, la libertatea de a experimenta, la lucrurile bine făcute și la controlul asupra sistemelor pe care le folosesc.
#!/usr/bin/env bash
# Ai un proiect care trebuie dus la capăt?
# Kioskuri, aplicații web sau mobile ori integrările dintre ele. Spune-mi la ce lucrezi și îți răspund în câteva zile.
 
location="București, România"
 
phone_and_vcard # Telefon și vCard
download_cv # Descarcă CV-ul
 
$ ./contact.sh

 
# Confidențialitate · Cookies · Termeni · © 2026 Emanuel Dan
⎇ main ✓ 0 probleme README.md București UTF-8 RO PHP 7.4 Gata