Izrada web aplikacija po mjeri vašeg posla.
SaaS proizvodi, portali za kupce, sistemi za rezervacije i naručivanje - softver u pregledaču na kojem firma zaista radi. Dizajniramo model podataka, pravimo backend, API i interfejs, puštamo sve u rad i ostajemo za ono što se pokaže tek kad stignu pravi korisnici.
- Jedan tim za bazu, API i interfejs - bez rupa pri predaji posla.
- Svaki klijent vidi samo svoje podatke - to garantuje baza, a ne nada.
- Promjene uživo: kad jedna osoba nešto promijeni, svi ostali to odmah vide.
- Tipizirano od početka do kraja: TypeScript, verzionisane migracije, dokumentovan API.
Gdje se krije pravi inženjering
Web aplikacija nije sajt s prijavom. Ona čuva podatke koji su bitni - narudžbe, fakture, dozvole, evidenciju izmjena - i mnogo ljudi ih mijenja u isto vrijeme. Najveći dio posla je tamo gdje niko ne pravi screenshot: u modelu podataka, u pravilima pristupa i u pitanju šta se dešava kad dvoje ljudi mijenja isti zapis.
Razvoj web aplikacija radimo na nezanimljiv, ali dugotrajan način: PostgreSQL kao jedini izvor istine, tipiziran API ispred njega, brz interfejs renderovan na serveru i pozadinski poslovi za sve na šta korisnik ne treba da čeka. API se zapiše prije koda, pa se vaša mobilna aplikacija, vaši partneri i vaše integracije oslanjaju na nešto stabilno.
Radimo nove proizvode od prve šeme, ali i preuzimamo programiranje web aplikacija koje je započeo neki drugi tim, kao i izradu web portala na postojećim sistemima - iz Ugljevika i Beča, na daljinu s timovima širom Evrope.
Kako radi
Po čemu se prepoznaje dobra web aplikacija
Tri stvari razlikuju web aplikaciju kojoj ljudi vjeruju od one koju zaobilaze. Evo ih na portalu za kupce jedne veleprodaje.
-
Kupac se prijavi i vidi svoje narudžbe, cijene i fakture - ničije tuđe. Vaši zaposleni vide sve. Pravilo živi u bazi, pa ga nijedan ekran ne može zaboraviti.
-
Kad magacin označi narudžbu kao poslatu, ekran kupca se osvježi iste sekunde. Bez dugmeta za osvježavanje, bez „jeste li dobili moj mejl?“.
-
Deset korisnika ili deset hiljada: stranice odgovaraju jednako brzo, jer se spori poslovi rade u pozadini, a dodatni serveri se sami pokreću kad nastane gužva.
U praksi
Ilustrativni scenariji - vrsta posla koji radimo, ne studije slučaja klijenata.
Interni alat postaje SaaS proizvod
- Problem
- Firma je za sebe napravila alat za zakazivanje, a druge firme iz iste branše žele da ga plaćaju. Kod svuda podrazumijeva jednog jedinog klijenta.
- Šta gradimo
- Multi-tenant kako treba: podaci svakog klijenta odvojeni u bazi, podešavanja po klijentu, samostalna registracija s naplatom karticom i originalna firma migrirana kao klijent broj jedan. Uz to admin konzola, da podrška nikad ne mora direktno u bazu.
- TypeScript
- PostgreSQL RLS
- Stripe
- SvelteKit
- Docker
Web portal za klijente na postojećem ERP-u
- Problem
- Klijenti zovu telefonom da pitaju za status narudžbe, fakture i rokove isporuke. Odgovori su u ERP-u, kojem nikad ne smiju dobiti pristup.
- Šta gradimo
- Web portal sa sopstvenom prijavom koji čita iz ERP-a preko uskog API-ja, kešira ono što se rijetko mijenja i svakom klijentu prikazuje samo njegove dokumente. Ponovne narudžbe idu kroz red čekanja, pa spor ERP nikad ne zamrzne portal.
- SvelteKit
- Node.js
- REST API
- Redis
- BullMQ
Javni API za partnere
- Problem
- Logistička firma želi da partneri iz svojih sistema rezervišu pošiljke i prate pakete, a danas sve ide preko mejla i internog alata koji nema API.
- Šta gradimo
- Verzionisan REST API sa OpenAPI specifikacijom, API ključevi po partneru s vlastitim ograničenjem broja zahtjeva, potpisani webhookovi za promjene statusa i sandbox okruženje. Klijentske biblioteke i referentna dokumentacija generišu se iz iste specifikacije, pa dokumentacija ne može odstupiti od stvarnog ponašanja.
- Go
- OpenAPI 3.1
- PostgreSQL
- Redis
- Prometheus + Grafana
Šta dobijate
- Model podataka i šema baze s verzionisanim migracijama koje se mogu vratiti
- Dokumentovan API (OpenAPI ili GraphQL) na koji se vaše druge aplikacije i partneri mogu osloniti
- Uloge i dozvole koje provodi sama baza, uz audit log ko je šta promijenio
- Promjene uživo tamo gdje ljudi rade zajedno, pozadinski poslovi za sve što je sporo
- Admin ekrani za vaš tim, da podrška nikad ne mora u bazu
- Registracija, naplata i pretplate za SaaS proizvode
- CI/CD i infrastruktura kao kod - staging i produkcija napravljeni na isti način
Tipičan stack
- TypeScript
- SvelteKit
- React / Next.js
- Node.js
- NestJS
- Go
- PostgreSQL
- Redis
- WebSockets
- OpenAPI
- Docker
- Playwright
- Stripe
Česta pitanja
Vašeg pitanja nema na listi? Pitajte nas direktno - odgovaramo u roku od dva radna dana.
Postavite pitanjeKoliko košta izrada web aplikacije?
Najviše zavisi od tri stvari: koliko uloga i tokova rada aplikacija ima, sa koliko spoljnih sistema razgovara i koliko postojećih podataka treba prenijeti. Pošaljite nam kratak opis; odgovaramo u roku od dva radna dana sa linkom za 30-minutni uvodni poziv, a zatim šaljemo pisani plan s procjenom za fiksno definisan obim, razloženom po funkcijama.
Koliko traje izrada web aplikacije?
Vrijeme prati obim. Radije rano isporučimo upotrebljivu prvu verziju nego jedno veliko lansiranje: posao je podijeljen u faze koje se završavaju nečim na stagingu što možete isprobati, obično svake jedne do dvije sedmice. Pisana procjena sadrži rokove po fazama.
Koje tehnologije koristite i zašto ne no-code?
Podrazumijevano TypeScript sa SvelteKitom ili Reactom, Node.js i PostgreSQL - poznato, brzo i lako je kasnije naći ljude za to. Prilagođavamo se postojećem .NET, PHP ili Python kodu kad to ima više smisla. No-code alati su dobri za prototipove; postaju skupi čim zatrebaju posebne dozvole, integracije ili mnogo korisnika.
Kako u SaaS proizvodu razdvajate podatke različitih klijenata?
Svaki red u bazi nosi oznaku klijenta kojem pripada, a sama baza filtrira svaki upit prema prijavljenom klijentu (row-level security) - uključujući i upit napisan na brzinu. Automatski testovi se prijave kao jedan klijent i pokušaju pročitati podatke drugog; ako to ikad uspije, build pada.
Možete li napraviti i API za našu mobilnu aplikaciju ili partnere?
Da - većina web aplikacija koje pravimo u svojoj srži ima dokumentovan API, a interfejs u pregledaču mu je samo prvi klijent. Mobilna aplikacija, integracija partnera ili vaše vlastite skripte koriste isti API, sa svojim ključevima i ograničenjima.
Imate proces koji je prerastao svoju Excel tabelu?
Recite nam šta aplikacija treba da radi i ko će je koristiti. Odgovaramo u roku od dva radna dana sa linkom za 30-minutni uvodni poziv, a zatim šaljemo pisani plan i procjenu za fiksno definisan obim.
Pokrenite projekat