Pe perete sunt douăsprezece ecrane. Fiecare ține un proiect: ce problemă rezolvă, ce am decis în timpul construcției, cu ce e făcut pe dinăuntru și cât a durat. Le poți deschide pe rând.
Toate douăsprezece sunt demonstrații, nu lucrări de client. Focus9 Lab e un studio nou și spunem asta direct, de la început. Sunt construcții care funcționează, făcute ca să arate ce putem livra; nu poartă nume de firme, nu au recenzii și nu au atașate procente de creștere pe care nu le-a măsurat nimeni. Când vor exista primele livrări către clienți, vor intra aici cu numele lor și cu cifre reale.
Cabinet stomatologic — site cu programare online
Site de prezentare pentru un cabinet cu trei scaune, cu programare în trei pași: serviciu, medic, interval. Fără cont, fără parolă, fără telefon.
Problema. Programările intră doar telefonic, iar recepția răspunde între pacienți. Cererile de seara și de weekend se pierd, pentru că nu are cine să le preia.
- Programarea are trei pași și nici un cont de creat. Pacientul lasă un nume și un număr de telefon, atât.
- Orarul și lista de servicii stau într-un fișier de conținut, ca recepția să le schimbe singură, fără să atingă codul.
- Fiecare programare trimite două emailuri — unul pacientului, unul cabinetului — cu fișier de calendar atașat.
- Paginile sunt generate la build și servite ca fișiere statice. Nu există server de întreținut, deci nu există server care să cadă vineri seara.
next · ts · tailwind · postgres · node
Demonstrație de capacitate, construită de noi ca să arătăm cum facem un site. Nu e o lucrare livrată unui client, nu are contract în spate și nu are rezultate măsurate.
Restaurant — meniu și comandă online
Meniu care se încarcă instant pe telefon și comandă cu plata pe loc, pentru ridicare sau livrare în oraș. Bucătăria vede comenzile pe o tabletă.
Problema. Meniul era un PDF pe care nimeni nu-l putea citi pe telefon, iar comenzile veneau pe trei canale: telefon, mesaje pe rețele și strigate în bucătărie.
- Meniul e conținut structurat, nu imagine. Se caută, se filtrează după alergeni și se schimbă prețul dintr-un singur loc.
- Plata se face la comandă, cu card. Bucătăria nu mai pregătește comenzi pe care nu le ridică nimeni.
- Ecranul din bucătărie e o pagină simplă, cu comenzi mari și un singur buton: gata. Merge pe orice tabletă veche.
- Când bucătăria e plină, un comutator oprește comenzile noi și afișează ora la care se redeschide.
next · ts · tailwind · stripe · postgres
Demonstrație de capacitate, construită de noi ca să arătăm cum facem un magazin online. Nu e o lucrare livrată unui client, nu a vândut nimic real și nu are cifre de vânzări în spate.
Pensiune — sistem de rezervări directe
Calendar de disponibilitate, preț pe sezon și rezervare cu avans, pe site-ul propriu. Un singur calendar, sincronizat cu platformele de cazare.
Problema. Toate rezervările veneau prin platforme care iau comision, iar calendarele nu erau sincronizate. Din când în când, aceeași cameră era vândută de două ori.
- Un singur calendar e sursa adevărului. Platformele externe citesc din el și scriu în el prin iCal, la fiecare cincisprezece minute.
- Rezervarea blochează camera pentru cincisprezece minute cât se face plata, apoi eliberează automat dacă plata nu vine.
- Prețurile se pun pe sezoane și pe zile ale săptămânii, dintr-un panou pe care îl folosește proprietarul de pe telefon.
- Se ia doar avansul, restul la fața locului. Politica de anulare e scrisă în același ecran în care se plătește, nu într-o pagină separată.
next · ts · node · postgres · stripe · docker
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o platformă. Nu e o lucrare livrată unui client, nu rulează la nimeni în producție și nu are rezultate măsurate.
Atelier de bijuterii — magazin online
Magazin cu produse unicat și pe stoc de o bucată, cu gravură la comandă și plată cu card. Cumpărare din trei ecrane, fără cont obligatoriu.
Problema. Vânzarea se făcea prin mesaje private: fiecare comandă cerea zece replici ca să se lămurească mărimea, gravura și livrarea.
- Stocul de o bucată e tratat ca atare: produsul se rezervă în coș, ca doi cumpărători să nu plătească același obiect.
- Gravura e o opțiune pe produs, cu numărul de caractere limitat și cu previzualizare, nu un câmp liber la final.
- Cumpărarea merge fără cont. Contul se propune după plată, ca să-ți vezi comenzile — nu înainte, ca să te oprească.
- Fotografiile se taie și se servesc în trei mărimi și în format modern, ca pagina să se încarce și pe internet slab.
next · ts · tailwind · stripe · postgres
Demonstrație de capacitate, construită de noi ca să arătăm cum facem un magazin online. Nu e o lucrare livrată unui client, nu a vândut nimic real și nu are cifre de vânzări în spate.
Sală de fitness — aplicație iOS și Android
Aplicație de membru: abonamentul în telefon, intrare cu cod QR, rezervare la clase și anulare cu o apăsare. O singură bază de cod pentru ambele magazine.
Problema. Locurile la clase se țineau într-un caiet la recepție. Cine anula nu anunța, locul rămânea gol și lista de așteptare nu afla niciodată.
- O singură bază de cod pentru iOS și Android, ca o modificare să apară în ambele magazine în aceeași săptămână.
- Codul QR de intrare se generează local și merge fără internet. În vestiar semnalul e prost oricum.
- Lista de așteptare e automată: cine anulează cu peste două ore înainte eliberează locul, iar următorul primește notificare.
- Abonamentul se reînnoiește singur, dar butonul de oprire e în primul ecran de setări, nu ascuns după patru pași.
flutter · supabase · postgres · stripe
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o aplicație mobilă. Nu e o lucrare livrată unui client, nu e publicată în magazinele de aplicații și nu are utilizatori reali.
Firmă de curierat — aplicație de livrare pentru șoferi
Aplicație pentru șofer: ruta zilei, scanare de colet, semnătură sau poză la predare. Funcționează și fără semnal, se sincronizează când revine.
Problema. Dovada livrării era un telefon dat dispecerului. La reclamații nu exista nimic scris, iar rutele se făceau seara, pe hârtie.
- Aplicația e făcută pentru offline: toate opririle zilei se descarcă dimineața și se lucrează local, fără semnal.
- La predare se ia semnătură pe ecran sau poză, cu ora și poziția. Dovada pleacă la sincronizare, nu se pierde.
- Ecranul de lucru are butoane mari și merge cu o singură mână. Șoferul îl folosește în picioare, în ploaie.
- Scanarea coletului folosește camera telefonului, ca firma să nu cumpere scanere separate pentru fiecare mașină.
flutter · swift · node · postgres · docker
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o aplicație mobilă. Nu e o lucrare livrată unui client, nu e publicată în magazinele de aplicații și nu are utilizatori reali.
Fabrică de mobilă — panou intern de producție
Platformă internă: comenzile, stadiul fiecăreia pe ateliere, stocul de materiale și încărcarea utilajelor. Un ecran mare în hală, un panou în birou.
Problema. Stadiul comenzilor se ținea într-un fișier de calcul trimis pe email. Existau patru versiuni ale lui și nimeni nu știa care e cea bună.
- O comandă trece prin etape fixe, iar trecerea se apasă acolo unde se întâmplă, nu se raportează seara la birou.
- Ecranul din hală e proiectat de la trei metri: text mare, patru culori, fără meniuri. Se uită la el o secundă, în trecere.
- Drepturile sunt pe rol: cine lucrează la mașină vede și mută comenzi, cine e în birou vede și prețuri.
- Datele vechi nu se șterg niciodată. Fiecare mutare rămâne cu cine și când, ca să se poată reconstitui o comandă contestată.
react · ts · node · postgres · docker · aws
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o platformă. Nu e o lucrare livrată unui client, nu rulează la nimeni în producție și nu are rezultate măsurate.
Agenție imobiliară — CRM pentru agenți
CRM făcut pentru o agenție, nu pentru toată lumea: proprietăți, clienți, vizionări și comisioane, cu o singură listă de urmăriri pe zi pentru fiecare agent.
Problema. Fiecare agent își ținea clienții în telefonul lui. Când pleca un agent, plecau și clienții, iar doi agenți sunau uneori aceeași persoană.
- Ecranul de start al agentului e o singură listă: pe cine suni azi și de ce. Restul CRM-ului e la un clic distanță.
- O proprietate și un client se leagă printr-o vizionare. Nu există notiță care să nu fie agățată de ceva.
- Datele sunt ale agenției, nu ale agentului. La plecare, portofoliul se transferă într-un singur pas, cu tot istoricul.
- Se scoate un raport de comision pe agent și pe lună, ca discuția de salariu să nu mai fie o discuție de memorie.
react · ts · node · postgres · docker
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o platformă. Nu e o lucrare livrată unui client, nu rulează la nimeni în producție și nu are rezultate măsurate.
Producători locali — marketplace cu mai mulți vânzători
Un magazin în care vând douăzeci de producători, fiecare cu panoul lui. Un singur coș pentru cumpărător, plăți împărțite automat la vânzători.
Problema. Producătorii dintr-o zonă vindeau fiecare de pe pagina lui de rețea socială. Cumpărătorul trebuia să plătească de cinci ori ca să ia cinci lucruri.
- Un singur coș, chiar dacă produsele vin de la cinci producători. Plata se împarte automat, la fiecare cât i se cuvine.
- Fiecare producător are panoul lui: produse, stoc, comenzi, încasări. Nimeni nu vede vânzările altcuiva.
- Produsele noi intră după o verificare scurtă, ca să nu ajungă pe prima pagină o poză neclară și un preț greșit.
- Livrarea se calculează pe producător, nu pe coș, pentru că lucrurile pleacă din cinci locuri diferite.
next · ts · node · postgres · stripe · aws
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o platformă. Nu e o lucrare livrată unui client, nu rulează la nimeni în producție și nu are rezultate măsurate.
Școală de limbi străine — platformă de cursuri online
Lecții cu video și exerciții, progres salvat pe cursant, teste la final de modul și certificat. Plata pe curs sau abonament lunar.
Problema. Materialele stăteau într-un folder partajat, iar profesorul nu avea de unde ști cine a deschis lecția și cine a rămas în urmă.
- Videoul se ține la un serviciu specializat, nu pe serverul propriu. Se încarcă repede și nu se poate descărca cu un clic dreapta.
- Progresul se salvează la fiecare lecție, ca elevul să reia de unde a rămas, de pe alt dispozitiv.
- Profesorul are o listă cu cine a rămas în urmă și de cât timp. E singurul raport pe care l-am construit, pentru că e singurul folosit.
- Certificatul se generează ca PDF, cu un cod de verificare pe o pagină publică. Cine îl primește poate dovedi că e real.
next · ts · tailwind · supabase · stripe
Demonstrație de capacitate, construită de noi ca să arătăm cum facem o platformă. Nu e o lucrare livrată unui client, nu rulează la nimeni în producție și nu are rezultate măsurate.
Tâmplărie PVC — pagină de campanie cu configurator
O singură pagină, făcută pentru reclamă plătită: alegi tipul de fereastră, dimensiunea și geamul, vezi fereastra desenată în 3D și primești un preț estimativ.
Problema. Reclama aducea oameni pe o pagină cu formular, iar prima întrebare a tuturor era «cât costă?». Răspunsul venea a doua zi, când majoritatea plecaseră.
- Prețul se arată pe loc, ca interval, nu ca sumă exactă. E o estimare cinstită, nu o promisiune care se retrage la măsurători.
- Fereastra e desenată în 3D și se schimbă în timp real la fiecare opțiune. Omul vede ce cumpără înainte să lase telefonul.
- Configuratorul se încarcă separat de pagină. Textul și prețul apar imediat; partea grea vine după, ca să nu întârzie prima impresie.
- Formularul apare abia după ce ai o configurație. Ceri numărul de telefon după ce ai dat ceva, nu înainte.
react · ts · tailwind · three · gsap · vite
Demonstrație de capacitate, construită de noi ca să arătăm cum facem un site. Nu e o lucrare livrată unui client, nu are contract în spate și nu are rezultate măsurate.
Primărie — portal de informare și formulare
Site public construit pentru accesibilitate: anunțuri, documente căutabile și formulare care se depun online. Merge la tastatură și la cititor de ecran.
Problema. Documentele erau scanări în PDF, puse într-o listă fără căutare. Ca să afli programul unui ghișeu, sunai. Cu cititor de ecran, pagina era de necitit.
- Contrastul, mărimea textului și navigarea la tastatură nu sunt opțiuni, sunt punctul de plecare. Ținta e WCAG 2.1 AA pe tot site-ul.
- Anunțurile sunt text, nu poze cu text. Se caută, se citesc cu vocea și se copiază.
- Formularele se completează online și pleacă cu număr de înregistrare, iar cetățeanul primește pe email dovada depunerii.
- Pagina se încarcă și pe telefon vechi, pe internet slab. Fără fonturi grele, fără video de fundal, fără carusel.
next · ts · tailwind · postgres · node
Demonstrație de capacitate, construită de noi ca să arătăm cum facem un site. Nu e o lucrare livrată unui client, nu are contract în spate și nu are rezultate măsurate.