A production-grade, AI-themed personal portfolio built with Next.js 14, TypeScript, Tailwind CSS, Framer Motion, Three.js, and an MDX blog system.
cd /Users/konaaravind4gmail.com/.gemini/antigravity/scratch/portfolio
npm install
cp .env.local.example .env.local
# Edit .env.local and fill in your values
npm run dev
# → http://localhost:3000
| Variable | Description | Required |
|---|---|---|
NEXTAUTH_SECRET | JWT secret (run openssl rand -base64 32) | Yes |
NEXTAUTH_URL | App URL (e.g. http://localhost:3000) | Yes |
ADMIN_EMAIL | Admin email for blog management | Yes |
ADMIN_PASSWORD_HASH | bcrypt hash of admin password | Yes |
SMTP_HOST | SMTP server for contact form | No |
SMTP_PORT | SMTP port (default 587) | No |
SMTP_USER | SMTP username | No |
SMTP_PASS | SMTP password / app password | No |
CONTACT_TO_EMAIL | Where contact emails go | No |
node -e "const b=require('bcryptjs'); b.hash('yourpassword',10).then(console.log)"
docker build \
--build-arg NEXTAUTH_SECRET=your_secret \
--build-arg NEXTAUTH_URL=https://yourdomain.com \
-t kona-portfolio .
docker run -p 3000:3000 \
-e ADMIN_EMAIL=konaaravind4@gmail.com \
-e ADMIN_PASSWORD_HASH=your_hash \
kona-portfolio
Create a new file in content/blog/your-post-slug.mdx:
---
title: "Your Blog Post Title"
excerpt: "A one-sentence summary shown in cards."
date: "2026-01-15"
tags: ["ML", "RAG", "Math"]
author: "Kona Aravind"
published: true
---
# Your Heading
Normal markdown with **bold**, *italic*, and `code`.
Math with KaTeX:
$$
E = mc^2
$$
Inline math: $\alpha + \beta = \gamma$
## Code Block
\`\`\`python
def hello():
print("Hello, World!")
\`\`\`
Add projects to lib/projects.ts:
{
"slug": "my-project",
"title": "My AI Project",
"tagline": "One-line description",
"description": "Short description",
"longDescription": "Full paragraph description",
"techStack": ["Python", "PyTorch"],
"github": "https://github.com/...",
"demo": "",
"category": "NLP",
"featured": true,
"metrics": [
{ "label": "Accuracy", "value": "94%", "color": "cyan" }
],
"architecture": "Input → Model → Output",
"problemStatement": "What problem does this solve?",
"mathModel": "optional LaTeX string",
"screenshots": [],
"tags": ["NLP", "ML"],
"date": "2025-01-01"
}
MIT © 2026 Kona Aravind
3 commits
TypeScript
91.4%
CSS
6.5%
MDX
1.8%
A production-grade, AI-themed personal portfolio built with Next.js 14, TypeScript, Tailwind CSS, Framer Motion, Three.js, and an MDX blog system.
cd /Users/konaaravind4gmail.com/.gemini/antigravity/scratch/portfolio
npm install
cp .env.local.example .env.local
# Edit .env.local and fill in your values
npm run dev
# → http://localhost:3000
| Variable | Description | Required |
|---|---|---|
NEXTAUTH_SECRET | JWT secret (run openssl rand -base64 32) | Yes |
NEXTAUTH_URL | App URL (e.g. http://localhost:3000) | Yes |
ADMIN_EMAIL | Admin email for blog management | Yes |
ADMIN_PASSWORD_HASH | bcrypt hash of admin password | Yes |
SMTP_HOST | SMTP server for contact form | No |
SMTP_PORT | SMTP port (default 587) | No |
SMTP_USER | SMTP username | No |
SMTP_PASS | SMTP password / app password | No |
CONTACT_TO_EMAIL | Where contact emails go | No |
node -e "const b=require('bcryptjs'); b.hash('yourpassword',10).then(console.log)"
docker build \
--build-arg NEXTAUTH_SECRET=your_secret \
--build-arg NEXTAUTH_URL=https://yourdomain.com \
-t kona-portfolio .
docker run -p 3000:3000 \
-e ADMIN_EMAIL=konaaravind4@gmail.com \
-e ADMIN_PASSWORD_HASH=your_hash \
kona-portfolio
Create a new file in content/blog/your-post-slug.mdx:
---
title: "Your Blog Post Title"
excerpt: "A one-sentence summary shown in cards."
date: "2026-01-15"
tags: ["ML", "RAG", "Math"]
author: "Kona Aravind"
published: true
---
# Your Heading
Normal markdown with **bold**, *italic*, and `code`.
Math with KaTeX:
$$
E = mc^2
$$
Inline math: $\alpha + \beta = \gamma$
## Code Block
\`\`\`python
def hello():
print("Hello, World!")
\`\`\`
Add projects to lib/projects.ts:
{
"slug": "my-project",
"title": "My AI Project",
"tagline": "One-line description",
"description": "Short description",
"longDescription": "Full paragraph description",
"techStack": ["Python", "PyTorch"],
"github": "https://github.com/...",
"demo": "",
"category": "NLP",
"featured": true,
"metrics": [
{ "label": "Accuracy", "value": "94%", "color": "cyan" }
],
"architecture": "Input → Model → Output",
"problemStatement": "What problem does this solve?",
"mathModel": "optional LaTeX string",
"screenshots": [],
"tags": ["NLP", "ML"],
"date": "2025-01-01"
}
MIT © 2026 Kona Aravind
3 commits
TypeScript
91.4%
CSS
6.5%
MDX
1.8%