Skip to content

subway-js/subway

Repository files navigation



Build & Unit Tests Codecov GitHub license npm version npm version

SubwayJS is a personal project from danilorossi that explores the idea of bringing some of the patterns and benefits of Domain Driven Design, Event Sourcing and CQRS to the browsers, for frontend and micro-frontends development.

That's a big statement, so let's first of all clarify how those patterns inspire Subway.

From Domain Driven Design:

  • Subway promotes a software design that identifies clear sub-systems and boundaries, which not only leads to a more self-explaining codebase structure, it also helps shaping your development team structure, and prepares you for an easy transition to a micro-frontends model

From Event Sourcing and CQRS:

  • Subway provides a commands & events way to describe a system behaviour that's easy to understand and to talk about. It also promotes the decoupling of each sub-system, which makes it easy to switch implementations and add new features

Disclaimer

SubwayJS is an early stage work in progress

I am working on some projects (check the SubwayJS GitHub account or keep reading) as a way to shape the final API, architecture, and features of SubwayJS: please be aware that

  • the codebase structure, API and this documentation are in a very dynamic state at the moment
  • the projects I am working on shouldn't be consider a final example of how to use this library or how to write/organize a codebase in general
  • projects themselves are changing frequently and may not be using the latest SubwayJS version when you read this

Documentation

  1. SubwayJS concepts and design

    Visit this section to understand what SubwayJS is and the model behind it

  2. Projects List of projects/examples I am working on to shape SubwayJS

  3. How to install & API

    Very basic API documentation

Next steps

  • Finalise the API design and documentation
  • Codebase refactoring & testing
  • add CI/CD pipeline
  • ...