BOOT · TSIMAFEYENKA
> loading scene · calibrating 3D uniforms
DENIS_TPORTFOLIO · v1.0
ONLINESYS // PROJECTS
> SYS.FEED · PROJECTS
SOFTWARE ENGINEER · REACT / NEXT.JS
REC 00:00:42
SIGNAL // NOMINAL
⟨ / ⟩ · 1-5 · ARROWS
TSIMAFEYENKA // v1.0
← BACK
> 03 // PROJECT.DETAIL
PERSONAL PORTFOLIO - DENIS TSIMAFEYENKA
PERSONAL PORTFOLIO - DENIS TSIMAFEYENKA
NO.PREVIEW
TECH.STACK
TypeScript
// README.MD
Personal Portfolio - Denis Tsimafeyenka

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


🎯 About

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.


✨ Sections & Features
  • Hero - name, role, short pitch, primary CTAs (Hire Me / View Projects), and avatar.
  • "Trusted by" - logos of companies associated with past work.
  • Stats bar - years of experience, number of projects, and number of tech stacks used.
  • Technical Expertise - three-column breakdown of Frontend, Backend, and DevOps skills.
  • Projects - featured work (MERN Blog Portfolio, Valorant Wikipedia, and more) presented through reusable ProjectCard components with tech-tag badges and links to GitHub + Live Demo.
  • About Me - short narrative section describing focus and direction.
  • Education - timeline of degrees (MSCS at SNHU, BS at BSUIR).
  • Contact - email and GitHub links.
  • Download CV - direct PDF download (/cv.pdf) served from public/.
  • Responsive layout with anchor-based in-page navigation.

🛠 Tech Stack

Framework & language

Styling

  • Tailwind CSS 4 via @tailwindcss/postcss
  • PostCSS + Autoprefixer
  • Global styles in app/globals.css

Tooling

  • ESLint (eslint-config-next) + Prettier
  • Strict TypeScript types for content (types/project.ts, types/stats.ts)

Hosting


📂 Project Structure
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.


🚀 Running Locally

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.

Available scripts
CommandDescription
npm run devStart the Next.js dev server with Turbopack
npm run buildBuild for production with Turbopack
npm startRun the production build locally
npm run lintLint the codebase with ESLint

🚢 Deployment

The site is deployed on Vercel with automatic builds on every push to main. Production URL: hardlywave.vercel.app.

To deploy your own fork:

  1. Push the repository to your GitHub account.
  2. Import the project in the Vercel dashboard.
  3. Accept the default Next.js build settings - no environment variables required.

📄 CV

The latest CV is bundled with the site and can be downloaded directly at:

👉 hardlywave.vercel.app/cv.pdf


👤 Contact

Denis Tsimafeyenka - Software Engineer


© 2025 Denis Timofeenko. All rights reserved.