OX Bema - URL Structure & Versioning
Overview
This document defines the comprehensive URL structure and versioning strategy for OX Agry's corporate website and application ecosystem.
System Architecture
Corporate Website Ecosystem
- Primary Website: Content management and corporate functionality
- Corporate API: Backend services for the corporate website
App Ecosystem
- Multi-version Applications: Historical versions (v1), current production (v2), and development versions (v3+)
- Independent APIs: Separate backend services for each app version
URL Structure Patterns
Corporate Website
| Service | URL Pattern | Example |
|---|---|---|
| Production Website | www.oxbema.com | www.oxbema.com |
| Corporate API | api-www.oxbema.com | api-www.oxbema.com |
| Corporate Media | media-www.oxbema.com | media-www.oxbema.com |
| Staging Website | {env}-v{major}.www.oxbema.com | staging.www.oxbema.com |
| Staging API | api-{env}-v{major}-www.oxbema.com | api-staging-www.oxbema.com |
| Staging Media | media-{env}-v{major}-www.oxbema.com | media-staging-www.oxbema.com |
| Versioned Website | v{major}-{minor}.www.oxbema.com | v2-1.www.oxbema.com |
| Versioned API | api-v{major}-{minor}-www.oxbema.com | api-v2-1-www.oxbema.com |
| Versioned Media | media-v{major}-{minor}-www.oxbema.com | media-v2-1-www.oxbema.com |
App Ecosystem
| Service | URL Pattern | Example |
|---|---|---|
| App Frontend | v{major}-app.oxbema.com | v2-app.oxbema.com |
| App API | api-v{major}-app.oxbema.com | api-v2-app.oxbema.com |
| App Media | media-v{major}-app.oxbema.com | media-v2-app.oxbema.com |
| Staging Frontend | {env}-v{major}.app.oxbema.com | staging-v2.app.oxbema.com |
| Staging API | api-{env}-v{major}-app.oxbema.com | api-staging-v2-app.oxbema.com |
| Staging Media | media-{env}-v{major}-app.oxbema.com | media-staging-v2-app.oxbema.com |
| Versioned Frontend | v{major}-{minor}.app.oxbema.com | v2-1.app.oxbema.com |
| Versioned API | api-v{major}-{minor}-app.oxbema.com | api-v2-1-app.oxbema.com |
| Versioned Media | media-v{major}-{minor}-app.oxbema.com | media-v2-1-app.oxbema.com |
Versioning Strategy
Version Number Format
- Major versions:
v1,v2,v3(breaking changes) - Major.Minor versions:
v2-1,v3-2(feature releases) - Patch versions: Handled internally, not in DNS
Rationale for Major.Minor in DNS
Based on industry best practices:
Advantages:
- Stability: Patch versions (2.1.0 → 2.1.1) don't require DNS changes
- Client-friendly: Users don't need to update URLs for bug fixes
- Breaking change boundary: Major.Minor represents the API contract
- Operational efficiency: Reduces DNS churn
Trade-offs:
- Less granular: Patch-level clarity is lost in URLs
- Internal tracking: Need to track exact versions in deployment docs/headers
Environment Strategy
- Production: Clean version URLs (
v2.app.oxbema.com) - Staging: Environment prefix (
staging-v2.app.oxbema.com) - Feature branches: Specific version tags (
v2-1.app.oxbema.com)
Complete URL Examples
Current Production Setup
Corporate:
├── www.oxbema.com (Corporate website)
├── api-www.oxbema.com (Corporate API)
├── media-www.oxbema.com (Corporate media)
├── staging.www.oxbema.com (Corporate staging)
├── api-staging-www.oxbema.com (Corporate staging API)
├── media-staging-www.oxbema.com (Corporate staging media)
├── v2-1.www.oxbema.com (Versioned corporate website)
├── api-v2-1-www.oxbema.com (Versioned corporate API)
└── media-v2-1-www.oxbema.com (Versioned corporate media)
App Ecosystem:
├── v1.app.oxbema.com (Legacy app - historical data)
├── api-v1-app.oxbema.com (Legacy API)
├── media-v1-app.oxbema.com (Legacy media)
├── v2.app.oxbema.com (Current production app)
├── api-v2-app.oxbema.com (Current production API)
├── media-v2-app.oxbema.com (Current production media)
├── staging-v2.app.oxbema.com (Current staging)
├── api-staging-v2-app.oxbema.com (Current staging API)
├── media-staging-v2-app.oxbema.com (Current staging media)
├── v3.app.oxbema.com (Next version staging)
├── api-staging-v3-app.oxbema.com (Next version staging API)
├── media-staging-v3-app.oxbema.com (Next version staging media)
├── v2-1.app.oxbema.com (Versioned app release)
├── api-v2-1-app.oxbema.com (Versioned app API)
└── media-v2-1-app.oxbema.com (Versioned app media)
User-Friendly Aliases
app.oxbema.com → v2.app.oxbema.com (Current production redirect)
api-app.oxbema.com → api-v2-app.oxbema.com (Corporate API shortcut)
media-app.oxbema.com → media-v2-app.oxbema.com (Corporate media shortcut)
Design Principles
1. Consistency
- All URLs follow predictable patterns
- Same hierarchy across corporate and app ecosystems
- Version indicators in consistent positions
2. Clarity
- Service type clearly indicated (
www,app,api,media) - Version immediately visible
- Environment explicitly stated when not production
3. Scalability
- Easy to add new versions
- Environment strategy scales with team growth
- Supports independent deployment cycles
4. User Experience
- Clean, professional URLs
- Shorter URLs for user-facing services
- Intuitive naming that matches user expectations
5. Technical Considerations
- DNS-compliant (hyphens in version numbers)
- SSL wildcard-friendly
- CDN and load balancer compatible
Operational Guidelines
DNS Management
- Use hyphens for all separators (DNS compliant and SSL-friendly)
- Single-level subdomains only (compatible with Cloudflare free plan)
- Automatic SSL coverage with
*.app.oxbema.com,*.www.oxbema.comwildcards - Set up health checks for all production URLs
Deployment Strategy
- Pin major.minor versions in DNS
- Handle patch versions through application deployment
- Use feature flags for gradual rollouts within versions
Documentation Requirements
- Maintain API documentation at consistent URLs
- Version API docs with the same major.minor pattern
- Include exact patch version in deployment headers
Monitoring
- Track traffic patterns across versions
- Monitor redirect performance
- Alert on DNS resolution issues
Best Practices Summary
- Keep it simple: Avoid unnecessary redirects or complex nesting
- Be consistent: Follow the established patterns across all services
- Plan for scale: Consider future versions and services in your structure
- User-first: Prioritize clean URLs for user-facing services
- Document everything: Maintain clear records of all URL mappings and their purposes
Document Version: 1.0
Last Updated: August 2025
Status: Approved for Implementation