backend

command module
v0.0.0-...-a644e2b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2022 License: MIT Imports: 6 Imported by: 0

README

Backend for the ClusterThruster project

ClusterThruster is a web application to simplify the organization of sharing cluster resources. Users will at least be able to register and subscribe to cluster resources. This project is built in the context of the course Scalable Systems at TU Berlin.

Technologies

The go server uses the fiber framework and is connected to a mongodb instance, using the mongo driver. Authentication/authorization is done using jwt and bcrypt.

Get started

To just run the backend in docker use

docker-compose up

Make sure that you adapt your .env as described below

To run the server use the command

go run main.go

To compile it run

go build -o ./build/server main.go

-o to specify output directory

To run tests execute

docker-compose -f ./tests/docker-compose.yml up -d

-For running a local instance of mongodb and the fake-smtp-server

go test -v ./tests -tags test

-v for verbosity ./tests because that's the directory where they live -tags test because the ability to drop the entire database is only compiled for testing

For debugging we recommend using delve

dlv debug github.com/PPSKSY-Cluster/backend

Docs

Docs are provided via swagger and located under the route /api/docs or under our github pages. You may regenerate them by running

swag init

but there is also a GitHub action running to update them and open pull requests.

See declarative comments if you want to add some information.

Configuration and secrets

Currently, all that is located in your .env in the root directory. Possible fields are :

key example value description
DB_NAME test The name of your database
MONGODB_URI mongodb://localhost:27017/test The connection string to your database
(change 'localhost' to 'mongo_db' when using docker)
PORT 8080 The port to start the server on
CLIENT_URL http://localhost:3000 The URL the client is requesting from
BCRYPT_COST 10 The Cost for bcrypt pw generation (>= 10)
RSA_KEY_SIZE 2048 The key size used when generating rsa key pairs
RELAY_HOST mail.gmx.net The name of the relay host used for transferring messages sent by the smtp client
Change to 'localhost' for testing
RELAY_PORT 587 The port of the relay host
Change to 5025 for testing
RELAY_USERNAME cluster-thruster@gmx.net The username of the account used on the relay host
Omit for testing
RELAY_PASSWORD changeme The password of the account used on the relay host
Omit for testing
NOTIFICATION_INTERVAL 3600 The interval in which the availability of wanted resources is checked (in seconds)
for testing use smaller intervals

For tests a seperate .env is needed in the corresponding folder ./tests.

Short note on mail

We've used the mail functionality with gmx as a relay host, but all other relays supporting username and password based authentication should be fine.
For testing purposes we use fake-smtp-server.

Repository structure

> api        // router and route handlers package
> auth       // authentication/authorization package
> build      // compiled files after running build command
> db         // the db package with the various interfaces
> dist       // needed by index.html
> docs       // docs as generated by swagger
> mail       // helper functions and templates for mail functionality
> tests      // api tests
.env
.gitignore
docker-compose.yml
Dockerfile
go.mod
go.sum
index.html   // for github pages
LICENSE
main.go      // server entry point, initalizes as starts everything

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL