👩🚀 A publishing platform. An open-source alternative to Medium.
This is the umbrella repository of Margaret.
Margaret is an open-source publishing platform (think of Medium). The initial scope is to implement the majority of features Medium has. In the future, we'll implement features that will set Margaret apart.
Authentication
Users can sign up and sign in using their Facebook, Google and/or GitHub accounts
Users can sign in by clicking a magic link sent to their emails
Stories
Basic functionality
Views are counted
Users can publish monetized stories that only members can read
Memberships
Users can opt in to our membership program
Members have access to a wider selection of stories
Notifications
Basic functionality
Users can see only their notifications
Users can mark a notification as read
Some notifications send emails
Real-time functionality
Publications
Basic functionality
Admins can invite users to the publication
Members of the publication can have different roles (writer, editor, etc)
Writers can create drafts under the publication
Editors can edit and publish drafts under the publication
Recommendation system
Follow system
Basic functionality
Users can follow other users and publications
Star system
Bookmark system
Please see CONTRIBUTING.
__tests__
: Contains end-to-end tests written in JavaScript with Jest.
.github
: Contains GitHub template files.
.vscode
: Contains VSCode workspace configuration files.
k8s
: Contains Kubernetes manifests for production deployment.
projects
: Contains the projects Margaret consist of.
scripts
: Contains useful scripts for CI and other things.
build.sh
: Builds and tags the Docker images.
deploy.sh
: Builds, tags and pushes the Docker images.
gen_env_file.sh
: Copies the example env file
to the actual env file.
push.sh
: Pushes the Docker images.
test.sh
: Runs all the tests.