Files
gabrielkaszewski-next/docs/superpowers/specs/2026-05-16-dual-domain-design.md

1.1 KiB

Dual-Domain Support

Date: 2026-05-16 Status: Approved

Goal

Serve the portfolio under both gabrielkaszewski.dev and gabrielkaszewski.pl with identical content. The .dev domain is canonical for SEO.

Changes

1. compose.yml — Traefik router rule

Extend the Host() rule to accept both domains and cover both with TLS:

- "traefik.http.routers.gabrielkaszewski.rule=Host(`gabrielkaszewski.dev`) || Host(`gabrielkaszewski.pl`)"
- "traefik.http.routers.gabrielkaszewski.entrypoints=websecure"
- "traefik.http.routers.gabrielkaszewski.tls.certresolver=letsencrypt"

2. app/layout.tsx — canonical metadata

Add alternates.canonical to the exported metadata object:

alternates: {
  canonical: "https://gabrielkaszewski.dev",
},

This injects <link rel="canonical" href="https://gabrielkaszewski.dev"> into every page's <head>, telling search engines the .dev domain is authoritative.

Out of scope

  • No redirects — .pl serves content directly.
  • No per-domain content differences.
  • No changes to OpenGraph or JSON-LD (already hardcoded to .dev).