Kalendoriaus rezervacijų platforma
Rezervacijos ant Vue 3 — laisvi laikai, užsakymai, laiškai ir Meet vaizdo nuorodos.
Dev-storyIššūkis
Rezervacijai reikia, kad visi — klientas, administratorius, teikėjas — iškart matytų tą patį pasiekiamumą, o nuomojami planuokliai reiškė dar vieną mokamą servisą ir svetimą duomenų bazę.
Ką darėme
Planavimo programa ant Vue 3 + webedge-db: gyvi pasiekiamumo langai ir rezervacijos, veikiantys kaip atskiras projektas mūsų webedge-db backende, su slaptažodžio autentifikacija ir patvirtinimo laiškais per mailer.webedge.dev.
Rezultatas
Klientai renkasi laisvus laikus, teikėjai tvarko pasiekiamumą, o patvirtinimai išsiunčiami automatiškai — ant mūsų pačių backendo, o ne nuomojamo planuoklio.
Dev-story straipsnis
Kaip buvo kuriamas projektas: Kalendoriaus rezervacijų platforma
Planavimo įrankiu galima pasitikėti tik tada, kai siūlomas laikas sutampa su tuo, kada šeimininkas iš tikrųjų dirba. Čia slotų variklis iš pradžių skaitė kiekvieno šeimininko darbo valandas "HH:MM" kaip UTC ir ignoravo jo nustatytą laiko juostą, todėl visiems ne UTC naudotojams buvo siūlomi neteisingi laikai, o vasaros/žiemos laiko perėjimai tyliai gadino rezervacijas. Šios klaidos taisymas, o vėliau viešo rezervavimo paviršiaus sutvirtinimas, ir sudarė didžiąją darbo dalį.
Skyriai
05
Moduliai
05
Stackas
Vue 3 + webedge-db
Kodėl projektas atsirado
Rezervacijai reikia, kad visi — klientas, administratorius, teikėjas — iškart matytų tą patį pasiekiamumą, o nuomojami planuokliai reiškė dar vieną mokamą servisą ir svetimą duomenų bazę.
Planavimo įrankiu galima pasitikėti tik tada, kai siūlomas laikas sutampa su tuo, kada šeimininkas iš tikrųjų dirba. Čia slotų variklis iš pradžių skaitė kiekvieno šeimininko darbo valandas "HH:MM" kaip UTC ir ignoravo jo nustatytą laiko juostą, todėl visiems ne UTC naudotojams buvo siūlomi neteisingi laikai, o vasaros/žiemos laiko perėjimai tyliai gadino rezervacijas. Šios klaidos taisymas, o vėliau viešo rezervavimo paviršiaus sutvirtinimas, ir sudarė didžiąją darbo dalį.
Ką sukūrėme
Planavimo programa ant Vue 3 + webedge-db: gyvi pasiekiamumo langai ir rezervacijos, veikiantys kaip atskiras projektas mūsų webedge-db backende, su slaptažodžio autentifikacija ir patvirtinimo laiškais per mailer.webedge.dev.
Pilna planavimo programa: šeimininkai apibrėžia įvykių tipus ir savaitės prieinamumą, svečiai renkasi laisvus laikus ir rezervuoja, o sistema siunčia el. patvirtinimus bei sugeneruotą vaizdo susitikimo nuorodą. Pradžioje ji veikė ant Fastify + MongoDB + Redis ir buvo visiškai perkelta ant mūsų savarankiškai talpinamo reaktyvaus backend'o, kad prieinamumas ir rezervacijos liktų gyvos be nuolatinio klausinėjimo, veikiant kaip atskiras nuomininkas bendrame webedge-db.
Pagrindiniai moduliai ir vartotojo kelias
Laiko juostas teisingai vertinantis slotų variklis: darbo valandos verčiamos į UTC ir atgal per Intl.DateTimeFormat, todėl vasaros/žiemos laikas tvarkomas teisingai, o iteruojama pagal šeimininko vietinę, ne UTC, dieną
Rezervavimo taisyklių sluoksnis: idempotencijos raktai, dublikatų apsauga, aktyvių rezervacijų limitai vienam svečiui, blokuotos datos, dienų perrašymai ir rolling/range periodo apribojimai, visi apskaičiuojami kaip užimtumo sluoksnis prieš rodant laikus
Sutvirtintas viešas HTTP paviršius: neautentifikuoti ICS atsisiuntimai ir gyvi kalendoriaus srautai, JSON slotų API, privalomas svečio el. pašto patvirtinimas prieš viešą rezervaciją, taip pat įvesties validacija, išvalytos klaidos ir dažnio limitai
Vaizdo susitikimų planavimas: rezervacija sugeneruoja susitikimo nuorodą ir gali būti nukreipiama tiesiai į Webedge Meet įvykio kūrimą su atsargine nuoroda gamyboje
Pasirenkamas CRM tiltas: rezervacijų sinchronizacija švariai praleidžiama, kai stack'e nėra CRM, užuot palikus kiekvieną rezervaciją įstrigusią laukime, o kai CRM yra — su užklausos laiko limitu ir ribotais bandymais
Architektūra ir technologiniai sprendimai
Sukurta su Vue 3, webedge-db, Scheduling.
Vue 3 + Vite + Tailwind priekyje, mūsų savarankiškai talpinamas reaktyvus backend'as schemai, realaus laiko užklausoms, autentifikacijai (slaptažodžio tiekėjas), suplanuotoms funkcijoms ir HTTP veiksmams; diegiama į statinį hostingą, backend'ą paleidžiant kaip projektą webedge-db viduje.
Rezultatas ir pamokos
Klientai renkasi laisvus laikus, teikėjai tvarko pasiekiamumą, o patvirtinimai išsiunčiami automatiškai — ant mūsų pačių backendo, o ne nuomojamo planuoklio.
Veikianti, savarankiškai talpinama planavimo programa, kurios prieinamumas pagaliau teisingas visose laiko juostose ir per vasaros/žiemos laiką, su viešu rezervavimo API, kuris validuoja įvestį, tikrina svečius ir riboja piktnaudžiavimą.
Susiję straipsniai
Toliau skaityti
Susijusios projektų istorijos
Šie projektai turi artimų technologinių arba produkto sprendimų, todėl padeda matyti, kaip tas pats principas veikia kitame kontekste.
Dev-storyGrožio rezervacijų prekyvietė
Grožio ir sveikatingumo rezervacijų platforma Lietuvai — salonų geopaieška ir įrašas.
Dev-storyCMS
Dinaminis CMS ant webedge-db — turinio tipai, medija, rolės ir vieša skaitymo API, maitinanti mūsų svetaines ir straipsnius.
Dev-storyFableVita
FableVita — DI fitneso treneris su lygomis, užduotimis ir nuo sukčiavimo apsaugota apdovanojimų ekonomika.
Turite panašią idėją?
Aptarti projektą