Giter Club home page Giter Club logo

monocorpus's Introduction

MonoCorpus

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

DEPRECATED
Unfortunately, I accepted a job where this project is a conflict of interest. This project will be in maintanence mode from here on out.


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.

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

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

async messaging As notes are written and sent to the backend, we save them and then send them to a messaging platform for other services to pick up asynchronously.

robust authentication We use keycloak to provide authentication and authorization of users. Every user is able to enable two-factor auth for their account.

Microservices:

  • Notes
    • CRUD functions to Mongo.
  • Search
    • Async CRUD functions to add notes to Elasticsearch.
  • 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

There are a couple snags that I've run into deploying this:

  1. the system needs to be aware of the host name. This is for proper routing of calls, decryption of tokens, and ACME support in traefik.
  2. Elasticsearch may need permissions to write to your elasticsearch data directory. Run chown -R 1000:1000 es to fix this.
  3. Keycloak's realm requires knowledge of valid redirect urls. If you are not running on localhost, this needs to be changed. You can boot up keycloak, and go it it's endpoint at /auth/admin and login with the above user and password. https://www.keycloak.org/docs/latest/server_admin/index.html#_clients has more information about where to navigate to change client urls.
  4. 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, new features. 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

monocorpus's People

Contributors

mtbarta avatar

Watchers

James Cloos 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.