Introduction

Every developer has their own way of managing projects. A well-defined approach to software development can make a huge difference in productivity. In this post, I'll share my approach when working on a project.

Boilerplate

After working on several projects, i realized that setting up the initial configuration every time was time-consuming and repetitive. Manually configuring everything over and over felt inefficient. To solve this, i created my own boilerplate with preconfigured setup with all the tools i need. By using this boilerplate, i save hours on setup and repetitive configurations, i can start coding immediately and focus on building features.

Check out my boilerplate: https://github.com/jeeehaan/nextjs-starter-template

Here’s what my boilerplate include and why i choose these tools:

  1. Core Framework and Libraries
  1. Styling and UI Components
  1. Code Quality
  1. Deployment and Automation

Project Structure

Here’s my project structure look like, i follow feature-based architecture.

image

app, contains core applications setup

components, contains reusable UI component

configs, contains configurations like API endpoints, environment-specific values

libs, contains reusable utility functions

modules, contains featured-based directories

stores, contains global state

styles, contains global styles

types, contains TypeScript type definitions and interface

utils, contains helper functions and wrappers for third party library

image

In modules, each feature or domain of the application is organized into its own directory. Inside each feature folder has the following structure:

I follow a feature-based architecture for several reasons:

So, that’s how i manage my project full-stack project. Of course, no approach is perfect, and I'm always iterating.