Commit Graph

9 Commits

Author SHA1 Message Date
vikingowl 325a1121a0 fix: replace ASCII-encoded umlauts with proper German characters in UI text
User-facing strings used ae/oe/ue/ss instead of ä/ö/ü/ß, carried over
from ASCII-only planning docs convention.
2026-02-27 11:12:21 +01:00
vikingowl 2e6acceb33 feat: add admin panel, market submission form, and legal updates
- Admin layout with auth guard at /admin
- Admin market list with status filter tabs (pending/approved/rejected)
- Admin market detail/review with approve/reject actions
- Admin market create and edit forms with shared MarketForm component
- Anonymous market submission form at /markt/einreichen with Turnstile
- Optional latitude/longitude fields on submission form
- Admin and submission types added to API types
- requireAdmin guard for role-based frontend access
- Header/mobile nav updated with admin and submission links
- Auth layout redirect removed to re-enable login flow
- Login form action renamed to fix named actions conflict
- Impressum updated with user-submitted content section
- Datenschutz updated with submission form and Turnstile sections
2026-02-27 11:04:31 +01:00
vikingowl 6b23cc330e feat: add Prettier, ESLint, and pre-commit hooks
- Add Prettier with svelte and tailwindcss plugins
- Add ESLint with typescript-eslint and eslint-plugin-svelte
- Add pre-commit hooks (trailing-whitespace, end-of-file-fixer,
  check-yaml, check-json, no-commit-to-branch, prettier, eslint,
  svelte-check)
- Add format, format:check, lint, lint:fix scripts to package.json
- Rename CI typecheck step to lint, add format:check and lint commands
- Fix ESLint issues: unused imports, Leaflet type import, extract
  JSON-LD from {@html} template literals to script-block variables
2026-02-23 05:33:44 +01:00
vikingowl 7282f25986 feat: add SEO landing pages for states and cities
Add /maerkte/ browse-by-state overview, /maerkte/[state]/ state detail
pages, and /maerkte/[state]/[city]/ city detail pages. Each page fetches
all markets and filters client-side (SSR). Includes slug utilities with
umlaut handling, JSON-LD structured data, breadcrumb navigation on all
pages including market detail, and sitemap entries for all new routes.
2026-02-22 20:21:48 +01:00
vikingowl 6f1709a258 fix: use PUBLIC_API_BASE_URL env var instead of hardcoded localhost
SSR was fetching from http://localhost:8080 in production, causing
the markets endpoint to fail silently and return 0 results.
2026-02-22 18:36:26 +01:00
vikingowl 2c462144a7 chore: temporarily disable login/signup and profile routes
Comment out auth navigation in Header and MobileNav.
Add redirect-to-home layout guards on /auth/* and /profile/* routes.
2026-02-22 11:34:05 +01:00
vikingowl 76afe71854 feat: add signet ring logo and favicon with fleur-de-lis
Introduces brand identity with a medieval signet ring motif:
gold fleur-de-lis on dark green signet face. Adds SVG favicon,
raster fallbacks (ICO/PNG), apple-touch-icon, web manifest,
and inline signet ring logo in the header next to the wordmark.
2026-02-18 07:44:41 +01:00
vikingowl 2b02168747 feat: medieval aesthetic restyling with dark/light mode
- Add MedievalSharp + Crimson Pro fonts (woff2)
- Implement OKLCH color theme: forest green primary, gold accent,
  warm stone neutrals, parchment/vellum surfaces, brick red danger
- Add dark/light mode with system preference detection and user toggle
  (ThemeToggle component cycling system/light/dark)
- Prevent FOUC with inline script in app.html
- Replace native <select> with custom accessible dropdown (combobox/
  listbox pattern, keyboard nav, type-ahead, app-themed styling)
- Add IP geolocation fallback via geojs.io when native geolocation
  fails, with visual location badge showing resolved city name
- Shared form control styles via @layer base
- WCAG/a11y: skip-to-content link, aria-invalid, aria-describedby,
  aria-live, focus-visible, role="search", color-scheme:dark
- Update all 23 component/page files with new color system and
  dark: variants
2026-02-18 07:19:30 +01:00
vikingowl 1bcab1f1d4 feat: implement SvelteKit web frontend MVP
SvelteKit 2 (Svelte 5 runes) + Tailwind 4 + TypeScript frontend for
the Marktvogt medieval market platform.

- Market search with keyword FTS, location/radius, date range, sorting
- List/map toggle (Leaflet with OSM tiles, dynamic import)
- Market detail pages with SSR, SEO meta/OG tags, opening hours,
  admission prices, embedded map
- Auth: login (password + magic link + OAuth), register, logout
- Profile: view/edit display name + avatar, account deletion
- 2FA: TOTP setup, verify, disable
- httpOnly cookie auth with JWT access + session token refresh
- Responsive layout with mobile hamburger nav
- German UI text for DACH audience
2026-02-18 06:27:51 +01:00