🚀 Introduction

Forjnot is a clean, scalable, and professional monorepo template built for developers who want a solid foundation for both backend and frontend apps using modern tooling.

It aims to eliminate the repetitive setup work and lets you focus on building features right away — while still being highly customizable and production-ready.

🏗️ Project Structure

forjnot/
├── apps/
│   ├── backend/         # NestJS application
│   └── frontend/        # Next.js application
├── packages/
│   ├── shared-configs/         # Shared configurations
│   ├── shared-constants/       # Shared constants
│   ├── shared-dtos/            # Shared DTOs
│   ├── shared-env/             # Environment configuration
│   ├── shared-logger/          # Shared logger
│   ├── shared-types/           # Shared TypeScript types
│   └── shared-utils/           # Shared utilities
└── package.json

📁 Key Directories Explained

Directory Functions

apps/backend/

NestJS application with modular architecture:

backend/
├── src/
│   ├── modules/           # Feature modules (auth, users, etc.)
│   │   ├── auth/         # (Example) Authentication module
│   │   │   ├── dto/     # Data Transfer Objects
│   │   │   ├── guards/  # Auth guards
│   │   │   └── ...      # Other auth files & folders
│   │   └── users/        # (Example) Users module
│   │       ├── dto/     # User DTOs
│   │       ├── entities/# User entities
│   │       └── ...      # Other user files & folders
│   ├── app.controller.spec.ts  # Main controller tests
│   ├── app.controller.ts       # Main application controller
│   ├── app.module.ts          # Root application module
│   ├── app.service.ts         # Main application service
│   └── main.ts               # Application entry point
├── test/                    # e2e tests
├── nest-cli.json           # NestJS CLI configuration
└── tsconfig.json           # TypeScript configuration

apps/frontend/

Next.js application with app directory:

frontend/
├── public/                 # Static assets
├── src/
│   ├── app/                    # Next.js app directory
│   │   ├── (auth)/            # (Example) Authentication routes group
│   │   ├── (dashboard)/       # (Example) Dashboard routes group
│   │   ├── docs/              # (Example) Documentation pages
│   │   ├── layout.tsx         # Root layout
│   │   └── page.tsx           # Home page
│   ├── components/            # React components
│   │   ├── dashboard/        # (Example) Dashboard components
│   │   ├── auth/             # (Example) Authentication components
│   │   ├── docs/             # (Example) Documentation components
│   │   ├── landing/          # (Example) Landing page components
│   │   ├── shared/           # (Example) Shared/common components
│   │   └── ui/               # UI component library
│   ├── hooks/                # Custom React hooks
│   │   ├── auth/            # (Example) Authentication related hooks
│   │   ├── data/            # (Example) Data fetching hooks
│   │   └── ui/              # (Example) UI related hooks
│   ├── lib/                  # Utilities and helpers
│   │   ├── utils.ts         # (Example) Helper functions
│   │   └── docs.ts          # (Example) Documentation utilities
│   ├── services/            # API and external services
│   │   ├── api/            # (Example) API client and endpoints
│   │   ├── auth/           # (Example) Authentication services
│   │   └── external/       # (Example) Third-party service integrations
│   ├── styles/              # Styling files
│   │   ├── globals.css     # Global styles
│   │   └── themes/         # (Example) Theme configurations
│   ├── types/               # Frontend-specific types
│   │   ├── components.ts  # (Example) Component prop types
│   │   └── common.ts      # (Example) Common type definitions
│   └── config/             # Frontend configurations
│       ├── api.ts         # (Example) API configuration
│       ├── auth.ts        # (Example) Auth configuration
│       └── site.ts        # (Example) Site-wide configuration
├── tailwind.config.ts       # Tailwind configuration
└── next.config.ts           # Next.js configuration

packages/

Shared packages for code reuse across frontend and backend:

packages/
├── shared-configs/         # Shared configurations
├── shared-constants/       # Shared constants
├── shared-dtos/            # Shared DTOs
├── shared-env/             # Environment configuration
├── shared-logger/          # Shared logger
├── shared-types/           # Shared TypeScript types
└── shared-utils/           # Shared utilities

💡 What is Forjnot?

  • Shared packages for configuration, types, DTOs, environment, and utilities.
  • NestJS backend with modular architecture and optional CLI module generator.
  • Optional Next.js frontend set up with Tailwind CSS and app directory support.
  • Biome for formatting and linting — clean, fast, and consistent code.
  • Scalable folder structure that feels organized from day one.
  • Developer tools like Turbo, PM2, health checks, and more.
  • Optional docs branch for public documentation and Vercel deployment.

🌟 Why Forjnot?

  • Skip the boilerplate — common patterns and configs are already done for you.
  • Monorepo-first — built with Turborepo to handle multiple apps and packages smoothly.
  • Clean architecture — promotes separation of concerns, reusability, and testability.
  • Fast development — generate modules and folders with a single CLI command.
  • Modern DX — everything works out of the box with Biome, Turbo, pnpm, and more.

👥 Who is it for?

Developers building fullstack apps using NestJS and optionally Next.js. Teams looking to scale with modular backend services and shared logic. Anyone who wants a professional starting point that actually saves time.

📦 What's Included

  • apps/backend – A NestJS application built with best practices.
  • apps/frontend – Optional Next.js app with Tailwind and app dir support.
  • packages/ – Shared packages like env, config, types, logger, etc.
  • Dev tooling – Biome, Turbo, PM2, Git hooks, and more.