-
.env.localis gitignored (listed in.gitignore) -
.env.examplecontains placeholder values only, no real secrets - Secrets (
RESEND_API_KEY) accessed viaprocess.envserver-side only - No secrets exposed to client-side bundles
- Production env vars stored in Vercel dashboard, not in repo
- Input validation: checks for required fields (name, email, message)
- Returns generic error messages (no stack traces or internal details)
- Uses
replyToinstead of injecting user email intofromfield - Server-side only: Resend SDK and API key never reach the client
- Rate limiting: not implemented (Vercel provides basic DDoS protection)
- CSRF protection: not implemented (acceptable for public contact forms)
- Contact form uses controlled React inputs (no
dangerouslySetInnerHTMLon user input) - Blog content is author-controlled MDX, not user-submitted
-
StructuredDatausesJSON.stringifyfor safe JSON-LD injection - No SQL databases (no SQL injection surface)
- No URL parameter parsing for dynamic queries
- All dependencies pinned to exact versions (no caret
^or tilde~) - No known malicious packages
- Unused packages removed to reduce attack surface
-
sharpincluded as devDependency for image optimization (build-time only)
- Next.js default CORS behavior (same-origin for API routes)
- No custom CORS headers configured (API is same-origin only)
- Vercel adds security headers by default (X-Frame-Options, etc.)
- No authentication required (public portfolio site)
- No user accounts or sessions
- No admin panel
- Vercel auto-deploys from
mainbranch only - HTTPS enforced by Vercel
- No SSH keys, deploy tokens, or credentials in repo
- Build logs do not expose secrets (env vars are masked)
- External scripts limited to Google Analytics (loaded via
next/script) - Vercel Analytics loaded as first-party
- No inline scripts except GA config (CSP-compatible via
next/script) - Images served from same origin or specified domains
- Video/audio assets served from same origin
- Google Analytics for traffic monitoring
- Vercel Analytics for performance and web vitals
- Vercel deployment logs for build and runtime errors