This repository contains a modular personal website with built-in multi-language support.
- Primary navigation:
Home / Sun Trilogy / Projects / Contact - CV-style homepage
Sun Trilogysection marked as WIP- Projects page with GitHub repository links
- Contact form flow via
POST /api/contact - No login/sign-up in v1
- Supported locales:
tranden - Locale-based routes:
/{locale}/{locale}/sun-trilogy/{locale}/projects/{locale}/contact
- Default routing behavior:
/redirects to/tr- Legacy Turkish slugs are redirected to canonical localized routes by
middleware.ts
src/app: Route-level pages and API routessrc/i18n: Locale configuration and translation dictionariessrc/components: Shared UI/layout componentssrc/content: Locale-based content datasrc/lib: Validation, security, integrations, and constantssrc/types: Shared TypeScript contractsdocs: Architecture, content, security, and setup docs
/api/health-> health check/api/contact-> contact submission endpoint
- Node.js is pinned to major
22via.nvmrcand.node-version package.jsonengines:node: 22.xpnpm: 9.x
- Automated tests:
pnpm run test(Vitest run mode)pnpm run test:watch(Vitest watch mode)pnpm run test:e2e(Playwright smoke E2E tests)pnpm run test:e2e:install(installs Playwright Chromium browser)PLAYWRIGHT_BASE_URL=<url> pnpm run test:e2e(runs E2E against deployed URL)
- Environment checks:
pnpm run verify:env(validates.env.localcontract)pnpm run verify:env:prod(validates exported production env contract)pnpm run verify:env:prod:file(validates.env.production.localcontract)
Copy .env.example to .env.local and set required values before testing contact delivery.
Current email pipeline supports EMAIL_PROVIDER=resend.
CONTACT_MAX_PAYLOAD_BYTES is optional and defaults to 10000 if omitted.
CONTACT_LOGGING_ENABLED controls structured contact API logs (false locally unless explicitly enabled).
After this skeleton baseline, the next phase is production-grade UI polish and end-to-end contact delivery verification in both locales.