This repository contains the UpAway portfolio website for Quinn O'Donnell.
It showcases shipped products, background/about content, and a contact flow.
- Landing page at
/with:- Hero and service positioning
- Featured work (InnerEcho, EOS AI, optional Curb section)
- Contact section that submits to
/api/contact
- Product/project pages:
/innerecho- mental health journaling app showcase/eosai- EOS AI product showcase/curb- real estate listing generator showcase
- Additional pages:
/about- personal background and experience/privacy-policy- InnerEcho privacy policy/terms-of-service- InnerEcho terms/todos- legacy SvelteKit todo demo route
src/lib/featureFlags.jsSHOW_CURB_ON_LANDINGcontrols whether Curb appears on the home page.- The
/curbroute still exists regardless of this flag.
The landing page contact form posts to src/routes/api/contact/+server.js.
Current behavior:
- Validates required fields (
name,email,message) - Uses a hidden honeypot field (
company) to reduce bot submissions - Applies per-IP rate limiting (5 submissions per 10 minutes)
- Sends email through Resend to
support@upaway.dev
Copy .env.example to .env.local and set values:
RESEND_API_KEY=...
CONTACT_FROM_EMAIL=contact@eosbot.ai
CONTACT_FROM_NAME=Upaway ContactIf RESEND_API_KEY is missing, the contact endpoint will return a configuration error.
- SvelteKit + Vite
- Svelte component-driven UI with custom interactive effects
- Lenis smooth scrolling
- Resend for contact email delivery
Install dependencies:
pnpm installRun the dev server:
pnpm devBuild for production:
pnpm buildPreview production build locally:
pnpm previewpnpm dev- start local dev serverpnpm build- create production buildpnpm preview- preview built apppnpm check- run Svelte type/check passpnpm lint- run Prettier checkpnpm format- format with Prettier