DEV Community

Cover image for πŸš€ I Built My Developer Portfolio With Next.js β€” Here’s What I Learned
Probal Dhali
Probal Dhali

Posted on

πŸš€ I Built My Developer Portfolio With Next.js β€” Here’s What I Learned

A developer portfolio should be more than a page containing your name, skills, and project links.

For me, it became an opportunity to build a complete modern web application and experiment with Next.js, component architecture, Tailwind CSS, Docker, responsive UI, and deployment workflows.

So I built my own developer portfolio from the ground up.

πŸ”— GitHub: https://github.com/probal2005/Developer-Portfolio


πŸ§‘β€πŸ’» Why I Built It

As developers, we often build projects but don't spend enough time thinking about how those projects are presented.

I wanted my portfolio to answer three questions quickly:

Who am I?

What can I build?

How can someone explore my work?

Instead of using a static template and changing the text, I wanted to understand and build the application architecture myself.


πŸ—οΈ The Technology Stack

The project is built around a modern web-development stack.

Core

  • Next.js
  • React
  • JavaScript / JSX
  • Tailwind CSS

Development

  • ESLint
  • npm
  • Component-based architecture

Deployment / Infrastructure

  • Docker
  • Separate development and production configuration

The repository also contains configuration and project files for managing the application, styling, linting, and containerized development.


🧩 Project Architecture

The project follows a component-oriented Next.js structure.

A simplified view looks like:

Developer-Portfolio
β”‚
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ pages & layouts
β”‚   └── application logic
β”‚
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ images
β”‚   └── static assets
β”‚
β”œβ”€β”€ utils/
β”‚   └── reusable utilities
β”‚
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ Dockerfile.dev
β”œβ”€β”€ package.json
β”œβ”€β”€ tailwind.config.js
β”œβ”€β”€ eslint.config.*
└── README.md
Enter fullscreen mode Exit fullscreen mode

The goal is to keep responsibilities separated rather than putting everything into a single page.


βš›οΈ Why Next.js?

I chose Next.js because it provides a strong foundation for building modern React applications.

It gives me access to concepts such as:

React
   ↓
Next.js
   ↓
Routing
   ↓
Application Structure
   ↓
Optimized Production Build
Enter fullscreen mode Exit fullscreen mode

For a portfolio, this is useful because the website needs to be:

  • Fast
  • Responsive
  • SEO-friendly
  • Maintainable
  • Easy to expand
  • Easy to deploy

And most importantly, the portfolio itself becomes another project I can demonstrate.


🎨 Tailwind CSS

For styling, I used Tailwind CSS.

Instead of maintaining a large collection of custom CSS files, the UI can be composed directly through utility classes.

For example:

<section className="flex min-h-screen items-center justify-center">
  <div className="max-w-4xl px-6">
    <h1 className="text-4xl font-bold">
      Hello, I'm a Developer
    </h1>
  </div>
</section>
Enter fullscreen mode Exit fullscreen mode

This approach makes it easier to iterate quickly on:

  • Layout
  • Spacing
  • Typography
  • Responsive behavior
  • Components
  • Visual hierarchy

🐳 Why Docker?

One of the parts I wanted to explore beyond the UI was containerization.

The repository includes Docker configuration for development and production.

Conceptually:

                 Docker
                   β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                     β”‚
        β–Ό                     β–Ό
 Development              Production
        β”‚                     β”‚
        β–Ό                     β–Ό
   Dev Container        Production Build
        β”‚                     β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β–Ό
              Application
Enter fullscreen mode Exit fullscreen mode

This gives me a more reproducible environment and makes the project easier to move between machines or deployment environments.


πŸ“± Responsive Design

A developer portfolio can't be designed only for a laptop.

It needs to work across:

Desktop
   ↓
Laptop
   ↓
Tablet
   ↓
Mobile
Enter fullscreen mode Exit fullscreen mode

So responsive layout is an important part of the implementation.

The goal is simple:

The content should remain readable and usable regardless of screen size.


🧠 What I Learned

Building this portfolio taught me that a portfolio project can actually be a useful engineering exercise.

Some of the things I learned or improved include:

1. Component thinking

Instead of treating the website as one large page:

Portfolio
Enter fullscreen mode Exit fullscreen mode

I started thinking in reusable pieces:

Portfolio
β”œβ”€β”€ Navigation
β”œβ”€β”€ Hero
β”œβ”€β”€ About
β”œβ”€β”€ Skills
β”œβ”€β”€ Projects
β”œβ”€β”€ Experience
β”œβ”€β”€ Contact
└── Footer
Enter fullscreen mode Exit fullscreen mode

That makes future changes easier.


2. Separating content from structure

A portfolio contains a lot of changing information:

Projects
Skills
Education
Experience
Links
Contact information
Enter fullscreen mode Exit fullscreen mode

Keeping the application organized makes updating that information much easier than repeatedly rewriting large UI sections.


3. Development and production are different problems

Running an application locally is not the same as deploying it.

That's one reason I explored Docker configurations for different environments.

The workflow becomes:

Development
    ↓
Testing
    ↓
Production Build
    ↓
Container
    ↓
Deployment
Enter fullscreen mode Exit fullscreen mode

This is a much more realistic way to think about modern web applications.


πŸ” Repository as the Technical Evidence

Rather than making claims about the project without proof, you can inspect the implementation directly.

The repository contains:

app/
public/
utils/
Dockerfile
Dockerfile.dev
package.json
Tailwind configuration
ESLint configuration
Enter fullscreen mode Exit fullscreen mode

You can explore the code, configuration, and project history here:

πŸ”— GitHub: https://github.com/probal2005/Developer-Portfolio


🚧 What I Want to Improve

The current version is not the final version.

There are several things I want to continue improving:

β†’ Better performance
β†’ Improved accessibility
β†’ More advanced animations
β†’ Better SEO
β†’ More reusable components
β†’ Improved project filtering
β†’ Better mobile experience
β†’ Automated deployment
β†’ Analytics
β†’ More polished case studies
Enter fullscreen mode Exit fullscreen mode

I also want the portfolio to become more than a collection of links.

Each major project should eventually have its own technical case study explaining:

Problem
   ↓
Architecture
   ↓
Implementation
   ↓
Challenges
   ↓
Solution
   ↓
Result
Enter fullscreen mode Exit fullscreen mode

πŸ“ˆ The Bigger Idea

One thing I've realized while building projects is:

Your portfolio is itself a software project.

It should demonstrate how you think about:

  • Architecture
  • UI/UX
  • Code organization
  • Performance
  • Deployment
  • Maintainability
  • Developer experience

That's the direction I'm trying to take with this project.


🀝 Feedback Wanted

I'd genuinely like feedback from other developers.

If you visit the repository, what would you improve?

Especially interested in:

UI/UX improvements?

Architecture improvements?

Next.js best practices I'm missing?

Performance optimizations?

Docker/deployment suggestions?

Accessibility improvements?

What would make this portfolio more impressive to a recruiter or engineering team?

Don't hesitate to point out things that are wrong.

Constructive criticism is one of the fastest ways to improve a project.


πŸ”— Check It Out

πŸ’» GitHub Repository

https://github.com/probal2005/Developer-Portfolio

If you find something interesting, feel free to:

⭐ Star it
πŸ› Open an issue
πŸ’‘ Suggest an improvement
πŸ”§ Fork it
🀝 Contribute

I'm continuing to improve it as I learn.


Final Thought

I didn't build this portfolio only to say:

"Here is my website."

I built it so that the website itself could demonstrate how I approach software development.

From:

React β†’ Next.js β†’ Components β†’ Tailwind β†’ Docker β†’ Deployment

there is always something new to learn.

And this project is still evolving.

What would you improve if you were reviewing this portfolio as a senior developer? πŸ‘‡

webdevelopment #nextjs #react #javascript #tailwindcss #docker #opensource #frontend #softwareengineering #developer

Top comments (0)