Commit graph

3 commits

Author SHA1 Message Date
Hermes Agent
f1fa539495 SEO: comprehensive search engine optimization for bilhej.se
Some checks failed
CI / Lint, type check, unit tests, coverage (push) Failing after 26m9s
CI / E2E browser tests (push) Failing after 13m8s
Adds 7 SEO improvements across the full stack:

1. Enhanced index.html:
   - Open Graph tags (og:title, og:description, og:image, og:locale sv_SE)
   - Twitter Card tags (summary_large_image)
   - Canonical URL (https://bilhej.se/)
   - Meta keywords, author, robots, language tags
   - Structured data in JSON-LD (Organization, WebSite, Service, FAQPage)
   - FAQ structured data with 4 Q&A pairs (pris, anonymitet, hur funkar det)
   - Preconnect hints for analytics origin

2. robots.txt:
   - Disallow: auth pages, admin, orders, payment, guest pages
   - Allow: public pages (/, /om-oss, /kontakt, /integritetspolicy, /villkor)
   - Crawl-delay: 10s
   - Points to sitemap

3. sitemap.xml:
   - 6 public URLs with proper changefreq and priority
   - Home (1.0), Om (0.7), Kontakt (0.6), GDPR/Villkor (0.5)

4. useSeo composable:
   - Dynamic document.title, meta description/OG/Twitter on route change
   - Canonical URL updates per page
   - Reset fallback for unnamed routes

5. Route-level SEO data:
   - 16 routes with unique title, description, keywords
   - Covers all public pages + key auth pages

6. App.vue: wired useSeo with route.name watcher (immediate: true)

7. nginx.conf:
   - Security headers: X-Frame-Options DENY, X-Content-Type-Options,
     X-XSS-Protection, Referrer-Policy, Permissions-Policy, HSTS
   - Far-future cache (1y, immutable) for static assets
   - No-cache for robots.txt and sitemap.xml
   - Deny access to dotfiles
   - Stronger gzip config
2026-07-18 17:54:13 +00:00
00327674ed refactor: add design system with CSS tokens, utilities, and app shell
- Add design tokens (colors, spacing, radius, shadows, typography, transitions)
- Add global reset, body/link/focus/typography base styles
- Add utility classes (container, surface-card, btn variants, field, badge, message, divider)
- Replace header ✉ symbol with inline SVG envelope icon
- Update favicon to license-plate shaped mark with blue gradient and bold B
- Rename brand from BilHälsning to Bilhej in header, footer, and HTML title
- Rewrite footer tagline: focus on service, not privacy
- Add theme-color meta tag for browser chrome
2026-05-16 16:09:35 +02:00
9931061cb6 feat: scaffold Vue 3 + Vite frontend with TypeScript, Router, Pinia, Vitest, ESLint, Prettier
- Scaffold via npm create vite@latest --template vue-ts (create-vue interactive
  prompts require manual selection; create-vite supports non-interactive flags)
- Dependencies: vue-router (SPA routing, createWebHistory for clean URLs),
  pinia (centralised state management), vitest + @vue/test-utils + jsdom
  (unit testing with browser DOM simulation)
- Dev tooling: eslint (v10 flat config) + eslint-plugin-vue + @vue/eslint-config-typescript
  + @vue/eslint-config-prettier (ESLint-Prettier integration via vueTsConfigs),
  prettier (semi: false, singleQuote, trailingComma: all), jiti (bridges ESLint
  with TypeScript config files)
- vite.config.ts: dev server on port 3000, @ alias resolving to src/, vitest
  with jsdom environment
- eslint.config.ts: defineConfigWithVueTs wraps tseslint.config with Vue SFC
  support (vue-eslint-parser, <script setup lang="ts">), vue/multi-word off
- tsconfig.app.json: path alias @/* -> src/* for TypeScript module resolution
- src/router/index.ts: single route mapping / to HomePage
- src/pages/HomePage.vue: minimal <script setup lang="ts"> placeholder
- src/main.ts: bootstraps app with Pinia plugin + Vue Router
- src/App.vue: delegates rendering to <RouterView />
- src/__tests__/HomePage.spec.ts: smoke test verifying component mounts
- Directory structure: src/stores/, src/api/, src/composables/ with .gitkeep
  placeholders matching AGENTS.md convention (PascalCase pages, camelCase stores/composables)
- index.html: lang="sv", title BilHälsning (Swedish UI convention)
- Cleaned up: HelloWorld.vue, style.css, template boilerplate SVGs/PNGs
- Update AGENTS.md + CODING_GUIDELINES.md: .js extensions → .ts across all
  file naming examples (useXxx.ts, authStore.ts, orders.ts, client.ts)
- Verification: npm run dev serves blank page on http://localhost:3000,
  npm run lint passes (0 errors, 0 warnings), npm test passes (1 test, 1 file)
2026-05-01 00:52:38 +02:00