Repository navigation
Installation
This page takes you from an empty computer to the portfolio running at http://localhost:3000. If you have used Node.js before, the short version is all you need.
git clone https://github.com/umutxyp/Personal-Website.git
cd Personal-Website
npm install
npm run devThen open http://localhost:3000.
| What | Version | Why |
|---|---|---|
| Node.js | 22.17 or newer in the 22.x line, or 24 and newer |
package-lock.json pins @sparticuz/chromium 153.0.0 (needs Node ^22.17.0 || >=24.0.0) and puppeteer-core 25.11.0 (needs Node >=22.12.0). Next.js 16 itself needs Node >=20.9.0. |
| npm | the one that comes with Node.js | The repository ships a package-lock.json, so npm installs the exact versions it was tested with. |
| Git | any recent version | To clone the code. You can also download a ZIP from GitHub instead. |
| Internet access | during install and build |
npm install downloads packages. The build downloads the Geist fonts through next/font/google, reads live numbers from codeshare.me, calls the GitHub API and captures project screenshots. |
Note: There is no
enginesfield inpackage.json, so npm will not stop you from installing on an older Node.js. It only printsEBADENGINEwarnings. Use Node.js 22.17+ or 24+ to avoid odd failures later.
Check whether you already have it:
node -v
npm -vIf node -v prints v22.17.0 or higher (or v24.x or higher), skip to Step 2.
- Go to nodejs.org and download the LTS installer (
.msi). - Run it and keep the default options.
- Open a new PowerShell or Command Prompt window and run
node -v.
If you prefer the command line and have winget:
winget install OpenJS.NodeJS.LTS- Download the LTS installer (
.pkg) from nodejs.org and run it, or - Use a version manager such as nvm. After installing nvm by following its README:
nvm install --lts nvm use --lts
- Open a new Terminal window and run
node -v.
The Node.js package in many distributions is older than 22.17. The simplest way to get a current version is nvm. Install it by following its README, then:
nvm install --lts
nvm use --lts
node -vIf you want your own portfolio (recommended): click Fork on the repository page, then clone your fork:
git clone https://github.com/<your-username>/Personal-Website.git
cd Personal-WebsiteIf you only want to try it:
git clone https://github.com/umutxyp/Personal-Website.git
cd Personal-WebsiteWithout Git: on the repository page click Code → Download ZIP, unzip it, and open a terminal in the unzipped folder.
npm installTo install exactly what is in package-lock.json (useful on servers and in CI), use:
npm cinpm run devOpen http://localhost:3000. Pages reload as you edit files.
npm run build
npm startnpm run build creates an optimised build in .next/. npm start serves it, by default on port 3000. The first build takes longer than you might expect, because it captures a screenshot of every project's website (see Pages and Features).
These are the scripts in package.json:
| Command | Runs | What it does |
|---|---|---|
npm run dev |
next dev |
Starts the development server with hot reload |
npm run build |
next build |
Builds the site for production |
npm start |
next start |
Serves the production build |
npm run biome-write |
npx @biomejs/biome format --write . |
Formats every file with Biome |
npm run lint |
next lint |
Does not work on Next.js 16, which removed next lint. Use npx @biomejs/biome lint . instead. See Troubleshooting. |
npm run export |
next export |
Does not work; current Next.js versions removed next export. See Deployment. |
The site runs without any environment variables. You only need them for two optional features:
| Variable | Needed for |
|---|---|
PAGE_ACCESS_PASSWORD |
Password-protected pages |
CHROMIUM_PATH |
Using a Chrome or Chromium installed on your machine for project screenshots |
Put them in a file named .env.local in the project root, for example:
PAGE_ACCESS_PASSWORD=choose-a-strong-passwordRestart npm run dev after you change this file. Full details are on Configuration.
Note: The repository already contains a committed
.envfile that setsPAGE_ACCESS_PASSWORD, and its.gitignoredoes not list.envfiles. A value in.env.localtakes precedence over.env. Add a line.env*.localto.gitignorebefore you commit, so your password never ends up on GitHub.
The screenshot route uses the Chromium build from @sparticuz/chromium, which is made for Linux servers such as Vercel. On your own computer it may fail to start. That is fine: during npm run dev and npm run build, a failed capture falls back to the cover image in public/images/projects/, and the terminal shows a line starting with screenshot <slug> <- <url> failed:.
If you want real captures locally, point CHROMIUM_PATH at a browser you have installed. Typical locations are:
| OS | Typical path |
|---|---|
| Windows | C:\Program Files\Google\Chrome\Application\chrome.exe |
| macOS | /Applications/Google Chrome.app/Contents/MacOS/Google Chrome |
| Linux | the output of which google-chrome or which chromium
|
- Make It Yours: replace the example content with yours.
- Configuration: every setting in one place.
- Deployment: put it online.
Personal Website by Umut Bayraktar · MIT License · Codeshare
Start
Reference
Go live
Community