Toate funcționalitățile HOA Manager — vizual, explicit, fără jargon
19 module descrise cu scenarii reale „înainte vs după", status onest (✅ funcțional / 🚧 în dezvoltare), beneficii concrete per rol. Folosește căutarea de mai jos pentru a găsi rapid ce te interesează sau navigația din stânga pentru a sări direct la un modul. La final, arhitectura platformei (multi-asociație, multi-utilizator, multi-bloc) și măsurile de securitate.
Administrare proprietăți + coproprietari multipli
🎯 Ce face concret
- Tipuri de unități — apartament, garaj, parcare, boxă, spațiu comercial, altele. Fiecare cu câmpurile specifice (proprietar/chiriaș la apartament, doar proprietar la boxă).
- Cota indiviză automată — calculată din suprafața utilă, sau introdusă manual dacă ai cota stabilită prin cadastru. Suma totală a cotelor pe bloc trebuie să fie 100% — sistemul validează.
- Multi-coproprietari V1 — un apartament poate avea mai mulți coproprietari, fiecare cu cotă parte în procente și date de contact separate (nume, telefon, email). Coproprietarii pot fi înregistrați fără cont pe platformă (ghost owner — util pentru succesiuni în procedură) sau cu invitație opțională către un cont propriu.
- Istoric proprietari per apartament — la fiecare transfer (vânzare, moștenire, donație), o linie nouă cu data, motivul, noul proprietar. Util pentru moștenitori și pentru controale.
- Chiriași și mandatari — apartamentele închiriate au chiriaș cu nume, telefon, email, cont opțional. Mandatarii (interni ai comitetului sau externi cu procură foto obligatorie) apar în picker Roluri ședință și în PV cu marker distinct.
- Unități asociate — un apartament poate avea garaj #G-12 + parcare #P-8 + boxă #B-3 legate. Vizibile împreună pe pagina apartamentului.
- Transfer ownership cu invitație — vinzi apartamentul? Completezi datele noului proprietar, sistemul îi trimite email cu link, el își creează cont, apartamentul îi aparține automat. 3 minute în total.
👫 Coproprietari — cont separat pentru fiecare, reprezentant ales la ședință
Un apartament poate avea orice număr de coproprietari — soț + soție, moștenitori (2-3-4 copii), asociați cu cotă indiviză, indiviziuni post-partaj. Fiecare coproprietar are:
- Cota parte proprie (ex: soț 50% + soție 50%, sau moștenitori 33% + 33% + 34%) — configurată la adăugare. Suma cotelor coproprietarilor unui apartament trebuie să fie 100%.
- Cont propriu opțional — dacă completezi email-ul și trimiți invitația, coproprietarul primește link de activare, își setează parola și devine utilizator distinct pe platformă.
- Vedere a apartamentului — cu cont propriu, coproprietarul vede lista de plată curentă și istorică a apartamentului, primește notificări proprii, primește anunțuri. Declararea indecșilor de contoare rămâne la proprietarul principal setat pe apartament (o singură declarare per apartament, indiferent de câți coproprietari sunt).
- La ședință: mai mulți coproprietari pot participa, unul singur votează — mai mulți coproprietari ai aceluiași apartament pot fi prezenți fizic la ședință. La check-in, secretarul (sau administratorul) marchează apartamentul ca prezent și selectează dintre coproprietarii prezenți pe cel care va vota — el devine reprezentantul apartamentului pentru această ședință. Ceilalți coproprietari participă la discuții și dezbateri, dar nu votează individual — apartamentul votează o singură dată, prin reprezentant, cu cota lui indiviză integrală. La ședința următoare poate fi ales alt reprezentant.
- Un singur vot ponderat per apartament — reprezentantul selectat exprimă „pentru", „împotrivă" sau „abținere" pentru cota totală a apartamentului. Modelul respectă Legea 196/2018 art. 46 care spune că voturile sunt exprimate „pe unitate de proprietate imobiliară", nu fracționat între coproprietari. Interpretarea finală pentru cazul concret (ce se întâmplă la dezacord între coproprietari) rămâne la asociație împreună cu consultantul juridic.
- Ghost owner — coproprietar înregistrat fără cont (util pentru succesiuni în procedură, moștenitori străini, cazuri complicate). Apare corect în evidență, dar operațiunile digitale trec prin administrator sau prin ceilalți coproprietari cu cont.
În fiecare lună, ambii văd lista de plată în dashboard-ul contului lor, ambii primesc anunțurile de la asociație pe email + push.
La AGA din 25 septembrie, ambii vin la ședință. Discută punctele de pe ordinea de zi cu vecinii, ambii participă activ. La check-in, secretarul marchează prezența ap. 12 și, din lista celor doi coproprietari prezenți, îl selectează pe Andrei ca reprezentantul care va vota (decizia lor comună, comunicată secretarului). Apartamentul 12 apare în lista de prezență cu cota indiviză integrală (6%). La votul pentru izolarea fațadei, Andrei apasă „pentru" în numele apartamentului — cota 6% se adaugă la totalul „pentru". Maria a participat la dezbatere, dar nu votează separat: apartamentul votează o singură dată, prin reprezentantul ales.
La AGA din decembrie, Andrei e plecat în delegație și doar Maria vine. Secretarul o marchează prezentă și o setează ca reprezentanta ap. 12 pentru această ședință. Apartamentul contribuie tot cu cota 6% totală, votul Mariei valorează cât ar fi valorat al lui Andrei. Zero dispute despre „cine reprezintă apartamentul de data asta" — decizia lor internă, sistemul o consemnează la check-in prin selectarea reprezentantului. Pentru cazurile de dezacord serios între coproprietari (ex: unul vrea izolare, celălalt nu), procedura corectă rămâne la interpretarea asociației cu consultantul juridic.
🔑 Chiriași — adăugare, informare, notificări, comunicări
Apartamentele închiriate se pot marca cu chiriaș ca ocupant curent. Chiriașul are nume, telefon, email și opțional cont propriu (adăugare din pagina apartamentului cu buton „📧 Creează cont aplicație + trimite invitație", rol chiriaș). Chiriașul cu cont vede apartamentul (read-only pentru datele de proprietate) și poate deschide sesizări (defecțiuni, probleme comune).
Ce primește chiriașul, ca să fie informat despre activitatea asociației:
- Anunțuri către membri și CEx — inclusiv informări curente (deratizare programată, verificare ascensor, restricții parcare) și anunțuri oficiale cu PDF semnat. Livrate pe email + notificare in-app + push (dacă a activat PWA). Consimțământ explicit necesar pentru anunțurile non-urgente (GDPR — chiriașul e terț față de proprietate; bifează „Primesc anunțuri generale de la asociație" în Setări → Notificări). Anunțurile marcate URGENT ajung direct la chiriaș fără consimțământ, considerat interes vital (întreruperi apă/gaz, evacuare, urgențe siguranță).
- Somații pentru restanțe — dacă chiriașul are cont pe platformă și e marcat ca ocupant curent al apartamentului, primește somațiile odată cu proprietarul (recipient_role „tenant" în registru, alături de recipient_role „owner"). Notă: obligația legală de plată a întreținerii rămâne, în principiu, la proprietar; contractul de închiriere reglementează cine plătește efectiv. Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
- Lista de plată — dacă a activat contul, chiriașul vede lista curentă în dashboard-ul lui (read-only). Util pentru cazurile în care contractul prevede că chiriașul achită direct întreținerea.
- Sesizări — chiriașul poate deschide sesizări (defecțiuni comune, probleme de bloc) direct din contul lui; nu trebuie să sune la administrator sau să apeleze proprietarul.
- Comunicări oficiale — orice comunicare formală trimisă către chiriaș direct (ex: reclamație zgomot, cerere colaborare pentru intervenție tehnică) ajunge pe email cu PDF probator; chiriașul poate răspunde direct din email (Reply cu quick actions dacă e prezent în categoria comunicării).
- Preferințe de canal — chiriașul poate seta ce vrea să primească pe email vs. doar in-app din Setări → Notificări. Frecvență email: instant / rezumat zilnic / rezumat săptămânal / off.
Rezultat: toți ocupanții unui apartament — proprietari, coproprietari (soț + soție), chiriași — sunt informați despre activitățile asociației pe canalul preferat, nu doar „proprietarul principal" din listă. Zero cazuri de „n-am știut că era ședință" sau „nimeni nu mi-a spus că se închide apa".
Când administratorul postează anunțul „Deratizare programată joi între 09:00-13:00 — evitați contactul cu materiile depuse în zonele comune", Ioana primește email + push notification pe telefon. Dl. Ionescu primește aceleași notificări ca proprietar. Ambii știu ce se întâmplă.
Când se închide apa pentru o urgență de pe scară (anunț URGENT), Ioana primește notificarea imediat, indiferent de consimțământ — considerat interes vital. Prevenire pagube efective, comunicare corectă.
Contoare și consum
🎯 Ce face concret
- Tipuri de contoare — apometre apă rece/caldă, contoare gaz, contoare căldură, contoare individuale electric.
- Declarare cu poză opțională — proprietarul intră în aplicație, vede ultima citire, introduce noua valoare, opțional atașează foto al contorului ca dovadă.
- Validare automată — dacă declarația e mai mică decât citirea anterioară (imposibil) sau e cu mult peste medie (consum suspect), sistemul cere confirmare.
- Estimare automată dacă proprietarul nu declară până la o anumită zi — pe baza mediei ultimelor 3 luni, cu marcaj „ESTIMAT" în lista de plată.
- Pauschal apometru — sumă fixă lunară aplicată automat pentru apartamentele cu apometre neverificate metrologic (conform RegOI + Legea 196/2018). Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
- Grafice consum — proprietarul vede consumul lui pe 12 luni (detectează creșteri anormale = scurgeri). Administratorul vede consum bloc-total vs sumă declarații (detectează pierderi).
- Alertă metrologie — sistem reține data ultimei verificări metrologice și trimite alertă cu 90 zile înainte de expirare (verificare obligatorie la 5 ani).
Contabilitate + fonduri v2 + facturi + salarizare + adeverințe
🎯 Registru jurnal + audit
- Registru jurnal complet — toate intrările (cote încasate, dobânzi bancare) și ieșirile (facturi furnizori, salarii, taxe) pe categorii.
- Bilanț activ-pasiv automat — la cerere, generat instant cu reconciliere bancă vs registre.
- Audit log imutabil — fiecare modificare contabilă (cine, când, ce, motiv). Vizibil cenzorului. Nu se poate șterge.
- Export pentru contabil extern — PDF, CSV, Excel per categorie/perioadă. Util dacă vrei a doua opinie sau certificare de la un contabil autorizat.
- Categorii cheltuieli cu template standard — la onboarding, un click creează toate categoriile uzuale (apă, energie, salubritate, salarii, asigurare, etc.) cu reguli de distribuție corecte.
🏦 Fonduri v2 — avansuri etichetate, prognoză 6 luni, investiții planificate
- Fișe fonduri separate — fond reparații, fond rulment, cotizație specială (pentru lucrări votate AGA). Niciun fond nu poate fi „împrumutat" pentru alt scop fără înregistrare explicită cu motivare.
- Avansuri etichetate multi-lună — proprietarul plătește 6 luni odată (ex: 4.572 RON iulie–decembrie). O singură intrare cu perioada start-end și per_month_amount calculat automat (762 RON/lună). Se consumă automat luna cu luna pe unit_expenses.
- Prognoză sold 6 luni — grafic care combină soldul actual + intrările lunare estimate + ieșirile planificate. Vezi vizual când soldul se apropie de 0 sau devine negativ.
- Investiții planificate din fonduri — angajamente cu titlu, sumă totală, furnizor opțional și instalmente lunare. Intră în prognoză. Alertă cu 30 zile înainte de instalmente scadente.
- Registru cronologic per fond — buton „📖 Registru" pe pagina fondului deschide pagină separată cu toate mișcările (intrări, consumuri, ieșiri) în ordine cronologică. Reconciliere PDF fond.
🧾 Facturi + bonuri (v2.11)
- Perioadă facturată explicită — start + end (opțional) pentru facturi de consum (ex: Enel 15 iunie – 14 iulie primită pe 20 iulie). Perioada intră în repartizare pe lista corespunzătoare consumului; data facturii rămâne pentru contabilitate pe angajamente (OMFP 3103/2017).
- Tip document — Factură sau Bon fiscal, cu regim TVA distinct. Bonurile au număr unic (nu se acceptă bonuri duplicate).
- Metodă de plată extinsă — cash, card sau OP (ordin de plată). Utilitățile mari cu OP, furnizorii mici cu card.
👷 Salarizare (Payroll v1.1) + Adeverințe HG 500/2011
- 4 tipuri de plată — salariu net (cont 421), avans salariu (cont 425), primă (bonus performanță/sărbători/vechime), contribuții ANAF (CAS + CASS + impozit + CAM).
- Luna de referință — la ce lună se referă plata (salariul lunii mai plătit pe 5 iunie → referință mai). Folosit la repartizarea pe lista de întreținere și în rapoarte lunare.
- Canale + operații atomice — cash, card sau OP. Fiecare plată creează intrare reciprocă automat în registrul de casă sau bancar. Dacă intrarea reciprocă eșuează, plata nu se salvează — fără orfani.
- Adeverințe salariat PDF — conforme HG 500/2011 art. 34 + Codul Muncii art. 34 alin. (5). Detecție automată gen din CNP pentru formularea corectă („salariata / salariatul"). Câmpuri editabile: număr, dată, zile absență, concediu fără plată. Diacritice tratate corect. Interpretarea finală rămâne la asociație împreună cu consultantul juridic sau contabilul autorizat.
📤 e-Factura ANAF
Sincronizare bidirecțională cu SPV ANAF pentru facturi emise și primite (necesită OAuth cu contul ANAF al asociației). Modulul e în dezvoltare — fără calendar de livrare.
Liste de plată + penalități transparente (art. 78)
🎯 Ce face concret
- Coloane configurabile per asociație (v2.5) — alegi un șablon prefabricat (Simplificat: 5 coloane bloc mic / Extins: 9 coloane bloc cu lift / Full: 10 coloane ansamblu nou cu pază) sau pornești cu Personalizat. Maxim 10 coloane personalizate plus cele obligatorii (apartament, persoane, total, restanțe, penalizări, plătit). Coloanele cu istoric protejate de ștergere accidentală — datele baseline din PDF-urile vechi rămân în siguranță chiar dacă scoți coloana din header.
- Reguli de distribuție per categorie — apă pe cotă indiviză SAU pe consum apometru (decizi per categorie), salariu administrator egal pe apartament, asigurare pe suprafață, etc. Setezi regulile o dată, sistemul aplică lunar.
- Subtotal per apartament — fiecare proprietar vede defalcat: cota lunară, fond reparații, fond rulment, eventuale restanțe vechi cu penalități.
- PDF descărcabil — fiecare proprietar își descarcă lista lui în format PDF, semnată electronic de administrator, din pagina apartamentului.
- Lista comună la avizier (transparență) — totalurile pe categorii vizibile public, sumele individuale rămân private.
- Vizibilă în aplicație — imediat ce administratorul emite lista, proprietarii o văd la logare în dashboard-ul personal.
⚖️ Penalități transparente (v2, Legea 196 art. 78)
- Regula 1 — Curge de la data afișării listei pe avizier, nu de la scadență. Dacă lista a fost făcută pe 25 iunie dar afișată efectiv pe 3 iulie, ziua zero e 3 iulie.
- Regula 2 — Grace 30 zile (configurabil per asociație). În aceste 30 zile, restanța apare ca „în perioada de grație", vizibilă dar fără penalitate acumulată. Din ziua 31 începe rata configurată (default 0,2%/zi). Plafon la valoarea principalului.
- Regula 3 — Anti-anatocism. Penalitățile transferate ca sumă separată pe lista M+1 nu se penalizează ele însele. Regulă hard-coded (source_type='penalty_transferred' filtrat în cron).
- Regula 4 — Aprobare administrator. Preview cu calculul detaliat înainte de aplicare pe M+1. Admin poate exclude cazuri particulare (sociale, planuri eșalonare, dosare instanță). Doar după aprobare, penalitățile intră ca sumă separată. Cenzor semnătură opțională pentru avizier.
Ordinea plăților: plățile noi acoperă întâi luna cea mai recent afișată la avizier, surplus pe luni anterioare oldest-first. Regulă aceeași în JavaScript (preview) și SQL (RPC atomice) — nu există două calcule diferite. Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
Plăți online cu card
Modulul de plăți online cu card este în construcție. Până când va fi gata, plățile către asociație se gestionează prin transfer bancar tradițional (import CSV din extras + matching automat în sistem) sau cash la administrator.
🔜 Ce va aduce modulul când va fi gata
- Plată cu card direct din aplicație prin procesator românesc autorizat PCI-DSS (denumirea procesatorului va fi anunțată la activarea modulului).
- Tokenizare card PCI-DSS — cardul salvat o dată, plată cu un click la lună. Cardurile NU vor fi stocate pe serverele noastre, doar token-uri.
- Auto-pay recurent — plată automată pe ziua X a lunii. Fără să-și amintească cineva.
- Reconciliere automată în registre — la fiecare plată reușită, datoria scade automat, apartamentul e marcat „achitat luna X".
- Plată parțială — proprietarul poate plăti X din total, restul fiind înregistrat ca restanță.
✅ Ce există acum (workaround)
- Import CSV din extras bancar — toate băncile RO oferă export CSV. Încarci fișierul, sistemul detectează plățile, le potrivește la apartamentele care plăteau prin transfer.
- Import PDF cu AI (v2.11) — pentru extrasele bancare fără CSV disponibil, poți încărca PDF-ul, AI-ul (GPT-4o) extrage tranzacțiile.
- Marcare manuală plată — administratorul poate marca o plată ca încasată direct (util pentru cash sau plăți complexe).
- Generare confirmare plată — la marcare, sistemul trimite email proprietarului cu confirmare.
Ședințe CEX și AGA + refuz semnătură PV
🎯 Convocare, prezență, vot, PV
- Convocare cu ordine de zi — dată/oră, loc (fizic sau online), ordinea de zi cu topicuri și documente atașate.
- Tipuri de ședință — AG ordinară, AG extraordinară, CEX. Sistemul aplică automat regulile de quorum și vot specifice.
- Convocare trimisă în bloc — email + notificare in-app către toți membrii într-un click. Legea 196/2018 art. 47 alin. (3) cere preaviz de cel puțin 10 zile pentru prima convocare AG; datorezi să respecți acest interval la crearea convocării. Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
- Prezența marcată în timp real — la ședință, fiecare proprietar/membru CEX e marcat „prezent" (fizic sau online). Suma cotelor prezente afișată live.
- Topicuri pe ordinea de zi — fiecare punct e tratat separat. Tipuri: informare, dezbatere, vot (cu opțiunea de deschis vot pe loc).
- PV automat la închidere — generat cu lista prezenților, deciziile, rezultatele voturilor. Semnătură electronică pentru președinte și cenzor. Salvat în arhiva documente.
- Notificare post-ședință — toți proprietarii (prezenți și absenți) primesc email cu link la PV.
✋ Refuz semnătură PV (Legea 196 art. 47)
Un participant poate refuza semnarea PV-ului dintr-un motiv legitim (dezacord cu formularea, contestare decizie). Președintele sau secretarul ședinței consemnează refuzul printr-un buton dedicat + modală cu motivare. Efect vizual: badge roșu în lista de semnături + secțiune MENȚIUNI în PDF-ul PV cu textul„REFUZ SEMNĂTURĂ — {nume}, motiv: {motivare}". Refuzul se poate revoca ulterior dacă situația se clarifică. Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
💬 Chat efemer per ședință + anexă PV
La deschiderea ședinței se creează automat un canal chat efemer cu membri = participanții cu user_id + președintele + secretarul + creator ședinței. Util pentru discuții în timp real la o ședință online. La arhivarea PV-ului, tot conținutul chat-ului se snapshot-uiește (autor + timestamp + text + șterse marcate) și se atașează ca anexă la procesul verbal (Legea 196 art. 49). Canalul devine invizibil în sidebar, dar mesajele rămân în DB pentru audit.
Vot online ponderat
🎯 Tipuri de vot
🎯 Caracteristici avansate
- Vot secret sau nominal — alegi la deschidere dacă voturile sunt vizibile (cine ce a votat) sau anonime (doar agregatul final).
- Vot online cu deadline — pentru AGA prelungită multi-zile, proprietarii pot vota din aplicație până la deadline. Status live cu procentul votat vs. total, vizibil în timp real în UI.
- Vot offline (PWA) — în sala AGA cu semnal slab, telefonul stochează votul local și-l trimite când recapătă conexiune. Niciun vot pierdut.
- Rezultatul vizibil instant la închiderea votului. Salvat permanent în PV-ul ședinței.
- Detalii calcul vot — la PV se afișează: lista voturilor (anonim sau nominal), cota fiecărui votant, totalurile, calculul pragului, motivarea „trecut" / „nu trece". Auditabil 100%.
13 votează „pentru" (cote 31%), 5 votează „împotrivă" (cote 22%), 1 abținere (5%), 8 nu votează (cote 20%).
Rezultat: 31% pentru < 52% prag → VOTUL NU TRECE. Deși numeric 13-5 pare clar pentru, ponderat nu se atinge pragul legal. Sistemul afișează corect, decizia rămâne documentată, fără ambiguitate.
Sesizări online (tickets)
🎯 Ce face concret
- Categorii cu SLA — urgență (lift blocat, scurgere mare): 2h. Administrative (greșeală listă): 48h. Comunitate (zgomot): 7 zile.
- Atașamente — foto (până la 5), video, document. Util pentru defecte vizibile sau plângeri cu dovezi.
- Conversie în mentenanță — dacă un tichet are nevoie de lucrare, administratorul îl convertește într-un task mentenanță cu data programată și furnizor selectat din marketplace.
- SLA escaladare automată — dacă un tichet urgent nu primește răspuns în 2 ore, sistemul îl escaladează automat la președinte. Notificare email + in-app.
- Discuții publice (opțional) — sesizarea poate fi vizibilă pentru toți proprietarii (cu permisiune CEX). Util pentru decizii de comunitate (parcare, zgomot, animale).
- Cronologia completă — fiecare modificare e logată: cine, când, ce. Util pentru cazurile escaladate sau pentru audit ANAF.
Mentenanță programată
🎯 Ce face concret
- Task-uri repetitive — definești o dată („verificare PSI pe 15 martie anual"), sistemul reamintește automat.
- Alertă în avans — 30 zile / 7 zile / 1 zi înainte de deadline. Email + în aplicație.
- Atribuire furnizor — fiecare task are un furnizor desemnat (din marketplace) sau intern (administrator).
- Istoricul lucrărilor — pentru fiecare task recurent: când s-a făcut, de cine, cu ce cost. Util pentru raportare la AGA.
- Tipuri tipice gestionate — verificare PSI (anual), deratizare/dezinsecție (trimestrial), curățenie comună (zilnic), verificare metrologică contoare (5 ani), revizie ascensor (lunar), revizie centrală termică (anual).
Proiecte și licitații
🎯 Ciclul complet de proiect
- Propunere — un proprietar, CEX sau administrator propune o lucrare (ex: izolare termică, schimbare ascensor, reparație acoperiș).
- Vot AGP (Adunarea Generală a Proprietarilor) — dacă lucrarea depășește pragul legal, se votează cu 2/3 din cote. Linked la o ședință AGA.
- Licitație deschisă — dacă AGA aprobă, se deschide RFQ cu termen de depunere oferte. Furnizorii din marketplace primesc invitație automată.
- Vot CEX pe ofertantul câștigător — CEX-ul compară ofertele, votează (vot simplu), motivează decizia.
- Contract + execuție — contract generat automat cu termenii câștigătorului. Plăți etapizate: avans, plăți progresive, plată finală la recepție.
- Recepție parțială și finală — semnătură electronică pentru calitatea lucrării. Document arhivat.
- Garanție — perioadă de garanție urmărită automat, cu alertă cu 90/30/7/0 zile înainte de expirare.
Marketplace furnizori + RFQ
📋 Catalog de furnizori verificați
Catalogul e cross-asociație — același furnizor e vizibil pentru toate asociațiile din platformă. Date complete: denumire legală, CUI valid, IBAN, adresă sediu, categorii servicii, telefon și email contact. Fiecare furnizor are:
- Portofoliul de lucrări (cu descriere, an, valoare)
- Recenzii de la asociații care au lucrat cu el (verificate — doar de la cei care au plătit o factură)
- Rata medie de răspuns la RFQ
- Timpul mediu de execuție
📂 Categorii de servicii
📨 Cerere de Ofertă (RFQ) — flow în 6 pași
- Selectezi 3-5 furnizori din catalog. Filtru automat după categorie — pentru „reparație acoperiș" sugerează firme de construcții cu specializare acoperiș.
- Setezi detaliile cererii — descriere lucrare, documente sursă, termen depunere oferte (7-14 zile), criterii departajare (preț, garanție, termen).
- Email automat la fiecare furnizor cu link unic și securizat (token criptografic, valabil până la deadline). Furnizorul NU trebuie să-și facă cont.
- Furnizorul completează oferta într-un formular standardizat — preț total, defalcare materiale și manoperă, termen execuție, garanție, condiții plată, observații, documente atașate.
- Tu vezi toate ofertele într-un tabel comparabil — furnizor pe orizontală, criterii pe verticală. Diferențele evidente la prima privire. Export PDF pentru PV-ul CEX.
- Decizia rămâne documentată — alegi un furnizor cu motivare scrisă, sistemul generează propunerea pentru votul CEX. La aprobare, contractul se creează automat cu datele și termenii din ofertă.
Arhivă documente
🎯 Categorii de documente
- Documente oficiale — ROI (Regulament Ordine Interioară), ROF (Regulament Organizare și Funcționare), CIF, statut. Vizibile public proprietarilor.
- Procese verbale — toate PV-urile ședințelor istorice, indexate, căutabile după dată/topic/decizie.
- Contracte — furnizori, bancă, salariați. Alertă expirare cu reînnoire programată.
- Facturi — toate facturile primite, indexate după furnizor și perioadă. Link înapoi la categoria de cheltuială din contabilitate.
- Documente fiscale — declarații anuale, controale ANAF, raportări trimestriale.
/transparency/<slug-asociatie> arată documentele oficiale ale asociației tale tuturor, fără login. Util pentru proprietarii noi (cumpărători) care vor să verifice „cum stă asociația" înainte să cumpere un apartament. Tu controlezi ce e public.Notificări email + in-app + push mobil
🎯 Trei canale reale de livrare
- Notificări in-app — clopoțelul roșu cu „X neviste". Click vezi lista: ședință convocată, listă plată generată, plată confirmată, sesizare rezolvată, anunț nou.
- Email transacțional cu tracking citire — vezi cine a deschis email-ul de convocare AGA sau comunicarea oficială către terți. Util pentru documentare litigii. Frecvență configurabilă per proprietar: instant / rezumat zilnic / rezumat săptămânal / off.
- Push notifications native pe telefon — VAPID + Web Push. Funcțional pe iPhone (Safari 16.4+ în PWA standalone) și Android. Trimis la mențiuni chat, DM-uri, anunțuri (inclusiv URGENT), reply-uri terți la comunicări oficiale. Activare per dispozitiv din Setări → Notificări.
🎯 Preferințe granulare
- Fiecare proprietar alege ce primește pe email vs. doar in-app.
- Push activat separat per dispozitiv (permis pe telefonul personal, dezactivat pe cel de birou).
- Anunțurile marcate „URGENT" ridică prioritatea push și prefixează [URGENT] în subject email — respectate preferințele de canal.
Aplicația mobilă PWA cu push
🎯 Avantaje PWA vs aplicație nativă
- Instalare în 3 secunde — deschizi hoa-manager.ro în Safari/Chrome, „Add to Home Screen", iconiță pe ecran. Fără Apple ID, fără Google Play.
- Update instant — când lansăm versiune nouă, proprietarii o au imediat la deschidere. Fără „Update available, restart app".
- Notificări push reale (VAPID) — infrastructură web-push generică cu Service Worker handler push. Funcțional inclusiv pe iOS 16.4+ Safari standalone mode. Consumat de chat (mențiuni + DM), marketplace chat (mesaje noi), anunțuri (inclusiv URGENT), reply terți la comunicări oficiale.
- Vot offline cu sincronizare automată — esențial pentru AGA cu semnal slab. Votul se salvează local (IndexedDB), se trimite când recapătă conexiune. Niciun vot pierdut.
- Shortcuts — long-press iconiță scoate Apartament / Vot / Sesizare / Plată.
- Touch targets 44×44 — butoane dimensionate pentru deget. Standard Apple HIG + Material Design.
- Service Worker cu offline fallback — cache inteligent, pagini accesibile read-only chiar offline. Fallback page dedicat pentru rutele care nu sunt cached.
Comunicări oficiale + somații + reply terți
📋 Cinci categorii predefinite cu temei juridic distinct
- Furnizor — notificare formală pentru întârzieri obligații (punere în întârziere conform Cod Civil art. 1521-1525).
- Autoritate publică — sesizări către primărie, ITM, Garda de Mediu, ANPC. Temei: Codul administrativ + Legea 544/2001.
- Terț juridic — comunicări cu avocat, executor judecătoresc, instanță.
- Proprietar (daune) — pentru un proprietar care a cauzat un prejudiciu asociației (țeavă spartă, deteriorări zone comune). Temei: Cod Civil art. 1349-1357.
- Altul — comunicare formală generică, fără temei juridic predefinit.
💰 Somații pentru debitori (Art. 78, Debt Notifications V3)
Pentru proprietarii restanțieri există un flow separat: somațiile se calculează automat din unit_baseline_snapshot (5 categorii de restanțe) minus payment_allocations post-baseline. Rezultatul e verificabil E2E (validat pe apartamente reale), nu o estimare aproximativă. Se generează:
- PDF probator cu detaliile per categorie și zilele de întârziere
- Email transacțional către proprietar + copie președinte + administrator
- Notificare in-app pentru proprietar
- Intrare în registru cu retenție legală
Interpretarea finală (dacă somația este pas premergător acțiunii în instanță, care e procedura corectă pentru cazul concret) rămâne la asociație împreună cu consultantul juridic.
🤖 Asistent AI pentru rescrierea textului
Scrii ce s-a întâmplat în cuvintele tale obișnuite. Apeși butonul „Rescrie cu AI". Asistentul transformă în 5 secunde textul într-un limbaj formal-juridic, păstrând faptele și sumele exact așa cum le-ai scris. Tu rămâi în control — poți edita textul după rescriere, poți respinge varianta și păstra textul tău, poți rescrie de mai multe ori.
Cost: 2 rescrieri gratis pe lună incluse. După aceea 1 €/rescriere, facturat lunar cumulat.
📨 Reply terți cu confirmare de primire răspuns (Faza 1 + 2a)
Terții (furnizori, autorități, proprietari cu daune) pot răspunde direct la email fără să-și facă cont pe platformă. Reply-ul intră ca thread vizibil în UI, alături de comunicarea originală. Președintele și administratorul primesc broadcast la fiecare reply — nu se pierde nimic în inbox-uri personale.
- Somații debitori — quick actions în email pentru proprietar: „am achitat", „voi plăti", „contest". Click → confirmare în thread + notificare admin.
- Convocatoare AGA — quick actions pentru destinatar: „confirm participare", „nu pot participa", „trimit procură". Ultima acțiune deschide wizard procură.
- Confirmare primire — dacă providerul de email semnalează livrarea sau citirea, statusul apare în registru.
🎯 Cine poate emite
Doar administratorul, președintele și vicepreședintele. Cenzorul vede registrul (read-only) pentru audit. Restul rolurilor nu au acces.
Chat asociație (canale + DM + push)
💬 Trei tipuri de conversație
- #General — canal deschis tuturor membrilor asociației. Aici merg întrebările curente, anunțuri de tip „azi vine echipa de deratizare", discuții comunitare.
- #Management — canal restricționat pentru administrator + comitet executiv + cenzor. Aici se discută treburile de conducere care nu trebuie să ajungă în feed-ul tuturor. Cenzorul face parte din grupul de management și are acces complet (poate citi și scrie).
- Mesaje directe (DM) — 1-on-1 între oricare doi membri. Fără intermediari, fără vecini care citesc pe deasupra.
Regulile de acces la canale se aplică strict pe backend prin verificare de membership, nu doar în interfață.
🔔 Push notifications reale
- Primești push la orice @mențiune (când cineva scrie „@Iulian" în canal)
- Primești push la orice mesaj direct primit
- Nu primești push la mesaje în canale în care nu ești menționat — evităm zgomotul
- Push-ul se activează / dezactivează per dispozitiv din Setări → Notificări
- Funcționează pe iPhone (iOS Safari PWA) și Android
✨ UX rafinat (v2.1 design)
- Avatare colorate cu inițiale — 8 culori distincte generate din nume, ca să distingi rapid autorii
- Grupare mesaje pe 5 minute — 3 mesaje una după alta = bloc single, mai puțin zgomot vizual
- Day separator — „Astăzi", „Ieri", „luni" — știi pe unde ești în conversație
- Reply — răspunzi la un mesaj specific, cu citat vizibil
- Emoji picker integrat, fără dependențe externe
- Typing indicator — vezi când altcineva scrie
- Sidebar canale bogat — preview la ultimul mesaj, timp relativ, badge cu numărul de necitite
- Mobile drawer — pe telefon, sidebar-ul se deschide/închide cu gesture natural
- Scroll-to-bottom flotant cu counter, când te-ai uitat în sus și au apărut mesaje noi
- Skeleton shimmer la load — nu vezi ecran alb
🛡️ Moderare
Orice membru poate raporta un mesaj abuziv printr-un modal simplu (categorie + descriere opțională). Raportul ajunge la administrator + comitet, care pot lua acțiuni:
- Mute pe canal cu durată (1h / 24h / 7 zile)
- Ban — restricționare temporară de acces la chat
- Ștergere mesaj cu motivare (payload rămâne pentru audit — soft delete)
Rolul fiecărui membru (administrator, președinte, cenzor, membru CEx, proprietar) e vizibil în lista de membri a canalului și în picker-ul de mesaje directe — știi cu cine vorbești înainte să deschizi conversația. Nu poți impersona un rol pe care nu-l ai.
Marketplace apartamente între vecini + schiță 2D
🏘️ Anunțuri cross-asociație
Meniul „🏘 Anunțuri apartamente" arată listings-urile publicate de proprietari din toată platforma. Tipuri: Vânzare, Închiriere, Schimb. Filtrare după tip și scope (Toate asociațiile / Asociația mea / Anunțurile mele) + căutare liberă după text.
🔒 Ownership verificat înainte de publicare
Doar tu ca proprietar direct sau ca coproprietar înregistrat în tabelul de proprietaripoți publica un anunț pentru un apartament. Sistemul verifică ownership-ul înainte de a accepta publicarea — cumpărătorii știu că discută cu proprietari reali, nu cu intermediari.
✏️ Editor schiță 2D interactiv
Editorul lucrează cu schița apartamentului: trasezi conturul camerelor cu grid de 10 cm (0.1 m), setezi dimensiuni reale, apoi tragi 21 stickere mobilier hand-drawn (canapea, pat, masă, frigider, mașină de spălat, TV, dulap, etc.), toate în stil sketchbook cu hașuri și font handwriting, pe fundal de papyrus. Fiecare sticker se rotește la 90° și se redimensionează. La postarea anunțului, bifezi „📐 Atașează schița 2D la anunț" ca să apară în listing.
💬 Chat 1:1 privat cu cumpărătorul
- Pe pagina anunțului există panoul „💬 Trimite mesaj proprietarului" care deschide chat 1:1 realtime
- Cu atașamente (poze suplimentare, PDF-uri acte)
- Blocare — dacă un contact e nepotrivit, îl blochezi cu un click
- Raportare — mesajele abuzive ajung la moderatorii platformei
- Contact phone opțional afișat cu link
tel:, dar chat-ul rămâne canalul principal (istoric în platformă) - Chat-ul rămâne activ cât anunțul e activ, apoi devine read-only
Detalii tehnice: până la 20 poze/anunț, max 5 MB fiecare. Anunțul e vizibil pentru toți membrii platformei care caută în zona ta.
Anunțuri către membri și CEx
📢 Două tipuri de anunț
- Anunț simplu — subject + text, opțional marcat „URGENT". Gata în sub un minut, pentru informări curente (întrerupere apă, ședință, informare generală).
- Anunț oficial — generează PDF cu semnătură pe ecran, număr de registru și retenție legală (5 ani, conform Legii 196/2018 art. 105), pentru comunicări cu valoare de document. Interpretarea finală rămâne la asociație împreună cu consultantul juridic.
📬 Livrare multi-canal simultan
Când emiți anunțul, fiecare destinatar primește simultan:
- Notificare push pe telefon (dacă a activat PWA-ul)
- Email transacțional cu textul complet (și PDF-ul atașat, la anunțurile oficiale)
- Notificare in-app vizibilă la următoarea logare
Nu trebuie ales un singur canal — toate trei pleacă automat. Toggle-ul URGENT ridică prioritatea push și adaugă prefixul [URGENT] în subiectul email-ului, ca destinatarul să știe din prima secundă că trebuie citit acum.
🎯 Categorii + destinatari
- Categorii predefinite: Urgență, Mentenanță, Ședință, Informare, Alt tip.
- Anunț către membri: livrare către toți proprietarii asociației (previzualizare live a listei).
- Anunț către CEx: livrare strict către membrii Comitetului Executiv (președinte, vicepreședinte, membru comitet, cenzor, administrator).
Acorduri Membri (GDPR)
📝 Ce sunt acordurile
Consimțăminte colectate de la proprietari cu semnătură electronică. Utile pentru:
- GDPR — foto zone comune, CCTV, prelucrare date sensibile
- Lucrări care necesită acord explicit al proprietarilor din vecinătate
- Documente probatorii — retenție 10 ani conform Cod Civil art. 2518
Interpretarea finală (dacă un consimțământ concret e valabil pentru situația specifică) rămâne la asociație împreună cu consultantul juridic.
🎯 4 șabloane sistem seed (editabile)
- Acord procesare imagini CCTV — instalare camere supraveghere zone comune
- Acord publicare fotografii evenimente — foto la ședințe, activități comune, avizier
- Acord lucrări intervenție în unitate — pentru intervenții tehnice în apartamentul proprietarului (verificări comune, intervenții urgente)
- Acord generic — template neutru pentru cazuri particulare
Administratorul poate crea drafts noi, editată textul pentru cazurile particulare. Placeholder guard:nu poți trimite dacă rămân {{placeholder}} neînlocuite în text.
✍️ Signing E2E
- Trimitere pe email cu link unic per proprietar (token semnat)
- Formular CNP cu suport cetățean străin (număr identificare alternativ)
- Semnătură pe canvas cu regenerare până ești mulțumit
- Colectare offline pentru proprietarii fără email — admin marchează manual ca semnat cu procură foto
- PDF probator generat automat cu semnătura embedded și timestamp
- Retenție 10 ani conform Cod Civil art. 2518
🧑💼 Admin ops
- Close — închide colectarea când ai suficiente semnături
- Withdrawn — retrage acordul (GDPR Art. 7(3), procesat în 48h)
- Offline — marchează proprietar ca semnat pe hârtie
- Regenerate PDF — reface documentul dacă a fost editat șablonul
🏛️ Despre arhitectură — multi-asociație, multi-utilizator, multi-bloc
🏘️ Multi-asociație — cum funcționează izolarea
Toate asociațiile partajează aceeași infrastructură (servere, bază de date), deci costul per asociație e mic și platforma se îmbunătățește pentru toți concomitent. Datele asociației tale sunt invizibile pentru alte asociații. Tehnic, fiecare query la baza de date filtrează automat după company_id prin Row-Level Security (RLS) la nivel PostgreSQL. Nici măcar un bug grav în cod nu poate expune date între asociații — protecția e sub aplicație.
👥 Multi-utilizator — cele 9 roluri
Al 9-lea rol este platform_admin (rezervat echipei HOA Manager, pentru suport tehnic; nu are acces la datele asociației dincolo de operațiuni administrative pe cererea explicită a asociației).
Dual-view pentru rolurile management cu apartament propriu (președinte, vicepreședinte, cenzor, membru comitet): un buton de comutare „Management view ⇄ Personal view" care schimbă ce vezi între dashboard-ul administrativ și pagina apartamentului tău. Util pentru oamenii care sunt și administratori, și proprietari în același bloc.
🏢 Multi-bloc — structuri complexe
O asociație poate avea 1, 2, 4, 10+ blocuri sub același CUI. Exemple reale: „Asociația Aleea Trandafirilor 12-18" = 4 blocuri. Sistemul tratează corect:
- Fiecare apartament e legat de o locație (bloc/scară). Listele lunare se generează per locație sau pe asociația întreagă.
- Anumite roluri pot fi restricționate la un singur bloc — „membru comitet bloc A1" vede doar A1.
- Contabilitatea poate fi unificată (un singur fond pentru toată asociația) sau separată (un fond per bloc). Decizia la setup.
- Ședințele AGA sunt comune (Legea o cere), dar CEX-ul poate avea sub-comitete per bloc dacă structura asociației o cere.
🔒 Despre securitate — claim-uri vs realitate
Datele unei asociații sunt sensibile: liste de plată cu sume, IBAN-uri, transferuri de proprietate, uneori CNP-uri ale proprietarilor. Protejarea lor e non-negociabilă. Mai jos, fiecare claim cu status real (verifică, nu te luăm pe ocolite):
19 module. 9 roluri. Acum încearcă-le în practică.
Demo-ul nu e o prezentare slide. E platforma reală cu date mock. Te conectezi cu un click și vezi exact ce vede un administrator, un proprietar, un cenzor, un președinte. Fără cont, fără card.