Code Monkey home page Code Monkey logo

code-library-backend's Introduction

CODE Library backend

The aim of this project is to provide a library system for the management and borrowing of books. This repository contains the backend components of the system.

1. Repository structure

The backend consists of five microservices and a helpers library. The source code of each microservice resides in its own sub-directory, which is named after the microservice.

The table below provides an overview of the services.

Service Description
api REST API for user access.
book Book management functionalities.
borrow Borrow management functionalities.
identity Authentication and authorization functionalities.
notification Notification functionalities (e.g., email, Slack).

The helpers library resides in helpers/.

For more detailed information about how the services work together, refer to ARCHITECTURE.md. Specific implementation details about an individual service and how to run it can be found in the README.md, of the respective service directory.

For more details about our cyber security and privacy efforts please refer to SECURITY.md.

2. Building

There are two supported ways to build the services, either locally (see Chapter: 2.1 Building from Source) or inside a Docker container (see Chapter: 2.2 Building with Docker).

2.1 Building from Source

To build from source, please clone this repository and make sure you have a working installation of the Rust compiler and Cargo package manager, minimum version is 1.41. Please refer to the Rust website, to learn more about how to download and install Rust. Furthermore, there are required external dependencies (see Chapter: 2.1.1 External Dependencies).

Each command has to be executed in the repository root directory.

Execute cargo build to build all services or cargo build --bin=<service> command to build a specific one, while <service> is the name of the respective service. The helpers library will be automatically included, if necessary. To only build the helpers library, execute cargo build --lib=helpers.

2.1.1 External Dependencies

The table below, provides an overview of the required build dependencies.

Dependency name Minimum version Description
libssl 1.1.1 OpenSSL TLS library
libcrypto 1.1.1 OpenSSL cryptographic library
libpq 9.5 Postgres client library

Please refer to the individual dependency documentation, to learn more about how it is made available on your platform.

2.2 Building with Docker

To build a Docker image, please make sure you have obtained a copy of the repository and a working installation of Docker. Please refer to the Docker website, to learn more about how to download and install Docker.

Each command has to be executed in the repository root directory.

Execute docker build -f <service>/Dockerfile -t code-library-<service> . command, while <service> is the name of the respective service to build.

3. Development

All development has to happen inside of separate branches. Every branch name is prefixed with its purpose of creation. The used prefixes are the same as the Github labels for pull requests. The master branch is protected and requires pull request and an approval of at least one reviewer. The used merge method is rebasing.

4. Contributors

User Work done
alexeybi Database access, book endpoints, tests, CI/CD, GKE
code-mm Database schema, endpoint setup, logging, CORS, RPC setup, identity endpoints, OAuth 2.0, JWT, tests, CI/CD, refactoring
urhengulas Database schema, book endpoints, refactoring, CI/CD

code-library-backend's People

Contributors

mmerklinger avatar dependabot[bot] avatar urhengulas avatar alexeybi avatar dependabot-preview[bot] avatar

Stargazers

Navneet Yadav avatar ____tg avatar  avatar  avatar Chanthawat  Kiriyadee avatar バカ avatar Ion avatar Sacha Arbonel avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.