Skip to content

hazadus/django-rss-reader

Repository files navigation

Online RSS Reader

Inspired by amazing NetNewsWire Mac/iOS app – the best RSS reader out there!

🏗️The app is in very early stage of development.🚧

Main branch is auto-deployed at http://rss.hazadus.ru/.

Arc screenshot

Libraries and Tools Used

  • Django
    • django-allauth: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
    • django-debug-toolbar: Best debugging tool for Django.
  • Celery: simple, flexible, and reliable distributed system to process vast amounts of messages, while providing operations with the tools required to maintain such a system.
  • RabbitMQ: most widely deployed open source message broker.
  • Feed Parsing:
    • feedparser: Universal Feed Parser is a Python module for downloading and parsing syndicated feeds.
    • beautifulsoup4: Beautiful Soup is a library that makes it easy to scrape information from web pages.
    • dateutil: The dateutil module provides powerful extensions to the standard datetime module, available in Python.
  • Serving App in Production:
    • gunicorn: WSGI HTTP Server for UNIX, fast clients and sleepy applications.
    • whitenoise: Radically simplified static file serving for Python web apps.
    • nginx: nginx (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.
  • Styling:
  • Misc:
    • environs: environs is a Python library for parsing environment variables.
    • coloredlogs: The coloredlogs package enables colored terminal output for Python’s logging module.
    • coverage: Coverage.py measures code coverage, typically during test execution.

Running in Dev Mode

Create .env file with the following variables:

SECRET_KEY=django-secret-key
DEBUG=True
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432CELERY_BROKER_URL=amqp://rmuser:rmpassword@localhost:5672//

Containers db, mq should be up and running in background.

Use celery -A django_project worker -E to start the worker.

Use make run to start the app.

Deploy

Create .env file with the following variables:

SECRET_KEY=django-secret-key
DEBUG=False
SENTRY_DSN=sentry-dsn-only-in-production-(optional)

Use docker compose up -d to run the app.

Dev Notes

Building Tailwind styles

npx tailwindcss -i ./static/src/input.css -o ./static/styles.css
# or
npx tailwindcss -i ./static/src/input.css -o ./static/styles.css --watch

Building fixtures for tests

# Create fresh DB
python -m manage migrate
# Create test users with subscriptions
python -m manage add_test_data
# Fetch feeds for test users
python -m manage update_feeds
#
# Mark some stuff as read, some as favorite...
#
# Dump all data to fixtures
make dumpdata

References

Repo Activity

Repo Activity