Prerequisites
Before you start, make sure you have:
Requirement Version Notes Node.js 18+ LTS recommended pnpm 8+ npm install -g pnpmGit Any For cloning the repo Groq API key — Free at console.groq.com
The portfolio works without a Groq API key, but the AI chatbot will fail to respond. You can add the key later.
Setup
Clone the repository
git clone https://github.com/RogerCiv/japanese-portfolio.git
cd japanese-portfolio
Install dependencies
Use pnpm — not npm or yarn. The project uses a pnpm-lock.yaml lockfile and pnpm workspace overrides for React 19 types.
Get a Groq API key
The AI chatbot uses Groq to run Llama 3.1. Groq offers a free tier with generous limits.
Go to console.groq.com
Create an account or sign in
Navigate to API Keys in the sidebar
Click Create API Key and copy it
The free tier is more than sufficient for a personal portfolio chatbot.
Create .env.local
Create a .env.local file in the project root: # Required for the AI chatbot
GROQ_API_KEY=gsk_your_actual_key_here
Never commit .env.local to Git. It is already listed in .gitignore.
Start the development server
Open http://localhost:3000 — you should see your portfolio with the Japanese aesthetic. The AI chatbot floating button appears in the bottom-right corner. Click it and ask a question to verify the Groq integration is working.
Available scripts
Development
Production build
Lint and format
First customization
Once your portfolio is running locally, replace the placeholder content with your own:
Update your experience and education
Edit data/experience.ts — update the experiences[] and educations[] arrays with your own background. export const experiences : TimelineItem [] = [
{
title: "Your Job Title" ,
sub_title: "Company Name" ,
years: "2023 - Present" ,
details: "What you did there..." ,
japanese: "エンジニア" , // optional Japanese label
},
];
Add your projects
Edit data/projects.ts — replace the entries with your own projects. export const projects : Project [] = [
{
title: "My Project" ,
japanese: "プロジェクト" ,
description: "A short description of what this project does." ,
image: myProjectImage , // Next.js static import
tags: [ "Next.js" , "TypeScript" ],
github: "https://github.com/yourname/project" ,
demo: "https://project.vercel.app" ,
},
];
Update your skills
Edit data/skills.ts — customize the skill categories and technologies. import { CodeXml } from "lucide-react" ;
export const skills : Skill [] = [
{
icon: CodeXml ,
title: "Frontend" ,
japanese: "フロントエンド" ,
techs: [ "React" , "TypeScript" , "Next.js" ],
},
];
Update your social links
Edit data/socials.ts with your GitHub, LinkedIn, and other profiles.
Update the AI chatbot context
Edit data/portfolio-context.ts — this file generates the system prompt for the AI assistant. It automatically reads your updated data files, so you mainly need to update the static intro text to reflect your name and background.
Project structure reference
japanese-portfolio/
├── app/
│ ├── layout.tsx # Root layout, fonts, ThemeProvider
│ ├── page.tsx # Home page (Hero + Works + Skills + Experience)
│ ├── globals.css # CSS variables, Japanese pattern classes
│ └── api/chat/route.ts # AI chatbot API endpoint
├── components/ # React components (one per section)
├── data/ # TypeScript data files — edit these!
├── public/images/ # Static images (profile, projects, patterns)
└── types/index.ts # TypeScript interfaces
Next steps
Project Structure Learn how the codebase is organized.
Customization Deep-dive into customizing content and theming.
AI Chatbot Configure the Groq-powered assistant.
Deploy to Vercel Go live in a few clicks.