Personal portfolio website for Denis Tsimafeyenka (Denis Timofeenko), a software engineer working with React, Next.js, and TypeScript. Built as a single-page site that presents the bio, technical stack, featured projects, education, and contact information, with a downloadable CV.
🌐 Live: hardlywave.vercel.app 📦 Repository: github.com/hardlywave/portfolio-web
A clean, fast, fully static portfolio built on the modern Next.js stack. The site acts as a single-page CV + project showcase: all content lives on one route, with smooth anchor navigation between the Hero, Expertise, Projects, About, Education, and Contact sections. A PDF version of the CV is served directly from the site for recruiters and hiring managers.
ProjectCard components with tech-tag badges and links to GitHub + Live Demo./cv.pdf) served from public/.Framework & language
Styling
@tailwindcss/postcssapp/globals.cssTooling
eslint-config-next) + Prettiertypes/project.ts, types/stats.ts)Hosting
portfolio-web/
├── app/
│ ├── layout.tsx # Root layout (fonts, metadata, global wrappers)
│ ├── page.tsx # Single-page portfolio (Hero → Projects → About → Contact)
│ ├── globals.css # Global Tailwind + base styles
│ └── icon.png # Favicon
├── components/
│ ├── Navbar.tsx # Top nav with anchor links + Download CV
│ ├── Footer.tsx # Footer with contacts and copyright
│ └── ProjectCard.tsx # Reusable card for the Projects section
├── public/
│ ├── Avatar.png
│ ├── Avatar_transparent.png
│ ├── cv.pdf # Downloadable CV
│ ├── logo.svg
│ └── *.svg # Additional icons (file, globe, next, vercel, window)
├── types/
│ ├── project.ts # TS type for a project entry
│ └── stats.ts # TS type for the stats block
├── next.config.ts
├── tailwind.config.js
├── postcss.config.mjs
├── eslint.config.mjs
├── tsconfig.json
└── package.json
The content model is kept simple and type-safe: project cards and stats are driven by plain TypeScript-typed data, which makes adding a new project or tweaking a stat a one-line change.
Prerequisites: Node.js 18.18+ (recommended: Node 20+) and npm.
# 1. Clone the repository
git clone https://github.com/hardlywave/portfolio-web.git
cd portfolio-web
# 2. Install dependencies
npm install
# 3. Start the dev server (Turbopack)
npm run dev
Open http://localhost:3000 in your browser.
| Command | Description |
|---|---|
npm run dev | Start the Next.js dev server with Turbopack |
npm run build | Build for production with Turbopack |
npm start | Run the production build locally |
npm run lint | Lint the codebase with ESLint |
The site is deployed on Vercel with automatic builds on every push to main. Production URL: hardlywave.vercel.app.
To deploy your own fork:
The latest CV is bundled with the site and can be downloaded directly at:
👉 hardlywave.vercel.app/cv.pdf
Denis Tsimafeyenka - Software Engineer
© 2025 Denis Timofeenko. All rights reserved.