App Folder Structure

How I usually structure my app folder

4 views

Folder Structure

bash
- src
  - app/pages/routes
  - lib
    - components
      - ui/shared
      - [domain/feature]
    - constants
    - hooks
    - layouts
    - services/repository
    - stores
    - styles
    - types/models
    - utils

lib

lib is where all the application building block lives. I like to separate building blocks from framework specific folders (app / pages).

components

components is where the UI building block lives. Sometimes I separate it further into shared and scope specific.

constants

all reusable or root level constants are maintained through this folder.

hooks

hooks is where I put reusable or page specific hooks. Sometimes I put it inside hooks folder, sometimes I put it under components if the hook is component specific.

layouts

where I put the app root or reusable layouts / page wrappers.

services

where I put services code (data fetching, API / third party integrations, etc). Sometimes I name the folder repository

stores

where I maintain global stores

styles

where I put root / global level styling / theme files.

types

where I maintain global / shared typings / schemas used across the app. Sometimes I name this folder models

utils

where I put all reusable utilities.