27

GitHub - mtbarta/monocorpus: A notepad for software and machine learning

 5 years ago
source link: https://github.com/mtbarta/monocorpus
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

MonoCorpus

https://mtbarta.github.io/monocorpus/

MonoCorpus is a tool to record code, notes, and papers during the development of software and machine learning algorithms. It lets you lookup previous bugs and relevant notes to quickly solve new problems and bugs.

This repo is a collection of microservices and scripts to deploy the service. It is being reorganized during its transition from a private repo, so some things may be nonfunctional or pointing to nonexistent code.

MonoCorpus example

Key Features

  • Full Text Search
  • Chronological ordering of notes
  • Title Filters
  • import Arxiv abstracts
  • KaTeX support
  • Markdown support
  • Image support (beta)

How it Works

MonoCorpus uses Vuejs on the frontend, GraphQL as a gateway layer between HTTP and grpc calls, and golang microservices in the backend.

MonoCorpus relies on Keycloak for user auth, traefik as a proxy to the backend, and Elasticsearch for full text search.

Microservices:

  • Notes
    • CRUD functions to Mongo.
  • Gateway
    • GraphQL interface to notes and search.

Setup

Monocorpus should be installed inside of your $GOPATH at github.com/mtbarta/monocorpus.

create an .env file in monocorpus/docker. It should have the following variables:

ENV=dev
NETWORK=docker
HOST=localhost

POSTGRES_DATA_LOC=/data/postgres
POSTGRES_USER=loginUserAdmin
POSTGRES_PASSWORD=adminpw

MONGO_DATA_LOC=/data/mongo
SEARCH_DATA_LOC=/data/es

KEYCLOAK_USER=admin
KEYCLOAK_PASSWORD=admin

KEY=INSERT_KEYCLOAK_REALM_PUBLIC_KEY

Deployment requires the gateway to be aware of keycloak's public key for token decryption.

  1. docker-compose up -d keycloak to bring up the keycloak instance.
  2. Find the notes realm public key and replace the dummy key in the .env file.
  3. Elasticsearch may need permissions to write to your elasticsearch data directory. Run chown -R 1000:1000 es to fix this.
  4. Keycloak's realm requires knowledge of valid redirect urls. If you are not running on localhost, this needs to be changed.
  5. docker-compose up -d to bring the whole system up.

Notable Dependencies

Search - Elasticsearch

Proxy - Traefik

Authentication - Keycloak

Contributors

@mtbarta

How to Contribute

Please feel free to send me a PR. There's a lot of low-hanging fruit across this project -- refactoring, documentation, testing. Let me know if there's something you want to work on and we can discuss.

Please rebase PRs if necessary -- https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request

License

GNU AGPLv3


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK