UniMarket është një treg me shumë shitës për Bangladeshin, në bengalisht dhe anglisht. E ndërtuam dyqanin, Qendrën e shitësit, panelin e administrimit dhe aplikacionin e instalueshëm si një projekt të vetëm TypeScript dhe e drejtojmë në serverin tonë. Ky është një udhëtim nëpër vendimet që kishin më shumë rëndësi dhe pse i morëm.

Teknologjia dhe pse
| Shtresa | Zgjedhja | Pse |
|---|---|---|
| Aplikacioni | Next.js 16, React 19 dhe TypeScript | Faqet e renderuara në server e mbajnë të vogël JavaScript-in e shfletuesit, dhe një gjuhë mbulon dyqanin, Qendrën e shitësit, administrimin dhe API-n. |
| Stilimi | Tailwind CSS 4 me tokena dizajni | CSS i vogël dhe tema e çelët dhe e errët nga të njëjtat tokena. |
| Të dhënat | MongoDB me instancën e vet | Dokumentet fleksibile u përshtaten produkteve me opsione të ndryshme, dhe një instancë e veçantë i lë të paprekura shërbimet e tjera në server. |
| Hyrja | Kode njëpërdorimshme, Google dhe Apple, Firebase Auth për kodet e telefonit | Blerësit në Bangladesh hyjnë me numër telefoni dhe një kod nuk ka fjalëkalim për t’u harruar. |
| Hostimi | VPS-ja jonë, nginx, Cloudflare dhe Let’s Encrypt | Kosto e parashikueshme dhe kontroll i plotë mbi kopjet rezervë, postën dhe kufijtë. |
Faqe të shpejta, edhe në bengalisht
Shumica e faqeve që sheh një vizitor janë publike, ndaj ndërtohen për t’u ruajtur në cache. Çdo gjë personale, si numri i shportës ose një emër i identifikuar, plotësohet veçmas dhe nuk e ngadalëson faqen. Imazhet konvertohen në formate moderne me madhësi të fiksuara kur ngarkohen.
Shkronjat ishin befasia. Një shkronjë ueb bengali është e madhe: ajo që provuam ishte rreth 200 KB. Në testin tonë na kushtoi mbi dhjetë pikë të rezultatit të performancës mobile Lighthouse. Prandaj teksti bengali përdor shkronjën që ndodhet tashmë në telefon ose kompjuter, dhe një shkronjë e vogël e hostuar vetë mbulon vetëm shkronjat latine dhe numrat. Lexuesit shohin shkronjën që lexojnë çdo ditë dhe nuk shkarkohet asgjë shtesë.
Në ndërtimin tonë lokal të prodhimit, Qasshmëria, Praktikat më të mira dhe SEO morën 100 në çdo faqe që testuam, dhe Performanca mobile ishte mes 93 dhe 98. Këto janë matjet tona në një ndërtim lokal, dhe shtimi i skripteve të palëve të treta më vonë do t’i ulte.
Dy gjuhë që janë vërtet dy gjuhë
Bengalishtja dhe anglishtja kanë secila adresën e vet, me lidhje hreflang mes tyre që motorët e kërkimit të shfaqin atë të duhurën. Çdo varg i ndërfaqes jeton në një fjalor të tipizuar dhe ndërtimi dështon nëse mungon një varg bengali, ndaj një faqe e përkthyer përgjysmë nuk mund të dalë. Çmimet përdorin shifra bengali në bengalisht dhe shifra latine në anglisht.
Një blerje, disa shitës
Një shportë mund të mbajë artikuj nga disa dyqane. Kur blerësi bën porosinë, blerja i llogarit sërish të gjitha çmimet nga baza e të dhënave në vend që t’i besojë shfletuesit, rezervon stokun në një hap atomik, e ndan porosinë në një dërgesë për çdo dyqan dhe ngarkon një tarifë dërgese për çdo dyqan. Dërgimi dy herë nuk krijon dy porosi, dhe anulimi e kthen stokun.
Paratë ruhen si poisha të plota, ku një taka është 100 poisha, ndaj asnjë shumë nuk rrumbullakohet kurrë nga një dhjetore.
E sigurt si parazgjedhje
- Shitësit mund të lexojnë vetëm porositë dhe produktet e veta, dhe stafi merr vetëm lejet e rolit të vet. Stafi hyn me fjalëkalim dhe kod autentifikuesi, dhe ndryshimet e tyre shkojnë në një regjistër auditimi.
- Serveri ueb kufizon kërkesat e hyrjes dhe të API-t, dhe aplikacioni shton kufijtë e vet për çdo përdorues.
- Ngarkimet kodohen sërish, gjë që heq të dhënat e fshehura të vendndodhjes nga fotot, dhe dokumentet e identitetit ruhen jashtë dosjes publike.
- Pas një rishikimi sigurie, rregulluam së pari dy gjetjet e rrëmbimit të llogarisë dhe pastaj gjetjet e mesme.
Email që mbërrin
UniMarket dërgon një email në çdo hap të porosisë, ndaj dorëzueshmëria është pjesë e produktit. Posta del nga serveri ynë i postës me nënshkrim DKIM, dhe domeni publikon regjistrime SPF dhe DMARC. Në testet tona emailet e porosive kaluan të tria kontrollet dhe arritën në kutinë hyrëse, jo në spam.
Publikim pa prishur skedat e hapura
Një publikim ndërton në server, kalon te versioni i ri dhe kontrollon që është i shëndetshëm. Një komandë e dytë kthen te versioni i mëparshëm. Çdo version ka ID-në e vet të publikimit, ndaj kur një blerës e lë një skedë të hapur gjatë një publikimi, faqja vëren se butonat e saj i përkasin një versioni të vjetër dhe ringarkohet vetë, në vend që të shfaqë një gabim.
Baza e të dhënave kopjohet çdo natë dhe ruhen 14 kopjet e fundit.
UniMarket është në akses të hershëm me një katalog demo. Tregu është aktiv dhe funksionon, dhe një domen unimarket.bd është planifikuar.
Faktet janë verifikuar nga ekipi i 22Softwares kundrejt aplikacionit aktiv UniMarket dhe udhëzuesit të tij të Qendrës së shitësit.