heusalagroup / hgrs

Lightweight Repository Server implementing HTTP interface for our repository interface

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@heusalagroup/hgrs

HG RepositoryServer implements Repository interface as HTTP REST API.

It's intended as a persistent data store for our software projects. It's lightweight and minimal. We might make hgrs run on browser later.

It compiles as a single standalone JavaScript file. The only runtime dependency is NodeJS.

Our software is designed for scalable and fully managed serverless cloud environments, e.g. where the software must spin up fast, can run concurrently, and can be deployed without a downtime.

Another intended use case for hgrs is embedded devices (e.g. OpenWRT), for example.

Test driven development

See testing directory for our system tests.

Fetching source code

Fetching source code using SSH

git clone git@github.com:heusalagroup/hgrs.git hghs
cd hghs
git submodule update --init --recursive

Fetching source code using HTTP

Our code leans heavily on git submodules configured over ssh URLs. For http access, you'll need to set up an override to use https instead:

git config --global url.https://github.com/heusalagroup/.insteadOf git@github.com:heusalagroup/

This will translate any use of git@github.com:heusalagroup/REPO to https://github.com/heusalagroup/REPO.

This setting can be removed using:

git config --unset --global url.https://github.com/heusalagroup/.insteadOf

Build docker containers

This is the easiest way to use the backend.

docker-compose build

Start Docker environment

export BACKEND_JWT_SECRET='secretJwtString123'
export BACKEND_INITIAL_USERS='app:p4sSw0rd123'
docker-compose up

Once running, services will be available:

Start the server in development mode

FIXME: This isn't working right now. Use production mode.

npm start

Build the server

npm run build

Start the server in production mode

npm run start-prod

...and use http://0.0.0.0:8001

About

Lightweight Repository Server implementing HTTP interface for our repository interface

License:MIT License


Languages

Language:TypeScript 62.7%Language:JavaScript 26.3%Language:Shell 6.6%Language:Dockerfile 4.3%