Onboarding — Your First Week¶
Welcome. This guide gets you from "I have access" to "I can ship a change" in five days.
Day 1 — Accounts and access¶
You need three accounts before you can do anything. Ask João or Cristina to create them — there is no self-signup anywhere.
- Vaultwarden account at
https://vault.joaoluisbrazao.cloud - This is where all credentials live
- From inside Vaultwarden, you will find your Forgejo, Vikunja, and SSH key passphrases
- Forgejo account at the JB git server (URL inside Vaultwarden)
- All source code lives here, not GitHub
- Vikunja account at the JB task manager
- The single source of truth for what needs to be done
- Look at the
Onboardinglist — that is your starting backlog
Test: by end of day 1 you should be able to clone one Forgejo repo to your laptop and see your assigned tasks in Vikunja.
Day 2 — Read the map¶
Read in this order, take notes:
- vps-overview.md — what machine you are working against
- docker-layout.md — what is running, grouped by purpose
- networking.md — how the world reaches the apps
- security.md — the boundaries you must not cross
- adr/ — read all of them. They are short.
Test: answer these without looking — Why is GitHub not used? What is the only nginx replacement we accept? Where do health-data records live and why?
Day 3 — The big idea¶
JB infrastructure is built around three principles. Internalise them:
- Sovereignty. No SaaS for code, secrets, or knowledge. Everything self-hosted on this one VPS or on the Intel Mac home server.
- One machine, well known. No Kubernetes, no fleet. One box, well documented, well backed up.
- AI as an operator, not a co-author. Paperclip skills (43 of them, in
jb-skills-gateway) run on cron and on-demand to keep the system healthy. You will end up writing skills, not just apps.
Day 4 — Ship something tiny¶
Pick the smallest Vikunja task assigned to you. Do not pick infrastructure work in your first week.
- Branch from
develop(never frommain) - Open the relevant project's
docs/folder — read itsonboarding.mdandarchitecture.md - Make the change
- Open a merge request in Forgejo
- Tag the maintainer listed in the project's
index.md
No commit goes directly to main or staging. Production promotion requires explicit approval from João.
Day 5 — Operations basics¶
- Where logs are:
docker logs <container>for live logs, structured logs to stdout per app - How to know if something is broken: Uptime Kuma + Telegram
@DownRabbitbot - Where the runbooks are: each project has
docs/runbooks/; infra runbooks are in runbooks/ - Who to ask for what:
| Question type | Ask |
|---|---|
| "How does X work?" | Project's docs/ first, then the maintainer in index.md |
| "What should I work on?" | Vikunja |
| "Why was this decision made?" | The relevant adr/ |
| "Something is on fire" | @DownRabbitbot channel, then escalate to João |
What you should never do without asking¶
- Push to
mainof any repo - Run
docker system prune -a(kills shared images) - Modify nginx config or UFW rules
- Touch Vaultwarden master password
- Delete anything in
/opt/backups/ - Reboot the VPS
- Use
git push --forceto any shared branch
What you should do proactively¶
- Update the project's
docs/whenever you change behaviour that contradicts what is documented - Write an ADR when you make a non-obvious decision
- Add a runbook when you solve a problem you might face again
- Add a row to
errors/REGISTRY.mdif you debug an error that took more than 30 minutes