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