My personal portfolio site. Built with Next.js, Three.js, and Framer Motion. View the live site.
Make sure you have Node.js 20.9.0 or higher and npm 8.6.0 or higher installed (see .nvmrc — run nvm use if you use nvm). Install dependencies with:
npm installOnce it's done, copy .env.example to .env and fill in the values, then start up a local server with:
npm run devTo view the components storybook:
npm run storybookTo create a production build (static export):
npm run buildThe site is hosted on AWS (S3 for the static site, Lambda for the contact form). You'll need an AWS account and the AWS CLI installed, and the S3 bucket names in package.json's deploy/deploy:storybook scripts updated to your own.
Deploy the site to S3:
npm run deployDeploy the serverless contact form function:
cd functions
npm run deploy:api- The rotating background sphere on the homepage is a Three.js shader; its color comes from the fragment shader in
src/layouts/Home/displacementSphereFragment.glsl. - The contact form is wired up to an AWS Lambda function in
functions/; seefunctions/serverless.ymlfor its configuration.

