Products, domains, and legal strategy¶
Reference for product portfolio, domain naming, HTTPS, company structure, and hosting costs. Revisit when deciding subdomains, branded domains, SL registration, or investor timing.
Not legal advice
This page captures team decisions and general founder patterns for Spain/EU. Before registering an SL, invoicing, or raising investment, consult a gestor and abogado mercantil.
What's live today¶
| Surface | Host / repo | Notes |
|---|---|---|
| Platform | infra/devops on infra VPS (85.215.32.166) |
git, ci, pm, docs, status, metrics, security |
| Portfolio | rafael.gonzalez.albes/portfolio |
IONOS — rafaelgonzalezalbes.com / www |
| WearLab | alex/wearlab-main on apps VPS (82.165.177.110) |
wearlab.rafaelgonzalezalbes.com |
SSH alias naming
bioscan-vps is the SSH alias for the infra VPS (legacy name). It is not the BioScan product server. Use apps-vps for the apps runtime host.
Active Woodpecker + DefectDojo wiring covers only the three rows above. See scripts/wire-defectdojo-woodpecker.sh.
Product portfolio¶
| Product | Forgejo repo / org | Planned host | Status |
|---|---|---|---|
| WearLab | alex/wearlab-main |
wearlab.rafaelgonzalezalbes.com |
Live — Symfony backend + products API on apps VPS |
| Portfolio | rafael.gonzalez.albes/portfolio |
rafaelgonzalezalbes.com / www |
Live on IONOS — personal brand, not a product company |
| DroneColonies | TBD | dronecolonies.rafaelgonzalezalbes.com |
Planned — product details TBD |
| Cat tree | TBD | cats.rafaelgonzalezalbes.com |
Planned — product details TBD |
Paused / not deployed (repo may still exist on Forgejo):
| Product | Forgejo repo | Notes |
|---|---|---|
| BioScanCheck | bioscan/bioscancheck |
Not deployed — no DNS to apps VPS, no Kuma monitor, excluded from CI/security wire scripts. Local dev only; see BioScanCheck. |
Side projects (local / future):
| Project | Notes |
|---|---|
| TimberTails | Static site path timbertails/ — local dev only for now |
| Airport Connection | Local dev only (localhost:3000) |
Hostnames for apps VPS are defined in local/apps-vps.env.example (WEARLAB_HOST, etc.). Do not point bioscan.* at production until BioScanCheck is explicitly re-onboarded.
Domain strategy¶
Phase 1 — now (no extra domain purchases)¶
Use one domain (rafaelgonzalezalbes.com) and add subdomains per product:
| Layer | Target IP | Examples |
|---|---|---|
| Platform (infra VPS) | 85.215.32.166 |
git, ci, pm, docs, status, … |
| Products (apps VPS) | 82.165.177.110 |
wearlab, dronecolonies, cats (planned) |
| Portfolio | IONOS web hosting | apex, www |
Per-app checklist:
- Add DNS A record in IONOS (or Cloudflare) → apps VPS IP
- Set Traefik
Host()label in appdeploy/docker-compose.yml - Let's Encrypt issues HTTPS automatically (no paid cert)
See DNS for platform records and New app for onboarding steps.
Phase 2 — when a brand or SL launches¶
Register a branded domain (e.g. wearlab.com, bioscancheck.es) in the legal entity's name when:
- The SL (or autónomo structure) exists
- You run public marketing under that brand
- You invoice customers or handle personal data under that name
- Investors require a clean cap table and IP assignment
Technical cutover (same apps VPS, no rebuild):
- Point branded domain DNS →
82.165.177.110 - Add Traefik
Host()rules for the new domain - Keep the old subdomain during transition (both can work in parallel)
Do not buy branded domains while still building MVP — subdomains are enough for dev, demos, and early users.
flowchart TB
Domain["rafaelgonzalezalbes.com\none registration"]
Domain --> Infra["git / ci / pm / docs …\nInfra VPS"]
Domain --> Apps["wearlab / bioscan / cats …\nApps VPS"]
Domain --> Portfolio["apex / www\nIONOS"]
Apps -.->|"Phase 2"| BrandA["wearlab.com"]
Apps -.->|"Phase 2"| BrandB["bioscancheck.com"]
HTTPS — who provides it¶
IONOS "SSL included" on the domain panel covers IONOS hosting, not platform or app subdomains pointing at the VPS.
| Surface | HTTPS provider | Notes |
|---|---|---|
Platform (git, ci, pm, …) |
Let's Encrypt via Traefik on infra VPS | Free, auto-renew ~90 days |
Apps (wearlab, bioscan, …) |
Let's Encrypt via Traefik on apps VPS | Free, auto-renew |
Portfolio apex / www |
IONOS SSL on Apache | Or Cloudflare edge TLS if proxied — see TLS and HTTP versions |
Let's Encrypt is a free certificate authority. Traefik requests and renews certs automatically; no manual uploads or yearly SSL purchases for VPS-hosted services.
Legal and company structure¶
Phased approach¶
Do not register four SLs on day one. Cost and overhead per SL in Spain is roughly €300–800 setup plus ongoing gestoría/accounting per entity.
| Phase | When | Action |
|---|---|---|
| 0 — Now | Building MVPs | Subdomains only; no new SLs. Clarify WearLab co-founder terms with Alex before major commits (equity, IP, roles). |
| 1 — First revenue | First paying customer or B2B contract | One autónomo (solo, simple) or one SL (co-founders, limited liability). Multiple products can live under one SL initially. |
| 2 — Traction / investors | Product needs funding or clean separation | Dedicated SL per product; assign IP (code), domain, privacy policy, and bank account to that SL. |
| 3 — Optional holding | Two or more product SLs are real businesses | HoldCo SL owns stakes in product SLs; shared infra billed via internal license between entities. |
Bootstrap vs investor signals¶
| Signal | Bootstrap-friendly | Likely needs investors / dedicated SL |
|---|---|---|
| MVP buildable in under 6 months | Yes | No |
| Hardware, inventory, or large marketing spend | No | Yes |
| Revenue plausible in year 1 without funding | Yes | No |
| Co-founder with equity split | Simple agreement OK | Cap table + vesting before SL |
| Regulated claims (food, drones, health) | Lower risk at MVP | Legal/compliance budget before public launch |
| Product | Bootstrap vs investors | Notes |
|---|---|---|
| BioScanCheck | TBD — consumer app can scale with marketing | Review EU food/labelling claims before public "certification" messaging |
| WearLab | TBD | Co-founder project — sort equity and IP before SL |
| DroneColonies | TBD — often capital-heavy if hardware/IoT | Product model not documented yet |
| Cat tree | Likely bootstrap / side project | Product model not documented yet |
What maps to infra (technical vs legal)¶
| Asset | Typical legal owner |
|---|---|
| Infra VPS, Forgejo, Woodpecker, Plane | You personally → later HoldCo or tech SL |
| Each product app + subdomain | Product SL when it exists |
| Portfolio / personal site | You personally (not a product company) |
Branded domain (brand.com) |
Same SL that operates that product |
Same servers can serve all products; separation is contracts, domains, and legal entities, not separate VPSes per company.
Technical mapping¶
| Topic | Doc |
|---|---|
| Servers and DNS overview | Platform architecture |
| Apps VPS layout | Apps VPS |
| Onboard a new repo | Onboard project |
| New app checklist | New app |
| Migrate app to apps VPS | Migrate app to apps VPS |
| Secrets and backups | Secrets |
Forgejo org convention:
| Org / namespace | Purpose |
|---|---|
infra |
Platform (devops) |
rafael.gonzalez.albes |
Portfolio |
bioscan |
BioScanCheck and future bioscan products |
alex |
WearLab (wearlab-main) |
| Future | wearlab, dronecolonies, or per-product orgs as repos grow |
Hosting cost notes¶
Current split (today):
| Provider | Role |
|---|---|
| IONOS | Domain, DNS, portfolio web hosting (static SFTP), infra + apps VPS |
Infra VPS (85.215.32.166) |
Platform stack + centralized observability (status, metrics, security) |
Apps VPS (82.165.177.110) |
Product runtimes (WearLab, …) — monitored from infra, not duplicated |
Future optimization (agreed direction — not started): move compute and portfolio origin off expensive IONOS renewals while keeping the same dual-VPS platform.
| Decision | Choice |
|---|---|
| VPS provider | Hetzner Cloud (EU, predictable €) |
| Topology | Keep infra + apps (do not merge) |
| Portfolio | Leave IONOS web hosting → static on infra + Cloudflare |
| DNS | Cloudflare free; domain registration may stay at IONOS short-term |
| Big cloud | No (AWS/GCP not a fit for this stack) |
| Off-site backups | Hetzner Storage Box (or B2) + restic |
Full cutover checklist, phases, risks, and scaling table: Migrate VPS off IONOS (Hetzner plan).
Quick decisions¶
| Question | Answer for now |
|---|---|
| Buy more domains today? | No — use subdomains |
| Register four SLs today? | No — build first; one SL when first product earns |
| Who pays for app HTTPS? | Nobody — Let's Encrypt on Traefik |
When to buy brand.com? |
When SL exists and you go public under that brand |
| Can all products share one apps VPS? | Yes — add DNS + Traefik host per app |
| Duplicate status/metrics/security per VPS? | No — centralized on infra VPS; see Architecture → Observability |
| What goes on IONOS vs VPS today? | IONOS = DNS + domain + portfolio static + both VPS. VPS = APIs, CI, observability, apps |
| Future hosting direction? | Hetzner dual VPS + Cloudflare DNS + portfolio on infra — see Hetzner migration plan |