Skip to main content

Project Structure

Marketlum is organized as a pnpm monorepo with the following structure:

my-market/
├── apps/
│ ├── api/ # NestJS API application
│ └── web/ # Next.js web application
├── .env # Environment variables
├── docker-compose.yml
├── package.json # Root scripts
└── pnpm-workspace.yaml

Apps

apps/api

The backend API built with NestJS. It imports @marketlum/core which provides all business logic, entities, and database configuration.

Key files:

  • src/main.ts — HTTP server entry point
  • src/cli.ts — CLI entry point (seed commands)
  • src/app.module.ts — Root module importing MarketlumCoreModule
  • src/data-source.ts — TypeORM data source for migrations

apps/web

The frontend built with Next.js 14 (App Router). It imports @marketlum/ui for all pages and components, and @marketlum/shared for type definitions.

Key files:

  • src/app/ — Next.js pages (login, admin dashboard, entity pages)
  • src/i18n/ — Internationalization configuration
  • src/middleware.ts — Auth redirect middleware

Packages (provided by Marketlum)

These packages are installed as dependencies from npm:

PackagePurpose
@marketlum/coreNestJS modules, entities, services, migrations, CLI commands
@marketlum/sharedZod schemas, TypeScript types, enums, state machines
@marketlum/uiReact components, pages, hooks, i18n messages

Root Scripts

ScriptDescription
pnpm devStart API and web in parallel
pnpm buildBuild all packages
pnpm migration:runRun database migrations
pnpm migration:revertRevert last migration
pnpm seed:adminSeed the admin user
pnpm seed:sampleSeed realistic sample data