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):

Frontend (lightweight):

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: Local setup.

  • Understand how Celery is configured: Local setup (for triggering tasks in dev) and Tasks (for the full schedule).

  • Browse the per-app handbook: Modules.