Deployment

Richfolio runs as a GitHub Actions cron job — no server needed. Fork the repo, add secrets, and it runs automatically every morning.


Fork the Repo

If you haven’t already, fork richfolio to your own GitHub account. GitHub Actions workflows only run on your own repositories — forking gives you automated scheduling for daily briefs, intraday alerts, and weekly reports.


Enable Workflows

GitHub disables Actions on newly forked repos by default. Go to your fork → Actions tab → click “I understand my workflows, go ahead and enable them”.


Add Secrets

Go to your forked repo on GitHub → SettingsSecrets and variablesActionsNew repository secret.

Secret Value Required
RESEND_API_KEY Your Resend API key Yes
RECIPIENT_EMAIL Your email address Yes
CONFIG_JSON Full contents of your config.json file Yes
NEWS_API_KEY Your NewsAPI key No
GEMINI_API_KEY Your Gemini API key No
TELEGRAM_BOT_TOKEN Your Telegram bot token No
TELEGRAM_CHAT_ID Your Telegram chat ID No

For CONFIG_JSON: Open your config.json, select all, copy, and paste the entire JSON content as the secret value.


Schedule

The workflow runs automatically:

  • Daily — every day at 10pm UTC (8am AEST)
  • Intraday — weekdays at 10am, 12pm, 2pm, 4pm AEST (alerts only when signals strengthen)
  • Weekly — every Sunday at 10pm UTC (Monday 8am AEST)

You can also trigger manually: repo → ActionsMorning BriefRun workflow → choose daily, intraday, or weekly mode.


Updating Your Portfolio

When your holdings change, update the CONFIG_JSON secret on GitHub with your new config.json content. The next scheduled run will use the updated data.


Pulling Upstream Updates

To get new features from the original repo:

git remote add upstream https://github.com/furic/richfolio.git
git fetch upstream
git merge upstream/main
git push origin main

Or use GitHub’s Sync fork button on your fork’s main page.


Customizing the Schedule

Edit .github/workflows/morning-brief.yml:

schedule:
  - cron: "0 22 * * *"  # Daily at 10pm UTC

Cron is always UTC. Common timezone conversions:

Desired Local Time UTC Cron
8am AEST (UTC+10) 0 22 * * * (previous day)
8am EST (UTC-5) 0 13 * * *
8am PST (UTC-8) 0 16 * * *
8am GMT (UTC+0) 0 8 * * *
8am IST (UTC+5:30) 0 2 * * * (30 min offset — closest match)

Richfolio — free, open-source portfolio monitoring.

This site uses Just the Docs, a documentation theme for Jekyll.