CloudAlt Company
├── 3 Business Units (BUs) - Strategic/Sale Units
│ ├── BU #1: Hospitality (24 apps)
│ ├── BU #2: Discovery (3 apps)
│ └── BU #3: Services (4 apps)
│
├── 6 Divisions
│ ├── Stay Overnight → Hospitality
│ ├── Roommate Works → Hospitality (Stays) → Roommate Matching and Listings
│ ├── Stay Match → Hospitality → Double Occupancy Travel Partner Match
│ ├── AltFinder → Discovery
│ ├── Pride City → Services → Community Marketplace
│ └── Bonjour Locker → Services
│
├── 31 Branded Apps
│ ├── 18 Stay Overnight apps (general market and multiple community niche)
│ ├── 5 Roommate Works apps (general market and multiple community niche)
│ ├── 1 Stay Match app (general market)
│ ├── 3 AltFinder apps (general market)
│ ├── 1 Pride City app (Pride-niche)
│ ├── 2 Bonjour Locker apps (general market)
│ └── 1 Lingua IT app (field linguists)
│
└── 3 Django Projects - Backend Infrastructure
├── stays/ (port 8000) → Hospitality BU
├── discovery/ (port 8001) → Discovery BU
└── services/ (port 8002) → Services BU
stays/ Django project)Port: 8000
Database: postgres_stays (port 5432)
Membership ID: STAY-XXXXXX
Divisions:
Total Apps: 24 branded applications
Shared Business Logic:
Why Together:
discovery/ Django project)Port: 8001
Database: postgres_discovery (port 5433)
Membership ID: FIND-XXXXXX
Divisions:
Total Apps: 3 branded applications
Shared Business Logic:
Strategic Note:
services/ Django project)Port: 8002
Database: postgres_services (port 5434)
Membership ID: SERV-XXXXXX
Divisions:
Total Apps: 4 branded applications
Shared Business Logic:
Click on any division name to see all apps and domains
| Division | Flagship | BU | Django Project | # Apps | Target Audience |
|---|---|---|---|---|---|
| Stay Overnight | stayovernight.app |
Hospitality | stays/ |
18 | Short-term travel companions, LGBTQ+ travelers, economy of sharing enthusiasts |
| Roommate Works | roommate.works |
Hospitality | stays/ |
5 | Roommate seekers, long-term housing market, LGBTQ+ housing needs |
| Stay Match | staymatch.app |
Hospitality | stays/ |
1 | Single travelers seeking double occupancy travel companions |
| AltFinder | altfinder.app |
Discovery | discovery/ |
3 | Eccentric and alternative-minded urban consumers |
| Pride City | pride.city |
Services | services/ |
1 | LGBTQ+ community event goers |
| Bonjour Locker | bonjour.locker |
Services | services/ |
3 | Travelers needing luggage storage, service providers, marketplace consumers |
Multiple apps per division with:
Flagship: stayovernight.app - Direct descriptor branding
stayovernight.app → Blue #3B82F6 → General market flagship
host-guest.app → Teal #14B8A6 → Official Stay Overnight brand (NEW Nov 2025)
host-guest.com → Companion domain → Brand protection & alt TLD
pinkguest → Pink #F90772 → LGBTQ+ focused
purpleguest → Purple #8A2BE2 → Alternative branding
orangeguest → Orange #FF8C00 → Alternative branding
rainbowhost → Rainbow gradient → LGBTQ+ host focus
greenhost_app → Green #228B22 → Eco-friendly angle
guestroom_city → Urban palette → City focus
guestroom_help → Service colors → Service angle
guestroom_host → Host-centric → Host-focused
guestroom_lgbt → Pride colors → LGBTQ+ focus
guestroom_pink → Pink variant → Pink branding
guestroom_travel → Travel blue → Travel TLD
homestay_international → Global colors → International market
homestay_lgbt → Pride focus → LGBTQ+ homestay
roomlgbt_app → LGBTQ+ rooms → Pride-focused rooms
Flagship: roommate.works - Professional/functional branding
roommate.works → Burgundy + Slate → General market flagship
roommate.guru → Burgundy + Gold → Expert positioning
roommate.help → Burgundy + Sky Blue → Service angle
rooms_gay → Pride colors → LGBTQ+ roommate focus
room_lgbt → Pride branding → LGBTQ+ rooms
Flagship: staymatch.app - Hybrid vacation + long-term stays
staymatch.app → Indigo #4B0082 → Single travelers seeking double occupancy companions
Flagship: altfinder.app - LGBTQ+-friendly POI discovery
altfinder.app → Primary brand → General market flagship
pinkFinder → Pink variant → Alternative branding
orangeFinder → Orange variant → Alternative branding
Flagship: pride.city - LGBTQ+ community hub
pride.city → Pride colors → LGBTQ+ community events & services
Flagship: bonjour.locker - Luggage storage services
bonjour.locker → Primary brand → Luggage storage flagship
bonjour.it.com → Italian market → Geographic variant
lingua.it.com → Language services → Service variant
Total: 31 branded applications across 6 divisions
Market Positioning:
"Django Project = Business Unit = Sale Unit"
❌ NOT 1 Monolith: Would make it impossible to sell individual BUs independently
❌ NOT 6 Projects: Over-engineered for divisions that share business logic
✅ 3 Projects: Perfect balance
cloudalt-backend/
├── stays/ # BU #1: Hospitality
│ ├── manage.py
│ ├── config/
│ ├── members/ # Universal membership (BU-level)
│ ├── stay_overnight/ # Division-specific logic
│ ├── roommate/ # Division-specific logic
│ └── stay_match/ # Division-specific logic
│
├── discovery/ # BU #2: Discovery
│ ├── manage.py
│ ├── config/
│ ├── members/ # Universal membership (BU-level)
│ └── altfinder/ # Division-specific logic
│
└── services/ # BU #3: Services
├── manage.py
├── config/
├── members/ # Universal membership (BU-level)
├── pride_city/ # Division-specific logic
└── bonjour_locker/ # Division-specific logic
Problem Solved: User signs up on pinkGuest → Should auto-login to orangeGuest, roommate_guru, etc.
Solution:
joined_stay_overnight, joined_roommate, joined_stay_matchShared at BU Level:
Division-Specific:
cloudalt-frontend/
├── apps/
│ ├── stay-overnight/ # Division folder
│ │ ├── pinkguest/ # Branded app
│ │ │ ├── web/ # React + Vite
│ │ │ ├── mobile/ # React Native + Expo
│ │ │ └── shared/ # Shared assets, config
│ │ ├── orangeguest/
│ │ ├── greenhost_app/
│ │ └── ... (10 more)
│ │
│ ├── stay_match/
│ │ ├── pinkguest/
│ │ ├── orangeguest/
│ │ └── ... (3 more)
│ │
│ ├── roommate/
│ ├── altFinder/
│ ├── pride_city/
│ └── bonjour_services/
│
└── packages/ # Shared code
├── ui-stay-overnight/ # Division-level UI components
├── ui-web/ # Cross-division web components
├── theme/ # Brand color tokens
├── types/ # TypeScript types
└── services/ # API clients
Global Tokens → Division Tokens → App Tokens
// Global (all apps)
colors.primary.500 = '#000000'
// Division (Stay Overnight)
division['stay-overnight'].primary = '#800020' (burgundy)
// App (pinkGuest)
app['pinkguest-web'].colors.primary = '#F90772' (pink)
app['orangeguest-web'].colors.primary = '#FF8C00' (orange)
Brand Colors:
| Brand | Hex | Used By |
|---|---|---|
| Pink | #F90772 |
pinkGuest, pinkFinder |
| Orange | #FF8C00 |
orangeGuest, orangeFinder |
| Purple | #8A2BE2 |
purpleGuest, roommate_guru |
| Green | #228B22 |
greenHost |
| Burgundy | #800020 |
Stay Overnight flagship, Roommate apps |
GCP Cloud Run (containerized)
├── stays-api:8000 → Hospitality BU
├── discovery-api:8001 → Discovery BU
└── services-api:8002 → Services BU
Each with:
- Auto-scaling
- Load balancing
- PostgreSQL (Supabase managed)
- Cloud Storage (GCP) for media
- Firestore for real-time chat
Cloudflare Pages (static sites)
├── pinkguest.com → Stay Overnight / pinkguest
├── pinkguest.app → Same as above
├── stayovernight.app → Stay Overnight / flagship
├── staymatch.app → Stay Match / flagship
├── roommate.works → Roommate Works / flagship
├── altfinder.app → AltFinder / flagship
├── pride.city → Pride City / flagship
├── bonjour.locker → Bonjour Locker / flagship
└── ... (31 total apps)
Each with:
- Global CDN
- Cloudflare Access (GitHub OAuth)
- GitHub Actions auto-deploy
| Layer | Purpose | Count | Example |
|---|---|---|---|
| Business Units | Strategic grouping, sale units | 3 | Hospitality, Discovery, Services |
| Django Projects | Backend infrastructure | 3 | stays/, discovery/, services/ |
| Divisions | Customer-facing brands | 6 | Stay Overnight, Roommate, Stay Match, altFinder, Pride City, Bonjour |
| Branded Apps | Marketing channels, delivery | 31 | stayovernight, pinkguest, orangeguest, host-guest, etc. |