Skip to main content

Feature: Contact Page (/contact)

Purpose​

  • Feature name: Contact page (/contact)
  • Why this feature exists: Provide safe, static contact paths without introducing a backend form.

Scope​

In scope​

  • contact cards for LinkedIn, GitHub, and email
  • fallbacks when no contact links are configured

Out of scope​

  • contact form handling or inbound data processing
  • authentication or identity verification

Prereqs / Inputs​

  • NEXT_PUBLIC_LINKEDIN_URL or NEXT_PUBLIC_GITHUB_BASE_URL or NEXT_PUBLIC_CONTACT_EMAIL

Procedure / Content​

Feature summary​

  • Feature name: Contact page (/contact)
  • Feature group: Core pages and reviewer journey
  • Technical summary: Renders static contact cards based on configured public environment variables. External social links open in a new tab; mailto: remains same-tab.
  • Low-tech summary: A safe contact page that avoids forms and uses simple links.

Feature in action​

  • Where to see it working: /contact in the deployed app or http://localhost:3000/contact during pnpm dev.

Confirmation Process​

Manual​

  • Steps: Open /contact, verify that configured contact cards appear.
  • What to look for: Mailto links open a mail client, GitHub/LinkedIn links open in a new tab (target="_blank" + rel="noopener noreferrer"), and fallback text appears if nothing is set.
  • Artifacts or reports to inspect: Optional E2E route coverage in CI.

Tests​

Potential behavior if broken or misconfigured​

  • Contact links missing because env vars are unset.
  • Mailto formatting incorrect due to invalid email values.

Long-term maintenance notes​

  • Keep contact endpoints current and remove stale links.
  • Re-validate after changing environment variables.

Dependencies, libraries, tools​

  • Next.js App Router
  • React
  • Tailwind CSS

Source code references (GitHub URLs)​

ADRs​

  • None.

Runbooks​

  • None.

Additional internal references​

Validation / Expected outcomes​

  • Contact page renders with at least one configured contact method.
  • No form or backend processing is required.

Failure modes / Troubleshooting​

  • No contact cards shown: set at least one public contact env var.
  • Incorrect links: validate env values and redeploy.

References​

  • None.