Skip to content

ChakshuGautam/stencil

Repository files navigation

Stencil

Microservice boilerplate for SamagraX

Open in Gitpod

github action status

Description

Microservice boilerplate for SamagraX

Full documentation here

Table of Contents

Features

Quick run

git clone --depth 1 https://github.com/ChakshuGautam/stencil.git my-app
cd my-app/
cp env-example .env
docker compose up setup
docker compose up -d

For checking status of containers run

docker compose logs

Logging

Stencil provides support for logging in 2 modes:

Axiom Logging

Axiom provides structured, customizable logging with features like custom log levels, log message formatting, filtering, and flexible storage options. Make sure to replace the values of DATASET_NAME and TOKEN in logging/logstash/pipeline/axiom.conf

ELK (Elasticsearch, Logstash, Kibana) Logging

ELK offers centralized log management using Elasticsearch for storage, Logstash for parsing and transformation, and Kibana for real-time analytics, custom dashboards, and scalability. Stencil provides out of the box support for ELK stack. Once all the containers are up, go to https://localhost:5601 to access kibana console. The default username is elastic and password is changeme which can be configured through .env .

Comfortable development

git clone --depth 1 https://github.com/ChakshuGautam/stencil.git my-app
cd my-app/
cp env-example .env

Change DATABASE_HOST=postgres to DATABASE_HOST=localhost

Change MAIL_HOST=maildev to MAIL_HOST=localhost

Run additional container:

docker compose up -d postgres adminer maildev
npm install

npm run migration:run

npm run seed:run

npm run start:dev

Dockerized Development with Visual Studio Code

Streamline your development process by running your project inside a Docker container. Follow these steps to get started:

  1. Open the Project in Visual Studio Code

    • Launch Visual Studio Code and open your project.
  2. Open the Project in a Docker Container

    • To work within a Docker container, press Control+P to bring up the command palette.
    • Type in > Reopen in container and select it. This will open your project inside a Docker container.

Troubleshooting

If you encounter the following error upon starting the project:

node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module '/root/.vscode-server/data/User/workspaceStorage/b2d44a48cb3eb862caab3a51d86d99df/ms-vscode.js-debug/bootloader.js'
Require stack:
- internal/preload

You can resolve it by following these steps:

  1. Disable Auto Attach in VS Code

    • Open the command palette in Visual Studio Code.
    • Type > Toggle Auto Attach and set it to "Disabled."
  2. Re-enable Auto Attach

    • Open the command palette again.
    • Type > Toggle Auto Attach and set it to "Always" or "Smart".

Links

Automatic update of dependencies

If you want to automatically update dependencies, you can connect Renovate for your project.

Tests in Docker

docker compose -f docker-compose.ci.yaml --env-file env-example -p ci up --build --exit-code-from api && docker compose -p ci rm -svf

Test benchmarking

docker run --rm jordi/ab -n 100 -c 100 -T application/json -H "Authorization: Bearer USER_TOKEN" -v 2 http://<server_ip>:3000/api/v1/users

Documentation

You can follow the below steps for building the docs locally:

  1. Navigate to the docs directory
cd docs
  1. Install dependencies
npm install
  1. Run the docs website
npm start

Apart from accessing the docs locally, you can also refer to the online documentation of stencil