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