https://github.com/capjamesg/cinnamon
A social reader built with Python Flask.
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.3%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
A social reader built with Python Flask.
Basic Info
Statistics
- Stars: 12
- Watchers: 4
- Forks: 1
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md
Cinnamon Social Reader
This repository contains the code that powers my personal Microsub social reader called Cinnamon.
Microsub is an IndieWeb specification currently in development that separates the tasks of processing feeds and presenting feeds so that servers and feed readers can be developed independently but work together.
The Microsub server currently supports:
- Creating channels
- Updating channel names
- Changing the order of channels in a list
- Deleting channels
- Subscribing to a feed
- Unsubscribing from a feed
- Marking entries in a feed view as read
- Creating a post via Micropub
- Reacting to posts via Micropub
- Among other features
This project is in active development. The entire Microsub specification is not yet incorporated into this project.
Screenshots
Desktop

Mobile

Getting Started
You can install and configure this Microsub server using Docker or manually.
Docker Setup
To set up this project with Docker, first install Docker on your local machine.
Next, run the following command:
docker build -t microsub .
This will build the microsub image using the Dockerfile in the root directory of this project.
Next, copy the config_example.py file into the config.py file and change the values to match your server:
cp config_example.py config.py
The Dockerfile automates the project setup process.
Next, run:
docker run microsub
This will run the microsub server on port 5000.
Manual Setup
To use this Microsub server for yourself, please run the following command:
pip3 install -r requirements.txt
This command will install the dependencies you need to run the Microsub server.
Next, copy the config_example.py file into the config.py file and change the values to match your server:
cp config_example.py config.py
Next, you need to set up the database for the server. You can do this using the following command:
python3 seed.py
Now that you have set up the database, you are ready to run the Microsub server.
Execute this command to run the server:
python3 wsgi.py
File Definitions
Here is the structure of this project:
── Dockerfile
├── LICENSE.md
├── README.md
├── actions # implementations of the actions defined in the Microsub specification
│ ├── change_to_json.py
│ ├── channels.py
│ ├── following.py
│ ├── preview.py
│ ├── react.py
│ ├── search.py
│ ├── timeline.py
│ └── user_ops.py
├── authentication # functions to handle authentication and authorization
│ ├── auth.py
│ └── check_token.py
├── client # views used to read and manage feeds
│ └── client_views.py
├── config.py # configuration file required for the project to run
├── feeds # code to transform three different types of feed into a jf2 object, consumed by the server
│ ├── hfeed.py
│ ├── json_feed.py
│ ├── read_later.py
│ └── xml_feed.py
├── legacy # old code not currently in use
│ └── dates.py
├── logs
├── main.py # the main microsub server that responds to queries at /microsub
├── poll_feeds.py
├── requirements.txt
├── requirements_dev.txt
├── seed.py
├── server # code that powers feed management and the back-end server
│ ├── server_views.py
│ └── websub.py
├── static # all static files used in the project
│ ├── css
│ │ └── styles.css
│ ├── emojis.json
│ ├── favicon.ico
│ ├── icons
│ ├── images
│ │ └── wood.avif
│ ├── js
│ │ ├── editor.js # js to load the post editor form
│ │ └── reader.js # js to enhance reading capabilities, including reactions
│ ├── manifest.json
│ └── robots.txt
├── templates # all the HTML templates for the project
│ ├── 404.html
│ ├── auth.html
│ ├── base.html
│ ├── client # HTML used by the client
│ │ ├── discover.html
│ │ ├── feed_item.html
│ │ ├── preview.html
│ │ ├── read_article.html
│ │ ├── reader.html
│ │ ├── search.html
│ │ └── settings.html
│ ├── index.html
│ ├── server # HTML used by the server management client
│ │ ├── dashboard.html
│ │ └── following.html
│ ├── setup.html
│ └── show_error.html
├── tox.ini
└── wsgi.py
This tree was generated using the following command:
tree -I '*.pyc|*.png|*.svg|*.log|__*'
License
This project is licensed under an MIT 0 license.
Acknowledgements
The author of this project would like to thank the Feather open source icon set for creating an open repository of icons. This project uses a few icons from Feather in the mobile view.
This project uses the "Complete list of github markdown emoji markup" Gist for its emoji autocomplete dictionary.
Maintainers
Owner
- Name: James
- Login: capjamesg
- Kind: user
- Location: Scotland
- Company: @Roboflow
- Website: jamesg.blog
- Repositories: 320
- Profile: https://github.com/capjamesg
from words, wonder.
GitHub Events
Total
Last Year
Committers
Last synced: over 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| capjamesg | j****g@j****g | 139 |
| dependabot[bot] | 4****] | 16 |
| p182 | 3****2 | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 4
- Total pull requests: 30
- Average time to close issues: 8 months
- Average time to close pull requests: 13 days
- Total issue authors: 1
- Total pull request authors: 3
- Average comments per issue: 0.5
- Average comments per pull request: 0.03
- Merged pull requests: 27
- Bot issues: 0
- Bot pull requests: 19
Past Year
- Issues: 0
- Pull requests: 4
- Average time to close issues: N/A
- Average time to close pull requests: about 5 hours
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 4
Top Authors
Issue Authors
- capjamesg (4)
Pull Request Authors
- dependabot[bot] (28)
- capjamesg (10)
- p182 (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Flask ==2.0.2
- Jinja2 ==3.0.3
- MarkupSafe ==2.0.1
- Werkzeug ==2.0.2
- beautifulsoup4 ==4.10.0
- blinker ==1.4
- bs4 ==0.0.1
- certifi ==2021.10.8
- charset-normalizer ==2.0.10
- click ==8.0.3
- feedparser ==6.0.8
- gunicorn ==20.1.0
- html5lib ==1.1
- idna ==3.3
- indieweb-utils ==0.1.2
- itsdangerous ==2.0.1
- mf2py ==1.1.2
- python-dateutil ==2.8.2
- pytz ==2021.3
- requests ==2.27.1
- sentry-sdk ==1.5.1
- sgmllib3k ==1.0.0
- six ==1.16.0
- soupsieve ==2.3.1
- urllib3 ==1.26.7
- webencodings ==0.5.1
- black ==21.12b0 development
- flake8 ==4.0.1 development
- isort ==5.10.1 development
- mypy ==0.931 development
- pytest ==6.2.5 development
- pytest-pythonpath ==0.7.3 development
- responses ==0.17.0 development
- tox ==3.24.5 development
- types-dataclasses ==0.6.4 development
- types-requests ==2.27.3 development
- typing-extensions ==4.0.1 development
- actions/checkout v2 composite
- github/codeql-action/analyze v1 composite
- github/codeql-action/autobuild v1 composite
- github/codeql-action/init v1 composite
- python 3.9.0 build