This project is intended to be used with the latest Active LTS release of Node.js. Api is documented via SwaggerUi.
To clone the repository, use the following commands:
git clone https://github.com/rijad992/github-task-project
cd github-task-project
npm i
Module defines single feature. Its defined by controller and entity. Controller is the one that defines our application routes and handles I/O. Entity handles business logic.
Services are defined in services folder and contain logic reused trough modules. Core folder contains all core features of the app as types, enums, models, decorators.
App code is locatedin src
folder. Application starter is inside bin
folder.
Unit tests are located inside __tests__
.
Modules, services and entities are registered to di-container on root level of the app. Unit tests are performed by jest.
To start local development server use npm run dev
script which utilizes nodemon.
Use .env.example
to create .env
file with your personal data.
Deployment of app is handled with Pulumi IaC written in typesript.
Infrastructure code is contained in infra
folder.
CI/CD is handled by Github actions which will on push lint, test and build code.
It will than test deployment with pulumi preview
before deploying container to AWS ECR.
Container is ran on AWS Fargate.
start
- starts server from build folder,dev
- starts local dev server with nodemon,clean
- remove coverage data, Jest cache and transpiled files,prebuild
- lint source files and tests before building,build
- transpile TypeScript to ES6,build:watch
- interactive watch mode to automatically transpile source files,lint
- lint source files and tests,prettier
- reformat files,test
- run tests,test:watch
- interactive watch mode to automatically re-run tests
Licensed under the APLv2. See the LICENSE file for details.