A personal site for developers who build real products.
Interactive, fast, light and dark, and built to show how you think, not just what you've made.
Highlights · Quick start · Make it yours · Settings · Project layout
The footer skyline follows the local time of day: dawn, daylight, dusk and night.
| Typeable console | The hero has a small terminal. Type help, ls or cat to explore the site. Press ` anywhere for a full drop-down terminal. |
| Ask | A chat panel that answers questions about your work and shows its sources. |
| Smart contact form | Visitors pick a topic (hiring, a project, or just hello). A pasted job description can turn into a tailored page. |
| Blog | Posts with code highlighting, tags, reading time and an RSS feed. |
| Resume | A web resume, plus a print layout that makes a clean PDF. |
| Polish | Light and dark themes with a ripple switch, smooth scrolling, card-to-page transitions, a command menu (Ctrl K) and sound effects you can turn off. |
| Every page shares well | Link previews are drawn for each page, and search engines get structured data. |
| Languages | Pick a language from the menu. Strings are translated on demand. |
| Also included | Setup, Now, Guestbook, Status, Book a call, Code highlights and Colophon pages. |
You need Node.js 18 or newer.
git clone https://github.com/your-github/Portfolio.git
cd Portfolio
npm install
npm run devOpen http://localhost:3000.
For a production build:
npm run build
npm start- Your details. Edit
config.js: name, short bio, social links and navigation. - Your pictures. Replace the grey placeholders in
public/:portrait.jpg,portrait-face.png,portrait-bust.png, the icons, and the images inpublic/assets/. Keep the same file names and sizes, or update the code that uses them. - Your words. The home page text lives in
app/page.jsxandlib/i18n.js. Every page has its own folder inapp/. - Your content. Blog posts, case studies, the resume, the guestbook and Ask come from a separate backend that you run yourself. It is not part of this repo. Point the site at it with
SITE_API_URL. Without it, the site still runs and those sections stay empty.
flowchart LR
A[Visitor] --> B[This site<br/>Next.js]
B --> C[(Your backend<br/>posts, contact, Ask)]
All settings are optional. Put them in a .env.local file in the project root, and never commit that file.
| Name | What it does |
|---|---|
SITE_API_URL |
Address of your backend |
GITHUB_ACCESS_TOKEN |
Lets the Repositories page read public GitHub data |
REVALIDATE_SECRET |
Protects the endpoint that refreshes cached pages |
HOTJAR_ID |
Optional analytics |
| Command | What it does |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build for production |
npm start |
Serve the production build |
npm run lint |
Check the code |
npm run format |
Format the code with Prettier |
npm run analyze |
Build and show bundle sizes |
Show folders
app/ one folder per page (home, work, blog, architecture, resume ...)
components/
content/ article layout and lists
demos/ the small interactive demos used in case studies
diagrams/ the architecture map
elements/ header, footer, buttons, forms
features/ bigger interactive parts: console, Ask, skyline, terminal ...
lib/ helpers: backend client, translations, link previews, markdown
public/ images, icons and fonts
styles/ global CSS
config.js your name, links and navigation
Next.js · React · Tailwind CSS · Headless UI · Shiki · unified · Inter
MIT. Use it, change it, ship it.

