soney / rs

A New Monorepo structure for Runestone

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Runestone MonoRepo

This repository collects together the various repositories related to the Runestone Academy software. The idea of combining several repositories into a single structure was motivated and inspired by the Python polylith tools and projects.

As Runestone has grown over the years we have accreted a loads of new functionality without ever stopping to reconsider an architecture that would support easier implementation of new features while providing stability for fundamental parts of the project that need to scale. Docker was not invented at the time Runestone development started!

The goal of this re-working of the Runestone code will provide us with a very docker friendly set of servers and services. we will use a polylith software architecture to develop and maintain this set of services. The following diagram shows what we are aiming at.

Runestone Architecture

Each of the servers in the diagram above will become a project in this repo.

  • Each project is runnable from the top level
  • Each project builds its own docker image or command line program (rsmanage and runestone)
  • The entire suite of services is orchestrated by the docker-compose.yml file

Understanding the Code Structure

  • projects - define the artifacts - Docker images or applications could be a web application or a command line application or whatever.
  • bases - contains the public facing API for a project
  • components - contains code that supports one or more projects/bases
  • development - experimental and early work.

A Roadmap

Docs

See Our Read the Docs page for more complete documentation.

This setup uses poetry and two important plugins, the multi-project plugin and the polylith plugin.

The official Polylith documentation: high-level documentation

A Python implementation of the Polylith tool: python-polylith

Documentation for building and running each of the projects is in the respective project directory.

Please make sure you keep your fork up to date with main. We are actively working on this new organization of the Runestone code, and there are likely to be lots of changes, especially throughout the summer months.

Our Community

The Runestone community has been actively developing and supporting this project since 2011. However in the 2023 I decided to move to a mono repo. Unfortunately this means that the history of the individual repositories is lost. I am sorry for this, but I think the benefits of a mono repo will be worth it. The original repositories are still available, but they are no longer being actively developed, if you need to point to your contributions to Runestone, please use the old repos as a reference.

Our authoring language is PreTeXt. We have a very active community of PreTeXt authors and developers. If you are interested in contributing to the PreTeXt project, please visit the PreTeXt project page.

POSE Training Program - Spring 2023 Pilot

Awarded: May 18, 2023

VERIFY

About

A New Monorepo structure for Runestone


Languages

Language:Python 47.0%Language:C++ 29.4%Language:JavaScript 14.9%Language:HTML 5.8%Language:CSS 2.3%Language:Java 0.5%Language:Dockerfile 0.1%Language:Makefile 0.1%Language:Shell 0.0%Language:Less 0.0%Language:Assembly 0.0%