Skip to content

πŸ‘©β€πŸš€ A publishing platform. An open-source alternative to Medium.

License

Notifications You must be signed in to change notification settings

dbstratta/margaret

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

margaret

Travis branch PRs Welcome

This is the umbrella repository of Margaret.

Table of contents

Introduction

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.

Features

  • 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

Contributing

Please see CONTRIBUTING.

Project structure

  • __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.

Projects

  • api: Margaret's main API (Elixir, Phoenix & Absinthe).
  • ml: Machine learning predictions service (Django).
  • web: Web app (React).
  • mobile: Mobile app (React Native).

Scripts

  • 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.

License

MIT