Stumble is a link/news aggregator. It scans selected online communities, forums, blogs and news sources and makes them available via a simple web interface, API or RSS/Atom.
You can use this have recent news and interesting links delivered to you automatically and randomly stumble through them when you're bored. It works as a centralizer of content so you don't have to navigate to a bunch of different places all the time.
How is this different than subscribing to a bunch of RSS feeds?
It adds some features:
- it imports from Reddit via the API so it gets the actual posted Url instead of a link to Reddit's comments page (which is what you get when subscribing to Reddit via RSS)
- You can randomly stumble through Urls (a different way to discover content)
- You can transform NewsAPI.org queries into RSS feeds
- Python 3.7
- Django 2.2 + Django Rest Framework 3
- Celery 4
- PostgreSQL 10 for storage
- Redis 5 for cache and celery message broker
Running development server
You will need:
You can either run in docker or your local machine.
To run in docker simply run:
# clone the repository $ git clone email@example.com:gabrielhora/stumble.git $ cd stumble # this will start all required containers, run migrations and start the development server $ docker-compose up app
To run on your machine, you'll need to run this:
# clone the repository $ git clone firstname.lastname@example.org:gabrielhora/stumble.git $ cd stumble # create the virtualenv and install requirements $ python -m venv .venv $ pip install -r requirements.txt $ pip install -r requirements-dev.txt # start containers (postgres, redis and celery worker) $ docker-compose up -d --build worker # run the migrations $ python manage.py migrate # start the development server $ python manage.py runserver
Now go to http://localhost:8000.
There is also an example import_news.sh file that you could use to import some Urls.
You can import links from these online sources:
- From Reddit API:
$ python manage.py reddit -s <subreddit_name> -t <tag>
- From HackerNews:
# urls are created with "technology" tag $ python manage.py hackernews
$ NEWSAPI_API=... python manage.py newsapi -q <query_to_run> -t <tag>
- From RSS:
$ python manage.py rss -u <rss_url> -t <tag>