Files
flight-slack/DESIGN.md

4.9 KiB

Flight Tracker Slack Bot - Design Document

Overview

A Slack bot that allows users to track their flights and automatically posts updates to their personal channels. The bot monitors flight status changes and provides real-time notifications about delays, gate changes, cancellations, and other important flight information.

Features

Core Functionality

  • Track multiple flights per user
  • Automatic flight status updates
  • Personal channel notifications
  • Flight search and booking reference lookup
  • Timezone-aware scheduling

Commands

/flight-add

Usage: /flight-add [airport_code] [DD-MM-YY] Description: Add a new flight to track Example: /flight-add AA1234 2024-01-15 LAX JFK

/flight-remove

Usage: /flight-remove [flight_id] Description: Stop tracking a specific flight Example: /flight-remove 12345

/flight-list

Usage: /flight-list Description: Display all currently tracked flights for the user

/flight-status

Usage: /flight-status [flight_id] Description: Get current status of a specific flight Example: /flight-status 12345

Data Models

Usere airport coordinate data to determine proxim

  • id: Unique identifier
  • slack_user_id: Slack user ID
  • slack_channel_id: User's personal channel ID
  • timezone: User's preferred timezone
  • created_at: Account creation timestamp
  • updated_at: Last update timestamp

Flight

  • id: Unique identifier
  • user_id: Reference to User
  • flight_number: Airline flight number
  • airline: Airline code/name
  • departure_airport: IATA departure airport code
  • arrival_airport: IATA arrival airport code
  • departure_time: Scheduled departure time
  • arrival_time: Scheduled arrival time
  • flight_date: Date of flight
  • status: Current flight status
  • gate: Departure gate (if available)
  • terminal: Departure terminal (if available)
  • booking_reference: Optional booking reference
  • is_active: Whether to continue tracking
  • created_at: Timestamp when added
  • updated_at: Last status update

FlightUpdate

  • id: Unique identifier
  • flight_id: Reference to Flight
  • status: New status
  • message: Update message
  • timestamp: When the update occurred
  • notification_sent: Whether notification was sent

System Architecture

Components

  1. Slack Bot Handler: Processes incoming commands and events
  2. Flight API Integration: Interfaces with flight data providers
  3. Notification Service: Sends updates to user channels
  4. Database Layer: Stores user and flight data
  5. Scheduler: Periodic flight status checks

External APIs

  • Flight Data API: Real-time flight information (e.g., FlightAware, Aviation Stack)
  • Airport Data API: Airport and airline information
  • Slack API: Bot interactions and messaging

Event Handling

Command Processing

  1. Parse incoming slash command
  2. Validate parameters
  3. Execute appropriate handler
  4. Store data in database
  5. Send confirmation response

Flight Status Updates

  1. Scheduled polling of flight APIs
  2. Compare current status with stored status
  3. Detect changes (delays, gate changes, cancellations)
  4. Generate appropriate notification
  5. Send message to user's channel
  6. Update database records

Error Handling

  • Invalid flight numbers
  • API rate limiting
  • Network timeouts
  • Database connection issues
  • Missing user permissions

Notification Types

Status Changes

  • Delayed: Flight departure/arrival time changes
  • On Time: Flight returns to scheduled time
  • Boarding: Flight begins boarding process
  • Departed: Flight has left the gate
  • Arrived: Flight has reached destination
  • Cancelled: Flight has been cancelled
  • Gate Change: Departure gate has changed
  • Terminal Change: Departure terminal has changed

Timing

  • 24 hours before: Flight reminder
  • 2 hours before: Check-in reminder
  • Real-time: Status change notifications
  • Post-flight: Arrival confirmation

Security & Privacy

Data Protection

  • Encrypt sensitive flight information
  • Store minimal required data
  • Implement data retention policies
  • Secure API key management

Access Control

  • User-specific flight data isolation
  • Personal channel restrictions
  • Rate limiting for API calls

Configuration

Environment Variables

  • SLACK_BOT_TOKEN: Bot authentication token
  • SLACK_APP_TOKEN: App-level token for socket mode
  • FLIGHT_API_KEY: Flight data API credentials
  • DATABASE_URL: Database connection string
  • NOTIFICATION_INTERVAL: How often to check for updates (default: 5 minutes)

Settings

  • Default notification preferences
  • Timezone handling
  • API rate limits
  • Maximum flights per user

Deployment

Requirements

  • Node.js runtime
  • PostgreSQL database
  • Redis for caching (optional)
  • External flight data API access

Monitoring

  • Flight API response times
  • Database performance
  • Notification delivery rates
  • Error tracking and logging