Getting Started

Project Structure Guide

Understand NextJS Base Directory Structure in 5 Minutes

Directory Overview ยท Core Directories ยท Naming Conventions


๐Ÿ“ Directory Overview

nextjs-base/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ app/                         # Next.js App Router
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ (admin)/                # Admin Panel Module
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ admin/              # Admin Pages
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ actions/            # Admin Server Actions
โ”‚   โ”‚   โ”œโ”€โ”€ layout.js              # Admin Layout
โ”‚   โ”‚   โ””โ”€โ”€ admin-styles.css      # Admin Styles
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ (client)/               # Frontend Module
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ [locale]/           # Multi-language Routes
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ actions/            # Frontend Server Actions
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ api/                    # API Routes
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ auth/               # Authentication API
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ upload/             # Upload API
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ v1/                 # REST API v1
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ globals.css                # Global Styles
โ”‚   โ””โ”€โ”€ page.js                    # Root Page (Redirect)
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ components/                  # React Components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ admin/                  # Admin Components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ client/                 # Frontend Components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ common/                 # Common Components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ motion/                 # Animation Components
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ ui/                     # UI Base Components
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ lib/                        # Core Library
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ api/                    # API Utilities
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ auth/                   # Authentication
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ core/                   # Core Features
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ database/               # Database Utilities
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ function/               # Utility Functions (nb.pubfn)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ logging/                # Logging System
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ upload/                 # Upload Utilities
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ validation/             # Validation Utilities
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ prisma/                     # Prisma ORM
โ”‚   โ””โ”€โ”€ schema.prisma              # Database Model Definition
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ i18n/                       # Internationalization
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ messages/               # Translation Files
โ”‚   โ”œโ”€โ”€ config.js                  # i18n Configuration
โ”‚   โ””โ”€โ”€ request.js                 # Request Configuration
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ templates/                  # Development Templates
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ crud/                   # CRUD Templates
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ docs/                       # Project Documentation
โ”œโ”€โ”€ ๐Ÿ“‚ public/                     # Static Assets
โ”œโ”€โ”€ ๐Ÿ“‚ hooks/                      # React Hooks
โ”œโ”€โ”€ ๐Ÿ“‚ config/                     # Configuration Files
โ””โ”€โ”€ ๐Ÿ“‚ scripts/                    # Script Tools

๐ŸŽฏ Core Directories

app/(admin)/ - Admin Panel

app/(admin)/
โ”œโ”€โ”€ admin/                          # Pages Directory
โ”‚   โ”œโ”€โ”€ rbac/                       # RBAC Permission Management
โ”‚   โ”‚   โ”œโ”€โ”€ roles/page.js          # Role Management
โ”‚   โ”‚   โ”œโ”€โ”€ permissions/page.js    # Permission Management
โ”‚   โ”‚   โ”œโ”€โ”€ menus/page.js          # Menu Management
โ”‚   โ”‚   โ””โ”€โ”€ users/page.js          # User Management
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ system/                     # System Management
โ”‚   โ”‚   โ”œโ”€โ”€ action_logs/page.js    # Action Logs
โ”‚   โ”‚   โ””โ”€โ”€ assets/page.js         # Asset Management
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ [your-module]/              # Your Module
โ”‚       โ””โ”€โ”€ [resource]/page.js
โ”‚
โ”œโ”€โ”€ actions/                        # Server Actions
โ”‚   โ”œโ”€โ”€ dao/                        # Data Access Object
โ”‚   โ”‚   โ””โ”€โ”€ base.js                # BaseDAO
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ rbac/                       # RBAC Actions
โ”‚   โ”‚   โ”œโ”€โ”€ crud-action.role.js
โ”‚   โ”‚   โ”œโ”€โ”€ crud-action.permission.js
โ”‚   โ”‚   โ””โ”€โ”€ crud-action.menu.js
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ [module]/                   # Your Module
โ”‚       โ””โ”€โ”€ crud-action.[resource].js
โ”‚
โ”œโ”€โ”€ layout.js                       # Admin Layout
โ””โ”€โ”€ admin-styles.css               # Admin Styles

Naming Conventions

TypeConventionExample
Page DirectoryPlural Formroles/, users/, posts/
Action Filecrud-action.{resource}.jscrud-action.role.js
Action Function{prefix}{Action}{Resource}ActionsysGetRoleListAction

app/(client)/ - Frontend Module

app/(client)/
โ”œโ”€โ”€ [locale]/                       # Multi-language Routes
โ”‚   โ”œโ”€โ”€ layout.js                  # Frontend Layout
โ”‚   โ”œโ”€โ”€ page.js                    # Home Page
โ”‚   โ”œโ”€โ”€ auth/                      # Authentication Pages
โ”‚   โ”‚   โ”œโ”€โ”€ login/page.js
โ”‚   โ”‚   โ””โ”€โ”€ register/page.js
โ”‚   โ””โ”€โ”€ [your-page]/page.js
โ”‚
โ””โ”€โ”€ actions/                        # Frontend Actions
    โ”œโ”€โ”€ user-actions.js            # User Related
    โ””โ”€โ”€ [module]-actions.js

components/ - React Components

components/
โ”œโ”€โ”€ admin/                          # Admin Components
โ”‚   โ”œโ”€โ”€ smart-crud-page.jsx        # ๐ŸŒŸ Universal Table
โ”‚   โ”œโ”€โ”€ smart-form/                # ๐ŸŒŸ Universal Form
โ”‚   โ”‚   โ”œโ”€โ”€ index.js
โ”‚   โ”‚   โ”œโ”€โ”€ smart-form.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ smart-modal-form.jsx
โ”‚   โ”‚   โ””โ”€โ”€ smart-drawer-form.jsx
โ”‚   โ”œโ”€โ”€ admin-layout.jsx           # Admin Layout
โ”‚   โ”œโ”€โ”€ icon-picker.jsx            # Icon Picker
โ”‚   โ”œโ”€โ”€ json-editor.jsx            # JSON Editor
โ”‚   โ”œโ”€โ”€ markdown-editor.jsx        # Markdown Editor
โ”‚   โ””โ”€โ”€ uploads/                   # Upload Components
โ”‚
โ”œโ”€โ”€ client/                         # Frontend Components
โ”‚   โ”œโ”€โ”€ layout/                    # Layout Components
โ”‚   โ””โ”€โ”€ home/                      # Home Page Components
โ”‚
โ”œโ”€โ”€ common/                         # Common Components
โ”‚   โ”œโ”€โ”€ LanguageSwitcher.jsx       # Language Switcher
โ”‚   โ””โ”€โ”€ theme-provider.jsx         # Theme Provider
โ”‚
โ””โ”€โ”€ ui/                            # UI Base Components (shadcn/ui)
    โ”œโ”€โ”€ button.jsx
    โ”œโ”€โ”€ input.jsx
    โ””โ”€โ”€ ...

lib/ - Core Library

lib/
โ”œโ”€โ”€ core/                           # ๐ŸŒŸ Core Features
โ”‚   โ”œโ”€โ”€ action-wrapper.js          # Action Wrapper
โ”‚   โ”œโ”€โ”€ crud-helper.js             # CRUD Factory Functions
โ”‚   โ””โ”€โ”€ permission-naming.js       # Permission Naming Parser
โ”‚
โ”œโ”€โ”€ database/                       # Database
โ”‚   โ”œโ”€โ”€ prisma.js                  # Prisma Client
โ”‚   โ””โ”€โ”€ selects.js                 # Join Query Utilities
โ”‚
โ”œโ”€โ”€ function/                       # ๐ŸŒŸ Utility Functions (nb.pubfn)
โ”‚   โ”œโ”€โ”€ index.js                   # Export Entry
โ”‚   โ”œโ”€โ”€ array.js                   # Array Utilities
โ”‚   โ”œโ”€โ”€ object.js                  # Object Utilities
โ”‚   โ”œโ”€โ”€ string.js                  # String Utilities
โ”‚   โ”œโ”€โ”€ time.js                    # Time Utilities
โ”‚   โ”œโ”€โ”€ validator.js               # Validation Utilities
โ”‚   โ””โ”€โ”€ tree.js                    # Tree Utilities
โ”‚
โ”œโ”€โ”€ auth/                           # Authentication
โ”‚   โ”œโ”€โ”€ auth.js                    # Better Auth Configuration
โ”‚   โ”œโ”€โ”€ admin-auth.js              # Admin Authentication
โ”‚   โ””โ”€โ”€ permission-auth.js         # Permission Authentication
โ”‚
โ”œโ”€โ”€ api/                            # API Utilities
โ”‚   โ”œโ”€โ”€ action-client.js           # Action Client
โ”‚   โ””โ”€โ”€ api-auth.js                # API Authentication
โ”‚
โ””โ”€โ”€ validation/                     # Validation
    โ””โ”€โ”€ schema-validator.js        # Schema Validator

prisma/ - Database Models

prisma/
โ””โ”€โ”€ schema.prisma                   # Data Model Definition
    โ”‚
    โ”œโ”€โ”€ User                       # User
    โ”œโ”€โ”€ Session                    # Session
    โ”œโ”€โ”€ Account                    # OAuth Account
    โ”‚
    โ”œโ”€โ”€ Role                       # Role
    โ”œโ”€โ”€ Permission                 # Permission
    โ”œโ”€โ”€ Menu                       # Menu
    โ”‚
    โ”œโ”€โ”€ Asset                      # Asset Files
    โ”œโ”€โ”€ ActionLog                  # Action Log
    โ”‚
    โ””โ”€โ”€ [YourModel]                # Your Model

๐Ÿ“ Naming Conventions

File Naming

TypeConventionExample
Page Filepage.jsapp/(admin)/admin/roles/page.js
Layout Filelayout.jsapp/(admin)/layout.js
Action Filecrud-action.{resource}.jscrud-action.role.js
Component Filekebab-case.jsxsmart-crud-page.jsx
Utility Filekebab-case.jsaction-wrapper.js

Function Naming

TypeConventionExample
Server Action{prefix}{Action}{Resource}ActionsysGetRoleListAction
ComponentPascalCaseSmartCrudPage
Utility FunctioncamelCasecreateCrudActions
ConstantUPPER_SNAKE_CASEDEFAULT_PAGE_SIZE

Action Prefixes

PrefixPermission LevelDescription
pubPUBLICPublic access, no login required
authAUTHLogin required
sysSYSTEMAdmin permission + RBAC check required
_PRIVATEInternal function, cannot be called directly

๐Ÿ”„ Data Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        Frontend Page                         โ”‚
โ”‚  app/(admin)/admin/roles/page.js                           โ”‚
โ”‚  - Uses SmartCrudPage Component                             โ”‚
โ”‚  - Configures fieldsConfig                                  โ”‚
โ”‚  - Passes actions                                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     Server Actions                          โ”‚
โ”‚  app/(admin)/actions/rbac/crud-action.role.js              โ”‚
โ”‚  - Created using createCrudActions                         โ”‚
โ”‚  - Automatically wrapped with wrapAction                    โ”‚
โ”‚  - Automatic permission check and logging                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        BaseDAO                              โ”‚
โ”‚  app/(admin)/actions/dao/base.js                           โ”‚
โ”‚  - Universal Data Access Object                            โ”‚
โ”‚  - Handles CRUD Operations                                 โ”‚
โ”‚  - Field Filtering, Validation, Hooks                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     Prisma Client                           โ”‚
โ”‚  lib/database/prisma.js                                    โ”‚
โ”‚  - Type-safe Database Operations                            โ”‚
โ”‚  - Auto-generated Query Methods                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      PostgreSQL                             โ”‚
โ”‚  prisma/schema.prisma                                      โ”‚
โ”‚  - Data Model Definition                                    โ”‚
โ”‚  - Relationship Mapping                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜