{"id":13508953,"url":"https://github.com/dbstratta/margaret","last_synced_at":"2025-04-07T21:41:36.346Z","repository":{"id":117363020,"uuid":"109623694","full_name":"dbstratta/margaret","owner":"dbstratta","description":"👩‍🚀 A publishing platform. An open-source alternative to Medium.","archived":false,"fork":false,"pushed_at":"2020-09-24T04:38:10.000Z","size":3792,"stargazers_count":91,"open_issues_count":1,"forks_count":13,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-03-30T11:34:06.396Z","etag":null,"topics":["absinthe","apollo","blogs","docker","ecto","elixir","graphql","kubernetes","machine-learning","medium","notifications","phoenix","react","redux"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbstratta.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-05T22:53:49.000Z","updated_at":"2024-11-04T23:58:20.000Z","dependencies_parsed_at":"2024-01-13T19:25:24.372Z","dependency_job_id":"be86edee-915b-4bb8-9253-6b5330e916fc","html_url":"https://github.com/dbstratta/margaret","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbstratta%2Fmargaret","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbstratta%2Fmargaret/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbstratta%2Fmargaret/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbstratta%2Fmargaret/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbstratta","download_url":"https://codeload.github.com/dbstratta/margaret/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247735502,"owners_count":20987457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["absinthe","apollo","blogs","docker","ecto","elixir","graphql","kubernetes","machine-learning","medium","notifications","phoenix","react","redux"],"created_at":"2024-08-01T02:01:00.915Z","updated_at":"2025-04-07T21:41:36.309Z","avatar_url":"https://github.com/dbstratta.png","language":"Elixir","funding_links":[],"categories":["Elixir","redux"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"logo/horizontal.png\" alt=\"margaret\" height=\"150px\"\u003e\u003c/p\u003e\n\n[![Travis branch](https://img.shields.io/travis/strattadb/margaret/develop.svg?style=flat-square)](https://travis-ci.org/strattadb/margaret)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](CONTRIBUTING.md)\n\nThis is the umbrella repository of Margaret.\n\n## Table of contents\n\n* [Introduction](#introduction)\n* [Features](#features)\n* [Contributing](#contributing)\n* [Project structure](#project-structure)\n* [Projects](#projects)\n* [License](#license)\n\n## Introduction\n\nMargaret is an open-source publishing platform (think of [Medium](https://medium.com)).\nThe initial scope is to implement the majority\nof features Medium has. In the future, we'll implement features that will set Margaret apart.\n\n## Features\n\n* Authentication\n\n  * [x] Users can sign up and sign in using their Facebook, Google and/or GitHub accounts\n\n  * [ ] Users can sign in by clicking a magic link sent to their emails\n\n* Stories\n\n  * [x] Basic functionality\n\n  * [ ] Views are counted\n\n  * [ ] Users can publish monetized stories that only members can read\n\n* Memberships\n\n  * [ ] Users can opt in to our membership program\n\n  * [ ] Members have access to a wider selection of stories\n\n* Notifications\n\n  * [x] Basic functionality\n\n  * [x] Users can see only their notifications\n\n  * [x] Users can mark a notification as read\n\n  * [ ] Some notifications send emails\n\n  * [ ] Real-time functionality\n\n* Publications\n\n  * [x] Basic functionality\n\n  * [x] Admins can invite users to the publication\n\n  * [x] Members of the publication can have different roles (writer, editor, etc)\n\n  * [x] Writers can create drafts under the publication\n\n  * [x] Editors can edit and publish drafts under the publication\n\n* Recommendation system\n\n  * [ ] The users' feeds are personalized based on their interests thanks to machine learning\n\n* Follow system\n\n  * [x] Basic functionality\n\n  * [x] Users can follow other users and publications\n\n* Star system\n\n  * [x] Users can star stories and comments\n\n* Bookmark system\n\n  * [x] Users can bookmark stories and comments to read later\n\n## Contributing\n\nPlease see [CONTRIBUTING](./CONTRIBUTING.md).\n\n## Project structure\n\n* [**`__tests__`**](./__tests__): Contains end-to-end tests written in JavaScript with Jest.\n\n* [**`.github`**](./.github): Contains GitHub template files.\n\n* [**`.vscode`**](./.vscode): Contains VSCode workspace configuration files.\n\n* [**`k8s`**](./k8s): Contains Kubernetes manifests for production deployment.\n\n* [**`projects`**](./projects): Contains the projects Margaret consist of.\n\n* [**`scripts`**](./scripts): Contains useful scripts for CI and other things.\n\n## Projects\n\n* [api](./projects/api): Margaret's main API (Elixir, Phoenix \u0026 Absinthe).\n* [ml](./projects/ml): Machine learning predictions service (Django).\n* [web](./projects/web): Web app (React).\n* [mobile](./projects/mobile): Mobile app (React Native).\n\n## Scripts\n\n* [`build.sh`](./scripts/build.sh): Builds and tags the Docker images.\n\n* [`deploy.sh`](./scripts/deploy.sh): Builds, tags and pushes the Docker images.\n\n* [`gen_env_file.sh`](./scripts/gen_env_file.sh): Copies the example env file\n  to the actual env file.\n\n* [`push.sh`](./scripts/push.sh): Pushes the Docker images.\n\n* [`test.sh`](./scripts/test.sh): Runs all the tests.\n\n## License\n\n[MIT](https://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbstratta%2Fmargaret","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbstratta%2Fmargaret","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbstratta%2Fmargaret/lists"}