chore: cloud deploy pipeline (Vercel web + Render API + bot VM) and env template consolidation#103
Merged
Conversation
BODMAT
approved these changes
Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a reproducible, documented cloud deployment path for all three apps and
aligns the env templates and docs with it.
Blueprint, since Vercel keeps project settings and secrets in the dashboard,
not in
vercel.json(strict JSON, routing only). Covers Root Directory,dashboard env vars, the
/FinTrackbasePath, and the API-sideCORS_ORIGINS/FRONTEND_URLalignment.vercel.jsonitself is unchanged.render.yamlBlueprint provisionsfintrack-api(Docker runtime,
/api/healthcheck,autoDeploy: true). Every secret issync: false— values are set in the Render dashboard, never committed.deploy-botjob inrelease.ymlruns after theimage build + Trivy scan, SSHes into the VM (
appleboy/ssh-action), pullsghcr.io/fintrack-team/fintrack-bot:latest, and recreates thefintrack-botcontainer (
--restart unless-stopped,--env-file ~/bot.env). A push-baseddeploy gated on a green build, instead of a Watchtower polling setup.
.env*.exampleheaders with an explicitREQUIRED / REQUIRED IN PRODUCTION / OPTIONAL legend,
randomBytesgenerationhints for secrets, and a render.yaml mirror note in
apps/api/.env.example.Weak placeholder secrets replaced with format placeholders (
<64-byte-hex>).README.mdgains a Web Vercel Deploy Setup runbook, the RenderBlueprint deploy note, and a Bot VM Deploy Setup runbook (Docker install,
~/bot.env, CI deploy key, repo secrets, firewall, per-operator SSH access);CONTRIBUTING.mdcross-references the VM runbook from the env-files table.New repo secrets required for the bot deploy:
VM_HOST,VM_USER,VM_SSH_KEY.Closes #102
Type of change
How Has This Been Tested?
Unit tests (Jest/Vitest)
Integration tests
Manual testing (screenshots/screencasts encouraged)
CI
release.ymlbuild + Trivy scan pass for api/web/bot images.render.yamland thedeploy-botjob were reviewed for correctness; the liveRender Blueprint deploy and the VM bot deploy are verified post-merge (first
push to
masterafter the secrets are set)..env*.examplefiles reviewed — no real secrets, placeholders only; ToCfreshness check passes for README and CONTRIBUTING.
Checklist: