A modern full-stack monorepo powered by Turborepo, featuring SvelteKit frontend and NestJS backend.
- SvelteKit - Modern web framework with SSR and SSG capabilities
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- NestJS - Progressive Node.js framework
- TypeScript - Type-safe JavaScript
- Express - Web server (via NestJS platform)
- @repo/shared-types - Shared TypeScript types for API contracts
- @repo/eslint-config - Shared ESLint configurations
- @repo/prettier-config - Shared Prettier configuration
- @repo/typescript-config - Shared TypeScript configurations
- Turborepo - High-performance build system for monorepos
- ESLint - Code linting
- Prettier - Code formatting
- Husky - Git hooks
- lint-staged - Run linters on staged files
- Docker - Containerization
- Node.js >= 20.0.0
- npm >= 10.0.0
turbo clean
npm installCreate .env files according to the .emv.example in apps/frontend and apps/backend folders.
Also, if you want to run application fully locally, run this commands:
cd apps/backend
docker-compose up -d
Run all apps in development mode from root:
npm run devThis will start:
- Frontend (SvelteKit) at http://localhost:3000
- Backend (NestJS) at http://localhost:3001
Build all apps:
npm run buildLint all workspaces:
npm run lintFormat all code:
npm run formatCheck formatting without making changes:
npm run format:checkRun tests across all workspaces:
npm run test# Create the network first
docker network create app_network
# Build and run all services
docker-compose up --buildThis will start:
- Frontend at http://localhost:3000
- Backend at http://localhost:3001
This project uses Husky to run git hooks:
- pre-commit: Automatically runs Prettier and ESLint on staged files using lint-staged
The pre-commit hook will:
- Format staged TypeScript, JavaScript, Svelte, JSON, and Markdown files
- Run ESLint with auto-fix on staged code files
- Fail the commit if there are any unfixable linting errors
Two GitHub Actions workflows run on every pull request:
- Runs ESLint across all workspaces
- Fails if there are any linting errors or warnings
- Checks code formatting using Prettier
- Fails if any files are not properly formatted
Both workflows must pass before a PR can be merged.
npm run dev- Start all apps in development modenpm run build- Build all appsnpm run lint- Lint all workspacesnpm run format- Format all codenpm run format:check- Check formatting without changesnpm run test- Run tests across all workspacesnpm run clean- Clean build artifacts
npm run dev- Start dev servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Lint frontend codenpm run check- Type-check Svelte files
npm run dev- Start dev server with watch modenpm run build- Build for productionnpm run start:prod- Start production servernpm run lint- Lint backend codenpm run test- Run unit testsnpm run test:e2e- Run end-to-end testsnpm run test:cov- Run tests with coverage
- Clone the repository
- Install dependencies:
npm install - Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Commit (pre-commit hooks will run automatically)
- Push and create a pull request
Your PR will be automatically checked for linting and formatting errors via GitHub Actions.
Private - All rights reserved
- Add content
- Add permissions in /admin/settings/users-permissions/roles -> Public