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:
- Core Framework and Libraries
- Next.js
- TypeScript
- Prisma
- NextAuth
- Styling and UI Components
- Tailwind
- Shadcn
- Code Quality
- Eslint
- Prettier
- Husky
- Deployment and Automation
- Docker
- GitHub Actions
Project Structure
Here’s my project structure look like, i follow feature-based architecture.

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

In modules, each feature or domain of the application is organized into its own directory. Inside each feature folder has the following structure:
- actions, contains the business logic
- components, contains UI element related to that feature
- services, contains the database queries
I follow a feature-based architecture for several reasons:
- Easy Maintenance, since all related files for a specific feature are grouped together making changes becomes more efficient. Everything you need is right there, reducing the time and effort spent searching across the projects
- Team Collaboration, in a team setting a feature-based allows team members to work independently on different features without stepping on each other’s toes
So, that’s how i manage my project full-stack project. Of course, no approach is perfect, and I'm always iterating.