Content model (SQLite/Drizzle): banner_images, services + service_images,
news_posts, settings (migration 0001).
- Reusable cross-fading Slideshow component (banner + per-service images)
- Banner (new "Pasica" tab): upload/reorder/delete hero images; homepage shows
an auto-advancing full-width slideshow only when images exist
- Services CMS: create/edit/delete/reorder services (name, description, bullet
list) with per-service image management; homepage renders them with rotating
images in an alternating layout (replaces hardcoded Main/Service components)
- Blog: admin CRUD with draft/publish + cover image; public /news list and
/news/[slug] article (plain-text paragraphs); latest posts teased on the home
- Contact: editable email/phone/address + optional embedded map; shown at the
bottom of the homepage
- Homepage rebuilt as data-driven sections; shared content service in
src/lib/server/content.ts
- Remove now-unused Main.svelte, Service.svelte, ZoomInImage.svelte
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Restructure /admin into a (dashboard) route group with a sidebar shell
(Galerija / Storitve / Novice / Kontakt / Uporabniki) and active-tab state
- Hide the public site header/footer on all /admin routes
- Centralize auth in hooks.server.ts so page loads, form actions AND endpoints
are all gated (layout load guards don't cover actions)
- Users section (admin-only): add user, change role, reset password, delete;
safeguards prevent self-delete and removing the last admin; server-side role
checks (editors get 403 even if UI hidden)
- Login redirects already-authed users; logout moved to /admin/logout endpoint
- Gallery management moved under /admin/gallery; shared .admin-* styles in app.css
- Fix flexbox overflow in the dashboard main column (min-width:0, box-sizing)
- Placeholder tabs for Services/News/Contact (Phases 3-5)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>