Production-ready personal portfolio for Remark F. Macasieb, built with Next.js App Router, React, Tailwind CSS, Framer Motion, and a LangChain + Groq chatbot assistant.
- Next.js
- React
- Tailwind CSS
- Framer Motion
- LangChain
- Groq API
- Vercel-ready deployment
- Install dependencies:
npm install- Copy the environment file and add your values:
cp .env.example .env.local- Start the development server:
npm run dev- Build for production:
npm run buildGROQ_API_KEY: required for the chatbot assistantGROQ_MODEL: optional Groq model overrideNEXT_PUBLIC_SITE_URL: public production URL for metadata and sitemap
NEXT_PUBLIC_CONTACT_EMAIL: enables the contact form to open a real email draftNEXT_PUBLIC_GITHUB_URL: public GitHub profile or repo linkNEXT_PUBLIC_LINKEDIN_URL: public LinkedIn profileNEXT_PUBLIC_FACEBOOK_URL: public Facebook profileNEXT_PUBLIC_UPWORK_URL: public Upwork freelancer profileNEXT_PUBLIC_RESUME_URL: public resume/CV file URL
- Portfolio content lives in
src/content/portfolio.ts - The chatbot API route lives in
src/app/api/chat/route.ts - Main sections live in
src/components/sections - Global styling and theme tokens live in
src/app/globals.css
- Push the repo to GitHub.
- Import the project into Vercel.
- Add the same environment variables from
.env.local. - Deploy.
No extra Vercel configuration is required for this setup.
This project now includes a production-style Docker setup using Next.js standalone output.
Use your existing .env.local file for both build-time public values and runtime secrets:
docker compose --env-file .env.local up --buildThe app will be available at http://localhost:3000.
docker compose downNEXT_PUBLIC_*values are used during the image build, so pass them when building the container.GROQ_API_KEYis only needed at runtime for the chatbot API route and should stay in.env.localor your deployment secret store.