All Projects β†’ mitmedialab β†’ gobo

mitmedialab / gobo

Licence: MIT License
πŸ’­ Gobo: Your social media. Your rules.

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
CSS
56736 projects
HTML
75241 projects
Mako
254 projects
shell
77523 projects

Projects that are alternatives of or similar to gobo

Learning Social Media Analytics With R
This repository contains code and bonus content which will be added from time to time for the book "Learning Social Media Analytics with R" by Packt
Stars: ✭ 102 (+17.24%)
Mutual labels:  social-media, facebook, twitter
Simplesharingbuttons
Share to Facebook, Twitter, Google+ and other social networks using simple HTML buttons.
Stars: ✭ 147 (+68.97%)
Mutual labels:  social-media, facebook, twitter
Share Selected Text
share selected text on twitter, buffer, and some others. Inspired by medium.com
Stars: ✭ 64 (-26.44%)
Mutual labels:  social-media, facebook, twitter
Social Media Data Scripts
Stars: ✭ 188 (+116.09%)
Mutual labels:  social-media, facebook, twitter
Spam Bot 3000
Social media research and promotion, semi-autonomous CLI bot
Stars: ✭ 79 (-9.2%)
Mutual labels:  social-media, facebook, twitter
Socialreaper
Social media scraping / data collection library for Facebook, Twitter, Reddit, YouTube, Pinterest, and Tumblr APIs
Stars: ✭ 338 (+288.51%)
Mutual labels:  social-media, facebook, twitter
Shrinktome
πŸ“˜Shrink facebook by 5% every 10th second. You're welcome!
Stars: ✭ 15 (-82.76%)
Mutual labels:  social-media, facebook
Tia
Your Advanced Twitter stalking tool
Stars: ✭ 98 (+12.64%)
Mutual labels:  social-media, twitter
Protest Detection Violence Estimation
Implementation of the model used in the paper Protest Activity Detection and Perceived Violence Estimation from Social Media Images (ACM Multimedia 2017)
Stars: ✭ 114 (+31.03%)
Mutual labels:  social-media, twitter
Social Amnesia
Forget the past. Social Amnesia makes sure your social media accounts only show your posts from recent history, not from "that phase" 5 years ago.
Stars: ✭ 656 (+654.02%)
Mutual labels:  social-media, twitter
Socialblocklists
Blocklists to block the communication to social networking sites and privacy harming services
Stars: ✭ 161 (+85.06%)
Mutual labels:  social-media, facebook
awesome-alternatives
A list of alternative websites/software to popular proprietary services.
Stars: ✭ 123 (+41.38%)
Mutual labels:  social-media, mastodon
Social-Media-Automation
Automate social media because you don't have to be active on all of themπŸ˜‰. Best way to be active on all social media without actually being active on them. πŸ˜ƒ
Stars: ✭ 186 (+113.79%)
Mutual labels:  social-media, facebook
slide-social-buttons
Slide Social Buttons are a fun way to display your social media buttons.
Stars: ✭ 33 (-62.07%)
Mutual labels:  social-media, facebook
node-htmlmetaparser
A `htmlparser2` handler for parsing rich metadata from HTML. Includes HTML metadata, JSON-LD, RDFa, microdata, OEmbed, Twitter cards and AppLinks.
Stars: ✭ 44 (-49.43%)
Mutual labels:  facebook, twitter
React Login Modal Sm
Customizable React Social Media login modal
Stars: ✭ 23 (-73.56%)
Mutual labels:  social-media, facebook
meta-tag-gen
Generate HTML code optimal for social media, SEO, mobile. Uses web standards from Open Graph (Facebook) and Twitter to provide optimal results. Also generates social media posts.
Stars: ✭ 24 (-72.41%)
Mutual labels:  social-media, facebook
Aardwolf
Powering connected social communities with open software.
Stars: ✭ 379 (+335.63%)
Mutual labels:  social-media, mastodon
Socioboard 4.0
Socioboard is world's first and open source Social Technology Enabler. Socioboard Core is our flagship product.
Stars: ✭ 475 (+445.98%)
Mutual labels:  social-media, twitter
social-media-hacker-list
Growing list of apps and tools for enhancing social media experiences.
Stars: ✭ 198 (+127.59%)
Mutual labels:  social-media, mastodon

Gobo Build Status

Gobo is a responsive web-based social media aggregator with filters you can control. You can use Gobo to control what’s edited out of your feed, or configure it to include news and points of view from outside your usual orbit. Gobo aims to be completely transparent, showing you why each post was included in your feed and inviting you to explore what was filtered out by your current filter settings.

Try it out at https://gobo.social.

Gobo is a project of the MIT Center for Civic Media, at the MIT Media Lab. It was created by Jasmin Rubinovitz, Alexis Hope, Rahul Bhargava and Ethan Zuckerman, with generous support from the Knight Foundation.

Installation

Gobo is a Flask-based server side, which uses React & Redux in the browser to render the UI.

Backend

Gobo uses Python 3.7.x.

Create config.py in server/config/ using the provided template to hold the right api keys and database url.

PyEnv

We manage different versions with pyenv. Install this with HomeBrew:

brew update
brew install pyenv

Then install the versions of Python we need:

pyenv install 3.7.3

PyEnv-VirtualEnv

For managing a virtual enviromnent with a specific version of python for our project, we use pyenv-virtualenv. Install this with homebrew as well

brew install pyenv-virtualenv

As noted in their readme, you'll need to add these two lines to your .bash_profile file (or you .profile file). Then open a new terminal session:

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

And then create a virtualenv for this project. The name is important, because the .python-version file refers to it so it loads automatically when you enter the directory (if eval "$(pyenv virtualenv-init -)" is in your .profile):

pyenv virtualenv 3.7.3 gobo-3.7.3

Requirements and Database

Install all requirements:

$ make requirements-local.py

To set up the database run:

$ export FLASK_ENV=dev
$ make db-setup

Front-end

In another terminal window, cd to /client.

If you haven't already, install Node Version Manager.

Install and use version node version 10.13.0:

$ nvm install 10.13.0
$ nvm use 10.13.0

Install requirements and build static assets:

$ npm install
$ npm run build 

Running

In development mode Gobo has multiple pieces you need to run:

  1. The Flask server handles authentication and interactions between the client and the various APIs.
  2. The Redis queue holds jobs for analyzing content with the plug-in algorithms, and requests to fetch posts.
  3. Celery runs the workers to do things in the queue.
  4. We use npm to run the front-end React code that drives the UI.

Run the Flask server locally:

$ ./run.sh

In order to fetch posts from Facebook, Twitter, and Mastodon you need to run the redis-server and celery worker locally. Open 2 new shell terminals. Then run:

$ redis-server

And in the other one:

$ celery -A server.scripts.tasks worker

In another terminal window open cd to /client and then:

$ nvm use 10.13.0
$ npm start

After that you should be able to see Gobo at localhost:5000

Recurring Tasks

You need to set up three recurring tasks. The first adds tasks to the queue to fetch FB and Twitter posts for users that have been using the system recently. Run this every hour or so:

$ python -m server.scripts.queue_prioritized_user_posts

The second updates the posts from news organizations (used for the "perspectives" filter). Run this every 6 hours or so:

$ python -m server.scripts.queue_latest_news_posts

The third removes old posts (Gobo only tracks the posts within the last two weeks). Run this once a night:

$ python -m server.scripts.delete_old_posts

Manual Tasks

To delete a specific user:

$ python -m server.scripts.delete_user [user_id]

Documentation and tasks for creating and sharing rules found via the flask CLI:

$ flask 

Configuration

Beta Password

You can choose to only allow signup to people that have a special password. Add the following vars in config.py:

LOCK_WITH_PASSWORD = True
BETA_PASSWORD = 'password_you_want'

To remove the password just set LOCK_WITH_PASSWORD = False.

Set up Google Analytics:

Edit the GA ID in client/app/index.js

Development

When updating models that result in a table change (e.g. column added/removed), generate migrations with:

$ flask db migrate

This will generate a new migration file in migrations/versions that should be added to version control.

Deploying

Setup

Gobo is set up to deploy to containerized hosts like Heroku or Dokku. Typically configuration is done with environment variables. For now we've got a system that involves editing the config file on a local branch. We'll get around to changing this eventually.

  1. Create a new local branch called "deploy": git checkout -b deploy
  2. Create a new app on the Heroku website, or with the command line in Dokku
  3. Add the heroku/dokku remote to the GitHub repo
  4. In "deploy" branch, edit .gitignore to not ignore config.py (make sure to also save a copy of config.py somewhere else on your computer)
  5. On your host (Heroku/Dokku), add a database and a redis instance
  6. Update config.py in the deploy branch to match the database and redis url
  7. Push to that deploy remote: git push deploy deploy:master

!!! - Make sure to not push this branch anywhere else!! as this contains sensitive data! - !!!

Versioning

Edit client/app/constants/index.js and bump up the semantic version number before every release. This shows up at the bottom of the About page.

Contributing

A pre-commit hooks will run JavaScript linting (e.g. when you commit, linting will be run). You can try to automatically fix JavaScript linting errors by running:

$ npm run lint_fix

Not all errors can be fixed this way and for more details about the linting error see eslint.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].