Hola Tuk Tuk
Բարսելոնայում էլեկտրական տուկ-տուկերով տուրերի ամրագրման կայք՝ օրվա և ժամի ընտրություն, առցանց վճարում, ադմին վահանակ՝ ժամանակացույցի, պարկի և բովանդակության համար։
Գլխավորը
- Ամրագրման ընթացք՝ տեղի պահումով և հետհաշվարկով
- Ազատ տեղերը հաշվվում են ըստ տուկ-տուկերի ընդհանուր պարկի
- Տուրի երթուղու խմբագրիչ քարտեզի վրա
- PWA, որը չի քեշավորում էջերն ու գները
- Դեր
- Full-stack՝ ամրագրման ընթացք, տեղերի հաշվարկ ըստ պարկի, ադմին վահանակ, PWA, SEO
- Հաճախորդ
- Hola Tuk Tuk
- Տարի
- 2026
- Կարգավիճակ
- Աշխատում է

01Համատեքստ
Hola Tuk Tuk-ը զբոսաշրջիկներին շրջեցնում է Բարսելոնայով էլեկտրական տուկ-տուկերով։ Համակարգը երեք մասից է՝ կայք Next.js 16-ով (անգլերեն և իսպաներեն), ադմին վահանակ React-ով և API Laravel-ով։ Վճարումը կատարվում է PayPal-ով և բանկային քարտով (Redsys), իսկ գործընկերների՝ GetYourGuide-ի և Viator-ի ամրագրումները Bókun-ի միջոցով գալիս են նույն համակարգ։ Նախագիծը թիմային է, ստորև միայն իմ մասն է՝ 2026 թվականի ապրիլ–մայիս, փոփոխություններ միաժամանակ կայքում, ադմին վահանակում և API-ում։
02Իմ մասը
- Ամրագրման ընթացքը կայքում՝ օրացույց, մեկնման ժամ, հաճախորդի տվյալներ, վճարում։ Վճարումից առաջ տեղը մի քանի րոպեով պահվում է, էկրանին հետհաշվարկ է գնում. եթե ժամանակը լրանում է, հաճախորդը վերադառնում է ընտրությանը և չի վճարում արդեն զբաղված ժամի համար։
- Ազատ տեղերի հաշվարկ ըստ պարկի՝ քանի հոգի դեռ կարելի է գրանցել տվյալ ժամին՝ հաշվի առնելով բոլոր տուրերը միասին (մանրամասները՝ ստորև)։
- Խմբի գին՝ սեփականատերը ադմին վահանակում նշում է տուկ-տուկերի քանակը, տարողությունը և գինը խմբի յուրաքանչյուր չափի համար. կայքը վերջնական գումարը ցույց է տալիս վճարումից առաջ։
- «Գտնել իմ ամրագրումը»՝ որոնում ամրագրման համարով կամ էլ. հասցեով, կարգավիճակ և մանրամասներ։ Եթե վճարումն ընդհատվել է, այն կարելի է ավարտել ավելի ուշ. սերվերը PayPal-ի նոր պատվեր է ստեղծում միայն այն դեպքում, երբ էլ. հասցեն համընկնում է ամրագրման հասցեի հետ։
- Տուրի երթուղին քարտեզի վրա՝ ադմին վահանակում կետերը դրվում են քարտեզին սեղմելով կամ հասցեի որոնմամբ, գիծը գծվում է ճանապարհներով. տուրի էջում այցելուն տեսնում է նույն երթուղին և դրա երկարությունը։
- Բլոկներից կազմված էջեր՝ ավելացրել եմ առաջին էկրանի, քայլերի, կարծիքների, տեսանյութի և ակորդեոնի բլոկները. ադմին վահանակում՝ բլոկների խմբագրիչը և նկարների ընտրությունը մեդիադարանից։
- Մեդիադարան՝ թղթապանակներ, թղթապանակի ջնջում՝ սկավառակի ֆայլերի հետ միասին։
- SEO՝ meta և Open Graph դաշտեր տուրերի, էջերի և հոդվածների համար՝ նախադիտմամբ ադմին վահանակում. կայքի էջերի մետատվյալներ։
- PWA՝ մանիֆեստ՝ պատկերակներով, դյուրանցումներով և սքրինշոթներով, service worker. կայքը տեղադրվում է հեռախոսում որպես հավելված։
- Գլխամաս, լոգո, ստորոտ, բջջային մենյու, էջերի տեքստեր։
03Տեխնիկական լուծումներ
- Տեղերը հաշվվում են ըստ պարկի, ոչ թե ըստ տուրի։ Տուկ-տուկերը ընդհանուր են բոլոր տուրերի համար, ուստի ժամը սահմանափակվում է ոչ միայն իր ժամանակացույցով, այլև մյուս տուրերի այն ամրագրումներով, որոնք այդ պահին դեռ ճանապարհին են։ Ամրագրման մեջ պահվում է ավարտի ժամը (մեկնում գումարած տուրի տևողությունը), հին գրառումների համար այն հաշվվում է տևողությունից։ Օրինակ թեստից՝ ժամը 10:00-ի երկժամյա տուրը զբաղեցրել է պարկը. 11:00-ի մեկնումը փակ է, 12:30-ինը՝ նորից բաց։
- Չվճարված ամրագրումը պահում է տեղը, քանի դեռ այն չի չեղարկվել։ Այլապես նույն ժամը կարելի է երկու անգամ վաճառել, մինչ առաջին հաճախորդը դեռ վճարում է։ Այն չեղարկում է պլանավորիչը՝ ադմին վահանակում նշված ժամկետն անցնելուց հետո կամ մեկնման ժամը հասնելիս։ Գործընկերների ամրագրումների համար ժամկետը կարգավորվում է առանձին։
- Տուրի տևողությունը փոխելիս արդեն ստեղծված ամրագրումները վերահաշվարկվում են։ Հին ավարտի ժամով հատումները սխալ են հաշվվում։ Նույնը կատարվում է, երբ տևողությունը գալիս է Bókun-ից։
- Bókun-ից եկող ազատ տեղերի թիվը սահմանափակվում է պարկի չափով։ Գործընկեր համակարգը կարող է ավելի շատ տեղ հայտնել, քան իրականում կա տուկ-տուկերում. համաժամացման ժամանակ արժեքը կտրվում է։
- Տուրի ժամը Բարսելոնայի ժամային գոտով է։ Մեկնումները պահվում են տեղական ժամով, իսկ սերվերն աշխատում է UTC-ով։ «Հիմա»-ի հետ համեմատությունը կատարվում է տուրի գոտով, այլապես առավոտյան ժամերը երևում են որպես անցած կամ հակառակը։
- Թեստային վճարումը միանում է միայն հստակ դրոշակով։ Նախկինում առանց PayPal-ի բանալիների սերվերը լուռ կեղծ պատվեր էր տալիս։ Հիմա առանց բանալիների սխալ է վերադարձվում, իսկ իմիտացիան առանձին կարգավորում է. այդպես իրական սերվերում հնարավոր չէ պատահաբար «ընդունել» վճարում, որը չի եղել։
- Service worker-ը էջերը չի քեշավորում։ Քեշ են ընկնում միայն նկարները և մանիֆեստը. փաստաթղթերը, React Server Components-ի տվյալները, սկրիպտներն ու ոճերը միշտ գալիս են ցանցից։ Գներն ու ազատ տեղերը չեն հնանում, իսկ թարմացումից հետո կայքի հին տարբերակ չի մնում։
- Երթուղին՝ ճանապարհներով, առանց վճարովի քարտեզների։ OpenStreetMap-ի սալիկներ, երթուղու գիծը՝ OSRM-ից, հասցեի որոնումը՝ Nominatim-ով։ Կետերը պահվում են առանձին՝ տուրի յուրաքանչյուր լեզվի համար։
04Արդյունքը
Կայքն աշխատում է երկու լեզվով և ամրագրումներ է ընդունում՝ holatuktuk.com։ Տեղերի հաշվարկի տրամաբանությունը ծածկված է թեստերով՝ տուրերի հատում ըստ ժամի, պարկի տարողություն, չվճարված ամրագրումներ, վերահաշվարկ տևողությունը փոխելիս։
