Build Plan: SkyBrief

12-Week MVP Development Plan


Executive Summary

Product: SkyBrief - EASA-compliant weather briefing platform with predictive intelligence for small Part-CAT operators (1-5 aircraft).

Timeline: 12 weeks to MVP launch

Budget: €50-300/month (phased)

Differentiation: Automated compliance documentation + predictive weather insights using affordable ML (Fireworks.ai)

Geographic Focus: Spain → Portugal → France


Finalized Decisions

Architecture

  • Pattern: Hexagonal (Ports & Adapters) - Clean Architecture
  • Language: Go 1.21+
  • Framework: Echo or Fiber
  • Database: PostgreSQL 15+ (self-hosted on Hetzner)
  • Hosting: Hetzner CX42 (Germany) - €20.76/month
  • Frontend: React + TypeScript + Tailwind CSS
  • PDF Generation: Gotenberg (open source)

Data Sources

  • Core Weather: AviationWeather.gov (FREE)
  • EU Forecasts: Open-Meteo Professional (€150/month from Week 5)
  • Airspace: OpenAIP (FREE)
  • Airports: OurAirports (FREE, static import)
  • Intelligence: Fireworks.ai (~$5/month from Week 7)
  • NOTAMs: Deferred to v2 (architected for future)

Market Strategy

  • Target: Spanish Part-CAT operators (1-5 aircraft)
  • Entry: Madrid Barajas Terminal Ejecutiva, AESA registry
  • Expansion: Portugal → France (Months 6-12)

Product Approach

  • Primary: Compliance automation (EASA audit documentation)
  • Secondary: Predictive intelligence (alerts, trend analysis)
  • NOTAMs: Future premium tier when revenue justifies cost

System Architecture

Hexagonal Architecture Diagram

┌─────────────────────────────────────────────────────────────┐
│                    ADAPTERS (Infrastructure)                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  HTTP API   │  │  PostgreSQL │  │  External Services  │  │
│  │  (Primary)  │  │  (Database) │  │  (Weather, Email)   │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
└─────────┼────────────────┼────────────────────┼─────────────┘
          │                │                    │
          ▼                ▼                    ▼
┌─────────────────────────────────────────────────────────────┐
│              APPLICATION LAYER (Use Cases)                   │
│   ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│   │   Generate   │  │   Check      │  │   Predict    │     │
│   │   Briefing   │  │ Compliance   │  │   Weather    │     │
│   └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘
          │
┌─────────▼───────────────────────────────────────────────────┐
│                  DOMAIN LAYER (Core Logic)                   │
│   ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│   │    Flight    │  │    Weather   │  │ Compliance   │     │
│   │    Entity    │  │   Reading    │  │    Rules     │     │
│   └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘

Directory Structure

/
├── cmd/
│   └── api/
│       └── main.go
├── internal/
│   ├── domain/           # Entities, business rules
│   ├── application/      # Use cases
│   ├── ports/            # Interfaces
│   └── adapters/         # Implementations
│       ├── http/
│       ├── persistence/
│       ├── weather/
│       └── intelligence/
├── migrations/
└── configs/

12-Week Development Timeline

Phase 1: Foundation (Weeks 1-4)

Goal: Core infrastructure and basic weather integration

Week 1: Project Setup & Architecture

Tasks: - [ ] Initialize Go project with Go modules - [ ] Set up hexagonal directory structure - [ ] Configure Docker and Docker Compose - [ ] Set up Hetzner CX42 server - [ ] Configure PostgreSQL 15 with initial schema - [ ] Set up CI/CD pipeline (GitHub Actions) - [ ] Configure logging (slog) and error handling - [ ] Set up monitoring (Grafana + Prometheus)

Deliverables: - Running server with database - Development environment ready - CI/CD pipeline operational

Validation: make dev starts all services locally

Week 2: Domain Layer & Authentication

Tasks: - [ ] Define core entities (Flight, WeatherReading, ComplianceReport, Alert) - [ ] Implement domain services (ComplianceValidator) - [ ] Create repository interfaces (ports) - [ ] Implement PostgreSQL repositories (adapters) - [ ] Set up JWT authentication - [ ] Create user management (operators, dispatchers) - [ ] Implement role-based access control

Deliverables: - Domain layer with core business logic - Database schema implemented - Authentication system working

Validation: Unit tests for domain logic pass

Week 3: Weather Integration (Part 1)

Tasks: - [ ] Implement WeatherSource interface - [ ] Build AviationWeather.gov adapter - Parse METAR format - Parse TAF format - Error handling and retries - [ ] Create composite weather service (aggregates multiple sources) - [ ] Implement weather caching (Redis or in-memory) - [ ] Build weather data normalizer

Deliverables: - Working AviationWeather.gov integration - Weather data fetching and parsing - Normalized weather data structure

Validation: Can fetch and parse weather for test airports (LEMD, LEMG)

Week 4: Basic API & Frontend Setup

Tasks: - [ ] Create HTTP handlers (Echo/Fiber) - [ ] Implement flight CRUD endpoints - [ ] Set up React project with TypeScript - [ ] Configure Tailwind CSS - [ ] Create basic UI components - Flight creation form - Weather display component - [ ] Connect frontend to backend API - [ ] Set up PDF generation (Gotenberg)

Deliverables: - REST API with flight management - React frontend with basic UI - End-to-end: Create flight → View weather

Validation Gate: Can create a flight and view raw weather data in UI


Phase 2: Compliance Core (Weeks 5-6)

Goal: EASA compliance automation

Week 5: Compliance Engine

Tasks: - [ ] Research EASA AMC1 CAT.OP.MPA.175 requirements - [ ] Implement compliance rule engine - Check METAR presence - Check TAF presence - Check SIGMET for route - [ ] Create compliance report generator - [ ] Build PDF report template (EASA-compliant format) - [ ] Implement audit trail logging - [ ] Add Open-Meteo Professional integration (€150/month) - Sign up for API key - Implement adapter - EU forecast enhancement

Deliverables: - Compliance validation working - PDF report generation - Open-Meteo integration active

Validation: Generate compliance report for test flight

Week 6: Report Management & Polish

Tasks: - [ ] Build report archival system - [ ] Implement report search and filtering - [ ] Create bulk export for audits - [ ] Add email delivery of reports - [ ] Build compliance dashboard (UI) - List of flights - Compliance status - Report download - [ ] Implement 12-month retention logic - [ ] Add data integrity checks (checksums)

Deliverables: - Complete compliance workflow - Dashboard UI - Export functionality

Validation Gate: End-to-end compliance workflow working - Create flight → Generate briefing → Download PDF → Archive report


Phase 3: Intelligence Layer (Weeks 7-10)

Goal: Predictive alerts and trend analysis

Week 7-8: Predictive Alerts (Priority A)

Tasks: - [ ] Set up Fireworks.ai account (~$5/month) - [ ] Implement IntelligenceService interface - [ ] Build FireworksAdapter (7B parameter model) - [ ] Create alert rules engine: - Weather deterioration vs forecast - Conditions approaching minima - Rapid weather changes (gusts, visibility) - [ ] Implement alert generation logic - [ ] Build alert notification system (email) - [ ] Create alert acknowledgment workflow - [ ] Build alerts dashboard (UI)

Deliverables: - Fireworks.ai integration working - Alert system operational - 3 alert types implemented

Validation: Alerts trigger correctly for test scenarios

Week 9: Trend Analysis (Priority C)

Tasks: - [ ] Implement historical data storage - [ ] Build airport-specific weather patterns - [ ] Create trend analysis algorithms - Seasonal patterns - Time-of-day patterns - Day-of-week patterns - [ ] Implement confidence scoring - [ ] Build trend visualization (UI) - [ ] Add "typical conditions" display

Deliverables: - Historical analysis working - Trend visualizations - Pattern detection

Validation: Can view historical trends for airports

Week 10: Route Optimization Prep (Priority B)

Tasks: - [ ] Integrate OpenAIP for airspace data - [ ] Import OurAirports data (static) - [ ] Build route calculation infrastructure - [ ] Create alternate airport finder - [ ] Implement weather comparison along route - [ ] Build basic route visualization (map) - [ ] Add route weather overlay

Deliverables: - Route visualization - Alternate airport weather - Basic route analysis

Validation Gate: Intelligence features provide actionable insights - Can view route weather - Alerts are useful and accurate - Trends provide value


Phase 4: Launch Prep (Weeks 11-12)

Goal: Beta testing and launch

Week 11: Polish & Optimization

Tasks: - [ ] UI/UX refinement based on internal testing - [ ] Performance optimization: - API response times - Database query optimization - Frontend bundle size - [ ] Security audit: - Input validation - SQL injection prevention - XSS protection - [ ] Error handling improvements - [ ] Documentation: - API documentation - User guide - Deployment guide - [ ] Load testing

Deliverables: - Production-ready codebase - Documentation complete - Security hardened

Week 12: Beta Launch

Tasks: - [ ] Deploy to production (Hetzner) - [ ] Onboard 3-5 beta operators - [ ] Daily support and feedback collection - [ ] Critical bug fixes - [ ] Create landing page - [ ] Set up pricing page - [ ] Configure payment processing (Stripe) - [ ] Create onboarding flow - [ ] Write case study template

Deliverables: - Live production system - 3-5 active beta users - Landing page + pricing - Payment system ready

Validation Gate: 3+ beta users actively using the platform - Briefings generated regularly - Positive feedback on compliance features - No critical bugs


Detailed Technical Specifications

Database Schema

-- Core tables (v1)
CREATE TABLE operators (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    country VARCHAR(2) NOT NULL,
    operator_type VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE aircraft (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    operator_id UUID REFERENCES operators(id),
    registration VARCHAR(20) NOT NULL,
    type VARCHAR(100) NOT NULL,
    icao_type VARCHAR(10),
    home_base VARCHAR(4)
);

CREATE TABLE flights (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    operator_id UUID REFERENCES operators(id),
    aircraft_id UUID REFERENCES aircraft(id),
    callsign VARCHAR(20),
    origin VARCHAR(4) NOT NULL,
    destination VARCHAR(4) NOT NULL,
    etd TIMESTAMP NOT NULL,
    eta TIMESTAMP,
    status VARCHAR(50) DEFAULT 'planned',
    created_by UUID NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE weather_readings (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    flight_id UUID REFERENCES flights(id),
    reading_type VARCHAR(20) NOT NULL,
    station VARCHAR(4) NOT NULL,
    raw_text TEXT NOT NULL,
    parsed_data JSONB,
    timestamp TIMESTAMP NOT NULL,
    source VARCHAR(100) NOT NULL,
    fetched_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE compliance_reports (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    flight_id UUID REFERENCES flights(id),
    generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    generated_by UUID NOT NULL,
    easa_regulation VARCHAR(50) NOT NULL,
    is_compliant BOOLEAN NOT NULL,
    compliance_data JSONB,
    document_path VARCHAR(500),
    retention_until TIMESTAMP
);

CREATE TABLE alerts (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    flight_id UUID REFERENCES flights(id),
    alert_type VARCHAR(50) NOT NULL,
    severity VARCHAR(20) NOT NULL,
    message TEXT NOT NULL,
    recommendation TEXT,
    triggered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    acknowledged_at TIMESTAMP,
    acknowledged_by UUID
);

API Endpoints

# Authentication
POST   /api/v1/auth/login
POST   /api/v1/auth/refresh
POST   /api/v1/auth/logout

# Flights
GET    /api/v1/flights
POST   /api/v1/flights
GET    /api/v1/flights/{id}
PUT    /api/v1/flights/{id}
DELETE /api/v1/flights/{id}

# Weather Briefings
POST   /api/v1/flights/{id}/briefing
GET    /api/v1/flights/{id}/briefing
GET    /api/v1/briefings/{id}/pdf

# Compliance
GET    /api/v1/flights/{id}/compliance
GET    /api/v1/compliance/reports
GET    /api/v1/compliance/export

# Intelligence
GET    /api/v1/flights/{id}/alerts
POST   /api/v1/alerts/{id}/acknowledge
GET    /api/v1/alerts/history

# Airports (reference data)
GET    /api/v1/airports
GET    /api/v1/airports/{icao}
GET    /api/v1/airports/{icao}/weather

External Integrations

AviationWeather.gov (FREE): - Endpoint: https://aviationweather.gov/api/data/metar - Rate limit: 100 req/min - Format: XML/JSON - Coverage: Global

Open-Meteo Professional (€150/month): - Endpoint: https://api.open-meteo.com/v1/forecast - Resolution: 1km - Updates: Hourly - Coverage: Europe

Fireworks.ai (~$5/month): - Model: accounts/fireworks/models/mixtral-8x7b - Cost: $0.50 per 1M tokens - Use: Weather trend analysis


Budget Breakdown

Infrastructure Costs

Component Monthly Cost Notes
Hetzner CX42 €20.76 4 vCPU, 16GB RAM
Block storage €5-10 Report storage, backups
Domain + DNS €2 Cloudflare
Total Infrastructure €28-33

Data Source Costs (Phased)

Phase Services Monthly Cost
Weeks 1-4 AviationWeather (free) €0
Weeks 5-6 + Open-Meteo Pro €150
Weeks 7-10 + Fireworks.ai + WeatherAPI €220
Weeks 11-12 All services active €250-300

Total Budget by Phase

Phase Timeline Monthly Cost
Phase 1 (Weeks 1-4) Foundation €28-33
Phase 2 (Weeks 5-6) Compliance €178-183
Phase 3 (Weeks 7-10) Intelligence €228-233
Phase 4 (Weeks 11-12) Launch €278-283

Success Criteria

Technical Milestones

  • [ ] Week 4: Can create flight and view weather
  • [ ] Week 6: Can generate EASA-compliant PDF report
  • [ ] Week 8: Fireworks.ai integration working
  • [ ] Week 10: Intelligence features operational
  • [ ] Week 12: 3+ beta users actively using platform

Business Milestones

  • [ ] Week 4: First operator conversation completed
  • [ ] Week 6: 5 operators in pipeline
  • [ ] Week 8: First beta user committed
  • [ ] Week 10: Landing page live
  • [ ] Week 12: 3-5 beta users onboarded

Quality Gates

  • [ ] All API endpoints tested
  • [ ] PDF reports validated for EASA compliance
  • [ ] Alert accuracy >80%
  • [ ] Page load time <2 seconds
  • [ ] 99% uptime during beta

Risk Management

Technical Risks

Risk Mitigation
Weather API failures Multiple providers, caching, fallback logic
Fireworks.ai costs exceed budget Set hard limits, monitor usage
PDF generation performance Async processing, queue system
Database performance Indexing, query optimization, connection pooling

Business Risks

Risk Mitigation
Operators want NOTAMs immediately Manual import feature v1.1
Not enough beta users Aggressive outreach, free extended trial
Competition releases similar product Focus on compliance niche, faster iteration
Regulatory changes Stay active in EBAA, flexible architecture

Post-MVP Roadmap

Month 4-6: Growth

  • [ ] Onboard 20 paying customers
  • [ ] Intelligence feature refinement
  • [ ] API access for integrations
  • [ ] Portugal market entry

Month 7-12: Scale

  • [ ] Evaluate NOTAM integration (revenue vs cost)
  • [ ] France market entry
  • [ ] Mobile app (v2)
  • [ ] 100+ paying customers

Appendices

A. EASA Regulatory References

  • Regulation (EU) 965/2012 - Air Operations
  • ORO.MLR.100 - Record retention (12 months)
  • AMC1 CAT.OP.MPA.175 - Flight preparation requirements
  • AMC1 CAT.OP.MPA.180 - Meteorological information

B. Development Commands

# Start development environment
make dev

# Run tests
make test

# Build for production
make build

# Deploy to Hetzner
make deploy

C. Resources

  • Go: https://go.dev/doc/
  • Echo Framework: https://echo.labstack.com/
  • React: https://react.dev/
  • Tailwind CSS: https://tailwindcss.com/
  • AviationWeather API: https://aviationweather.gov/data/api/
  • Open-Meteo: https://open-meteo.com/en/docs
  • Fireworks.ai: https://docs.fireworks.ai/


Document Version: 1.0
Created: March 4, 2026
Next Review: End of Week 4

results matching ""

    No results matching ""