Overview
========
Richy is a personal investing portfolio manager. It tracks shares,
ETFs, market indexes and cryptocurrencies; aggregates dividends,
analyst ratings and news; and computes performance, drawdown and
asset-allocation charts on top of a transactional ledger.
What Richy is
-------------
* A (passive) portfolio manager.
* A market news aggregator.
* A tool that aggregates information to help you form ideas.
* Better than your spreadsheets.
What Richy is *not*
-------------------
* A trading platform like Robinhood.
* An app that gives investing advice.
* A trading bot.
* An AI that predicts the market.
Tech stack
----------
Backend (heavy):
* `Python 3.13+ `_
* `Django `_
* `Celery `_
* `PostgreSQL `_
* `Redis `_
* `Gunicorn `_ + `Nginx `_
* `Graphviz `_ for transaction graphs
Frontend (lightweight):
* `Pug `_ for templates
* `UIkit `_ for the UI framework
* `Vue.js `_ for a handful of interactive components
* `Highcharts `_ for interactive charts
* `SASS `_ + `Webpack `_
Tooling:
* `uv `_ for Python dependency management
* `Ruff `_ for lint + format
* `Sphinx `_ for these docs
* GitLab CI
Repository layout
-----------------
::
app/ project root
├── app/ the Django project
│ ├── richy/ site package
│ │ ├── core/ shared models, charts, scraping, paging, ...
│ │ ├── shares/ stock shares
│ │ ├── etfs/ ETFs
│ │ ├── indexes/ market indexes
│ │ ├── coins/ cryptocurrencies
│ │ ├── transactions/ the user's portfolio
│ │ ├── staking/ crypto staking positions
│ │ ├── news/ news ingest + display
│ │ ├── settings/ base.py, dev.py
│ │ ├── celery.py Celery app entrypoint
│ │ ├── wsgi.py WSGI entrypoint
│ │ └── urls.py
│ ├── _scripts/ fixtures / static / webpack helpers
│ ├── gunicorn.py gunicorn config (used by startup.sh)
│ ├── manage.py
│ ├── requirements generated from pyproject.toml
│ ├── requirements_dev includes dev tooling
│ └── startup.sh container entrypoint
├── assets/ logo + screenshots
├── docs/ this Sphinx docs tree
├── nginx/ nginx config + dev certs
├── scripts/ release + local-CI wrappers
├── compose.yaml.skel production compose template
├── compose.dev.yaml development compose
├── compose.ci.yaml local-CI compose stack
├── deploy.yaml deployment automation
├── Dockerfile production image
├── Dockerfile.webpack webpack-only image
├── nginx.conf.skel production nginx config template
├── pyproject.toml deps + tool config
├── richy.service systemd unit
├── uv.lock committed lockfile
└── .env.skel env-var template
Where to go next
----------------
* Set up a local development environment: :doc:`local_setup`.
* Understand how Celery is configured:
:doc:`local_setup` (for triggering tasks in dev) and
:doc:`/architecture/tasks` (for the full schedule).
* Browse the per-app handbook: :doc:`/modules/index`.