kaloni.gr — Tosproget Laravel-skotøjs-webshop
8 uger
|
Full-Stack-udvikler & designer
Vi designede og udviklede kaloni.gr, en tosproget (græsk/engelsk) Laravel 12-webshop for et damesko-brand med base i Serres. Storefront understøtter produktvarianter (størrelse + farve), farvefiltrerede gallerier, ønskeseddel (session for gæster, DB for autentificerede brugere med login-fletning), nyligt sete produkter, autocomplete-søgning og realtids-forsendelseszonedetektion. Betalinger bruger en gateway-agnostisk abstraktion (PaymentGatewayInterface med DTO-baserede resultater), der understøtter Stripe 3DS, Cardlink hosted-redirect med HMAC-SHA256-digest-verifikation, bankoverførsel, efterkrav og betaling ved afhentning. Admin-panelet dækker produkter/varianter/kategorier, kuponer, forsendelseszoner, ordrelivscyklus og betalingsstatusovergange, anmeldelsesmoderation, nyhedsbrev- og igen-på-lager-abonnementer, kundestyring med GDPR-selvsletning (anonymisering vs hård sletning) og aktivitetslog. Tosproget indhold bruger dedikerede *_translations-tabeller med en smart lokaltilbagefaldskæde (URL-præfiks → session → brugerpræference → config), der driver SEO-venlige /el/ og /en/ URL'er med hreflang-alternativer og Organization/WebSite JSON-LD på hver side. Billeder serveres via Intervention Image v3 med responsive <picture>-srcsets og WebP-søskende; inline-scripts er CSP-kompatible via Vite-nonces; GA4 e-handels-tracking (view_item, add_to_cart, purchase) er betinget af cookie-samtykke. Forretningslogikken er isoleret i 23 service-klasser for et API-klart fundament.
Teknologier
Laravel 12
PHP 8.3
Alpine.js
Custom CSS (BEM)
MySQL
Intervention Image v3
Stripe (3DS)
Cardlink
Laravel Breeze + Google OAuth
Multilingual (el/en)
JSON-LD / SEO
Responsive Design
GA4 E-commerce
Vite
Udfordringer
At bygge et multi-gateway-betalingssystem, der rent understøtter både synkrone (kontant, bankoverførsel) og asynkrone redirect-flows (Stripe 3DS, Cardlink HMAC), mens den tosprogede indholdsmodel holdes enkel og kataloget hurtigt på tværs af hundreder af produktvarianter.
Løsninger
Designede en PaymentGatewayInterface med DTO-baserede resultater, så hver gateway kobles ind bag den samme API; brugte dedikerede *_translations-tabeller med en fallback-kæde (URL-præfiks → session → brugerpræference → config), så oversættelsen lever ét sted pr. enhed; cachede responsive WebP-søskende via Intervention Image v3 og serverede dem gennem <picture>-srcset-tags med eksplicitte dimensioner for at forhindre CLS.