@marathonhq/marathon
v1.0.0
Published
Enterprise Grade User Management System
Downloads
18
Maintainers
Readme
Marathon
Painless User Management
Visit trymarathon.com/learn to get started.
What is Marathon?
User Management is a wheel that has been reinvented again and again, from platform to platform, across thousands of projects. However, there are tons of principles and rules that are consistent and could be standardized. What if the next project you are tasked with won't require you to redo the user management paradigm, but instead, install it like with any other server dependency you have.
Marathon is an open source software that bootstraps standard User Management paradigms that can be deployed to any infrastructure.
Vision
Marathon aims to be the de-facto user management system that developers can deploy and forget with considerations on being agnostic, extensible, secure, simple, and familiar while also providing a way to "exit" and avoid lock-in.
Roadmap
Marathon's Public Roadmap
is available to everyone's suggestion and contribution. Please create a Github Issue with the enhancement
label so I can review it and add it to the roadmap.
Status
Marathon is currently in development and not in a stable state. It is not recommended to use Marathon in production at the moment. Development started in February 2019.
Installation and Setup
Quick Start
Install the Marathon CLI.
via NPM
npm install -g marathon-cli
via Brew
brew install marathon-cli
Run the Marathon installation script via the create
command:
$ marathon-cli create project-name --env=development
After installation has finished, navigate to http://localhost:41140 and complete the set up process via the Installation UI.
If you do not want to use the installation UI, you can create an installation configuration instead.
via docker-compose
If you want to run Marathon via or docker-compose, you can fetch the relevant docker files within /install/docker
and run:
$ docker-compose --file install/docker/docker-compose.yml up --detach
The resulting image that will run will have all the plugins and services loaded and db migrations migrated. If you wish to customize the installation, check out how to Configure Marathon.
Migration
The installation command should migrate into your selected database. If you would like to run it manually, use the following command:
$ marathon-cli migrate project-name --env=development
Documentation
- Getting Started
- Configuring Marathon
- Installation
- Services
- Plugins
- Testing
- Workers
- Deployment
- API References
- CLI
- Contribution
Development Decisions
...
Terms
- Services - HTTP facing services
- Controllers - Serialization, Validation, and generic HTTP methods
- Middlewares - Service specific http middlewares
- Repositories - Business Domain Logic
- Schema - Validate against incoming requests and outgoing responses
- Plugins - Feature enhancements hooked via the event system and http lifecycle
- Database/Models - DB Convenience methods
- Database/Schema - Schema when inserting information to the database
Why not use Typescript/Flow?
I want to allow modification that is not hindered by the additional effort of learning a typed language. However, the codebase is littered with type definitions to allow for a simpler developer experience.
Why is this a Monolith?
The focus of the system is to bootstrap a user management system with a reasonable amount of time for setup and maintenance. Having a monolith answers this initial requirement. However, the system can be configured to run specific services separately. Learn more about Deployment here.
Have Issues?
Please create a Github Issue so I can review and add it to succeeding versions. Please make sure to follow the issue template.
FAQ
No. At the moment, please use Marathon as a playground and development test bed. A stable release will come in June 2019.
Yes, and no. Marathon only aims to be a user management system that any system can rely and extend from. The data stored by Marathon is owned by the developer/company that installed and maintains the Marathon instance.
Security still relies on the developer's/company's discretion. Standard security practices apply when deploying this software to production.
Marathon conveniently provides away to "eject" from the system. You can run marathon-cli eject 10.0.0.1
to download a snapshot of the current database. See the Eject command from the CLI to know more.
Yes! The MIT license permits you to do so. But Please remember to give credit to the original source code.
I am looking into creating managed instances for Marathon with simple pricing. Stay tuned for more information.
At the moment, Marathon holds none. Once I provide service via managed instances, we will make this as a hard requirement.
At the moment, you can email [email protected]
directly for support. Allow a day or two for a response. Else, please proceed to Github Issue and submit an issue there. Please make sure to follow the issue template.
Yes! I highly appreciate it. Send me an email and I'll send you my Paypal Account.
Contributing
If you wish to contribute to the core code, please see CONTRIBUTING.md.
License
Licensed under MIT, see the LICENSE file.