This is the starter kit for the lenne.Tech Nest Server.
It contains everything you need to get started right away and a few code examples to help you create your own modules.
In combination with Angular (see lenne.Tech Angular example incl. ng-base) the Nest Server is an ideal basis for your next project.
For efficient handling we recommend using the lenne.Tech CLI to initialize a new project and create modules and module elements.
This starter is regularly updated to the latest version of the Nest server. This makes it ideal for viewing the changes and applying them to your own project (see Update Notes).
-
Node.js incl. npm:
the runtime environment for your server -
Git:
the version control system for your source code -
MongoDB (or any other database compatible with MikroORM):
the database for your objects
1. Install the starter kit via CLI
$ npm install -g @lenne.tech/cli
$ lt server create <ServerName>
$ cd <ServerName>
$ npm run start:dev
Since the server is based on Nest, you can find all information about extending your server in the documentation of Nest.
To create a new Module with model, inputs, resolver and service you can use the CLI:
$ lt server module <ModuleName>
We are currently working on a documentation of the extensions and auxiliary classes that the lenne.Tech Nest Server contains. As long as this is not yet available, have a look at the source code. There you will find a lot of things that will help you to extend your server, such as:
- GraphQL scalars
- Filter and pagination
- Decorators for restrictions and roles
- Authorisation handling
- Ready to use user module
- Common helpers and helpers for tests
- ...
# Development
$ npm start
# Watch mode
$ npm run start:dev
# Production mode
$ npm run start:prod
# e2e tests
$ npm run test:e2e
Configuration for testing:
Node interpreter: /user/local/bin/node
Jest package: FULL_PATH_TO_PROJECT_DIR/node_modules/jest
Working directory: FULL_PATH_TO_PROJECT_DIR
Jest options: --config jest-e2e.json --forceExit
Configuration for debugging is:
Node interpreter: /user/local/bin/node
Node parameters: node_modules/@nestjs/cli/bin/nest.js start --debug --watch
Working directory: FULL_PATH_TO_PROJECT_DIR
JavaScript file: src/main.ts
see Debug.run.xml
Use yalc to include the NestJS server in the project.
- clone NestServer:
git clone https://github.com/lenneTech/nest-server.git
- go to the nest-server folder (
cd nest-server
), install the packages vianpm i
and start the nest server in watch & yalc mode:npm run watch
- link the nest server live package to this project via
npm run link:nest-server
and start the server:npm start
- unlink the nest-server live package and use the normal package again when you are done:
npm run unlink:nest-server
This project is prepared for deployment with deploy.party.
Example configuration for deploy.party (productive):
Key | Value |
---|---|
Source | GitLab |
Repository | my-repo |
Branch | main |
Registry | localhost |
Name | api |
URL | api.my-domain.com |
Type | Node |
Base image | node:20 |
Custom image command | RUN apt-get install -y tzdata curl |
ENV TZ Europe/Berlin | |
Base directory | ./projects/api |
Install command | npm install |
Build command | npm run build |
Start command | npm run dp:prod |
Healthcheck command | curl --fail http://localhost:3000/meta || exit 1 |
Port | 3000 |
Enable SSL | true |
The API and developer documentation can automatically be generated.
# generate and serve documentation
$ npm run docs
An update to a new Nest Sever version can be done as follows:
- set the new Nest Server version in the package.json under
{dependencies: {"@lenne.tech/nest-server": "NEW_VERSON" }}
. - run
npm run update
- adjust project according to changes in git history from nest server
- run tests via
npm run tests:e2e
, build vianpm run build
and start the server withnpm start
to check if everything is working
Since this starter is regularly updated, it is ideal as a template for the changes to be made in your own project. Simply compare the current version in the Git history of this starter with the version that was previously used in the project and adapt your own project accordingly.
- Documentation of extensions and auxiliary classes
Many thanks to the developers of Nest and all the developers whose packages are used here.
MIT - see LICENSE