[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-pl-vetcard":3,"technology-slugs-pl":46,"mdc--m0i2ni-key":70},{"id":4,"title":5,"content":6,"date":7,"description":8,"extension":9,"featured":10,"image":11,"links":12,"meta":23,"stack":24,"stem":40,"tags":41,"url":15,"__hash__":45},"projects_pl\u002Fpl\u002Fprojects\u002Fvetcard.yml","VetCard","Publiczna część VetSpace — multi-tenant katalog klinik weterynaryjnych. Jeden deployment Nuxt SSR obsługuje wszystkie kliniki: strony klinik zoptymalizowane pod SEO, rezerwację wizyt online z proxy do własnego backendu tenant każdej kliniki, tematyzację pod markę kliniki oraz obsługę wielu oddziałów.\n\n## Kluczowe funkcje\n\n- **Jeden deployment — wiele klinik** — aplikacja routuje po slugu kliniki; żądania rezerwacji i slotów są proxy'owane do backendu tenant danej kliniki\n- **Katalog SEO-first** — 590+ klinik ze stronami SSR, danymi strukturalnymi i zlokalizowanymi trasami\n- **Branding każdej kliniki** — strona kliniki jest tematyzowana jej kolorem, z badge'em \"Powered by VetSpace\"\n- **Realny UX rezerwacji** — wolne sloty pokazują liczbę dostępnych lekarzy z kodowaniem kolorami\n- **Pełna lokalizacja** — ukraiński, angielski i polski z routingiem opartym na prefiksach\n\n## Stack technologiczny\n\n- **Frontend**: Nuxt 4 \u002F Vue 3, Tailwind CSS v4\n- **Backend**: Laravel catalog API + endpointy tenant do rezerwacji\n- **Renderowanie**: SSR dla stron SEO, CSR dla flow rezerwacji\n- **Testowanie**: testy jednostkowe Vitest + Cypress E2E na realnym backendzie\n","2026-09-20","Multi-tenant katalog klinik weterynaryjnych: SEO strony klinik, rezerwacja wizyt online, branding każdej kliniki — jedna aplikacja Nuxt obsługuje wszystkie","yml",true,"\u002Fhero\u002Fvetcard.avif",[13,18],{"label":14,"to":15,"color":16,"icon":17},"Live Demo","https:\u002F\u002Fvetcard.pro","primary","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":21,"icon":22},"Przegląd projektu","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-vetcard","neutral","i-simple-icons-github",{},[25,28,31,34,37],{"name":26,"icon":27},"Nuxt","i-simple-icons-nuxtdotjs",{"name":29,"icon":30},"Vue","i-simple-icons-vuedotjs",{"name":32,"icon":33},"TypeScript","i-simple-icons-typescript",{"name":35,"icon":36},"Tailwind CSS","i-simple-icons-tailwindcss",{"name":38,"icon":39},"Laravel API","i-simple-icons-laravel","pl\u002Fprojects\u002Fvetcard",[26,29,42,43,44],"Multi-tenant","SEO","SSR","4Q1qMR6jtn2ViojU9Uk8TaztwOrlQBTjLNLBv9AASnE",[47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69],"caddy","cloudflare","digitalocean","docker","filament","github-actions","go","hetzner","hostinger","laravel","mysql","nuxt","php","postgresql","proxmox","redis","stripe","symfony","tailwindcss","terraform","typescript","vite","vue",{"data":71,"body":72},{},{"type":73,"children":74},"root",[75,83,90,146,152],{"type":76,"tag":77,"props":78,"children":79},"element","p",{},[80],{"type":81,"value":82},"text","Publiczna część VetSpace — multi-tenant katalog klinik weterynaryjnych. Jeden deployment Nuxt SSR obsługuje wszystkie kliniki: strony klinik zoptymalizowane pod SEO, rezerwację wizyt online z proxy do własnego backendu tenant każdej kliniki, tematyzację pod markę kliniki oraz obsługę wielu oddziałów.",{"type":76,"tag":84,"props":85,"children":87},"h2",{"id":86},"kluczowe-funkcje",[88],{"type":81,"value":89},"Kluczowe funkcje",{"type":76,"tag":91,"props":92,"children":93},"ul",{},[94,106,116,126,136],{"type":76,"tag":95,"props":96,"children":97},"li",{},[98,104],{"type":76,"tag":99,"props":100,"children":101},"strong",{},[102],{"type":81,"value":103},"Jeden deployment — wiele klinik",{"type":81,"value":105}," — aplikacja routuje po slugu kliniki; żądania rezerwacji i slotów są proxy'owane do backendu tenant danej kliniki",{"type":76,"tag":95,"props":107,"children":108},{},[109,114],{"type":76,"tag":99,"props":110,"children":111},{},[112],{"type":81,"value":113},"Katalog SEO-first",{"type":81,"value":115}," — 590+ klinik ze stronami SSR, danymi strukturalnymi i zlokalizowanymi trasami",{"type":76,"tag":95,"props":117,"children":118},{},[119,124],{"type":76,"tag":99,"props":120,"children":121},{},[122],{"type":81,"value":123},"Branding każdej kliniki",{"type":81,"value":125}," — strona kliniki jest tematyzowana jej kolorem, z badge'em \"Powered by VetSpace\"",{"type":76,"tag":95,"props":127,"children":128},{},[129,134],{"type":76,"tag":99,"props":130,"children":131},{},[132],{"type":81,"value":133},"Realny UX rezerwacji",{"type":81,"value":135}," — wolne sloty pokazują liczbę dostępnych lekarzy z kodowaniem kolorami",{"type":76,"tag":95,"props":137,"children":138},{},[139,144],{"type":76,"tag":99,"props":140,"children":141},{},[142],{"type":81,"value":143},"Pełna lokalizacja",{"type":81,"value":145}," — ukraiński, angielski i polski z routingiem opartym na prefiksach",{"type":76,"tag":84,"props":147,"children":149},{"id":148},"stack-technologiczny",[150],{"type":81,"value":151},"Stack technologiczny",{"type":76,"tag":91,"props":153,"children":154},{},[155,165,175,185],{"type":76,"tag":95,"props":156,"children":157},{},[158,163],{"type":76,"tag":99,"props":159,"children":160},{},[161],{"type":81,"value":162},"Frontend",{"type":81,"value":164},": Nuxt 4 \u002F Vue 3, Tailwind CSS v4",{"type":76,"tag":95,"props":166,"children":167},{},[168,173],{"type":76,"tag":99,"props":169,"children":170},{},[171],{"type":81,"value":172},"Backend",{"type":81,"value":174},": Laravel catalog API + endpointy tenant do rezerwacji",{"type":76,"tag":95,"props":176,"children":177},{},[178,183],{"type":76,"tag":99,"props":179,"children":180},{},[181],{"type":81,"value":182},"Renderowanie",{"type":81,"value":184},": SSR dla stron SEO, CSR dla flow rezerwacji",{"type":76,"tag":95,"props":186,"children":187},{},[188,193],{"type":76,"tag":99,"props":189,"children":190},{},[191],{"type":81,"value":192},"Testowanie",{"type":81,"value":194},": testy jednostkowe Vitest + Cypress E2E na realnym backendzie"]