Thank you for your interest in contributing! This document explains how to get set up, what the standards are, and how the contribution process works.
- Getting Started
- Development Workflow
- Code Standards
- Submitting a Pull Request
- Reporting Issues
- License
- Contributors
- Node.js 22.x (see
enginesinpackage.json) - Docker — required to run Supabase locally
- Supabase CLI —
npm install -g supabaseor usenpx supabase
# 1. Fork and clone the repository
git clone https://github.com/nxtgrid/nxt-backend.git
cd nxt-backend
# 2. Install dependencies
npm install
# 3. Copy environment variable files and fill them in
cp apps/tiamat/.env.example apps/tiamat/.env
cp apps/talos/.env.example apps/talos/.env
cp apps/loch/.env.example apps/loch/.env
cp apps/yeti/.env.example apps/yeti/.env
# 4. Start Supabase locally (requires Docker)
npx supabase start
# 5. Run the app you want to work on
npx nx serve tiamatThis is an Nx monorepo. Each app (tiamat, talos, loch, yeti) and
shared library (core, helpers, timeseries) is developed independently but
shares the same root package.json and TypeScript configuration.
Serve a specific app in watch mode:
npx nx serve <app-name>Build a specific app:
npx nx build <app-name>All .ts files must pass ESLint with zero warnings and TypeScript type checking
before a commit is accepted. This is enforced automatically by a pre-commit hook
(Husky + lint-staged).
You can run the checks manually at any time:
npm run lint # ESLint + TypeScript type check
npm run eslint # ESLint only
npm run check-types # TypeScript type check onlyIf your commit is rejected by the pre-commit hook, fix the reported issues and try again — do not skip the hook.
- Write TypeScript throughout — avoid
anywhere possible - Follow existing NestJS module structure (controller / service / module)
- Keep services focused on a single responsibility
- Do not commit credentials, secrets, or environment-specific values — use
environment variables and update the relevant
.env.examplefile
- Create a feature branch from
main:git checkout -b feat/your-feature-name
- Make your changes, ensuring all linting and type checks pass
- Write a clear commit message describing why the change was made
- Open a pull request against
mainwith a description of the change and any relevant context (related issues, screenshots, etc.) - Be responsive to review feedback
Please open a GitHub issue for:
- Bug reports (include steps to reproduce, expected vs actual behaviour)
- Feature requests (describe the use case, not just the solution)
- Questions about architecture or design decisions
By contributing to NXT backend, you agree that your contributions will be licensed under the same terms as the project — the Mozilla Public License 2.0. See LICENSE for the full text.
See CONTRIBUTORS.md — your name will be added there after your first merged pull request.