Entri is open source and contributions are very welcome — bug fixes, new features, docs improvements, file-format support, you name it.Documentation Index
Fetch the complete documentation index at: https://docs.nt3.io/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- Node 22 (
.nvmrcis in the repo) - pnpm 10 —
corepack enableis enough; the version is pinned viapackageManagerinpackage.json - Docker with the Compose plugin (Docker Desktop ships with both)
Get the code running
Repository layout
src/shared/. There is no top-level packages/ directory — Nx handles cross-project references.
Development conventions
Linting and formatting
Entri uses Biome for both linting and formatting. Run before pushing:Biome’s
useImportType rule rewrites import { Foo } to import type { Foo }, which breaks NestJS dependency injection (Nest reads runtime class identities via emitDecoratorMetadata). The rule is disabled for apps/api/** and apps/cli/** in biome.json, so write normal class imports there — no per-import biome-ignore comments needed. The rule remains enabled in apps/app/**.Tests
mongodb-memory-server for the database and a MockCacheService (apps/api/test/mocks/cache.service.mock.ts) for the cache — no real Mongo or Redis needed.
Internationalization
All user-facing strings in the web app must be wrapped with Lingui macros:pnpm i18n:extract to update the PO catalogs in apps/app/locales/{en,nl,fr}/messages.po.
GraphQL
The API generates the GraphQL schema from decorators (code-first). After changing resolvers or schema types, regenerate the frontend types:Docs
Documentation lives inapps/docs/ (Mintlify). Preview locally:
apps/docs/docs.json under the appropriate tab and group, otherwise they won’t appear in the sidebar.
If you change a REST endpoint, re-export the OpenAPI spec:
Pull request process
- Fork the repo and create a topic branch from
main. Use a descriptive branch name likefeat/typesense-searchorfix/import-empty-namespace. - Make focused commits. Conventional Commit prefixes (
feat:,fix:,chore:,docs:,refactor:) are the project convention. - Run
pnpm lintand the relevant tests before pushing. - Open a PR with a clear description of the change, the motivation, and a test plan. Link any related issues.
- Be patient with review — maintainers will respond, and the project also runs an automated AI reviewer that may post inline suggestions.
- Update docs if your change affects user-visible behavior, configuration, or the API surface. Use the
apps/docs/table inCLAUDE.mdas a guide.
Reporting bugs and requesting features
Open a GitHub issue and include:- A clear description of what you expected vs. what happened
- Steps to reproduce, ideally a minimal example
- Your Entri version (commit SHA or release tag), runtime (self-hosted Docker / Cloud Run / etc.), and Node/pnpm versions
- Relevant log output
SECURITY.md in the repo for the current contact.
Code of conduct
Be respectful. Be patient with newcomers. Assume good intent. The project follows the Contributor Covenant.Going further
- Self-hosting — production deployment details
- Quick Start — using the CLI as an end user
- GitHub repository