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
- The users' feeds are personalized based on their interests thanks to machine learning
-
Follow system
-
Basic functionality
-
Users can follow other users and publications
-
-
Star system
- Users can star stories and comments
-
Bookmark system
- Users can bookmark stories and comments to read later
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.
- api: Margaret's main API (Elixir, Phoenix & Absinthe).
- ml: Machine learning predictions service (Django).
- web: Web app (React).
- mobile: Mobile app (React Native).
-
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.