Skip to content

A defence & aerospace market intelligence platform project combining financial data, industry news, and AI insights. Try it: https://october.circuit-x.com

Notifications You must be signed in to change notification settings

Neph-dev/october_backend

Repository files navigation

October Backend

Try it on the Octob3r platform: https://october.circuit-x.com

image

πŸ“š Documentation

A robust Go server built following NASA's "Power of 10" rules for clean and safe code, featuring MongoDB integration, company data management, and rate-limited APIs.

NASA Clean Code Compliance

This application follows NASA's coding standards for critical systems:

  1. Avoid complex flow constructs - No goto statements, setjmp, or recursion
  2. No dynamic memory allocation - All memory allocations are at startup
  3. No functions larger than 60 lines - All functions are kept simple and focused
  4. Return value checking - All function return values are checked
  5. Limited scope - Variables have minimal scope
  6. Runtime assertions - Critical assumptions are verified
  7. Restricted preprocessor use - Minimal macro usage
  8. Limited pointer use - Careful pointer management
  9. Compile with warnings - All warnings treated as errors
  10. Static analysis - Code is regularly analyzed for issues

Features

Core Infrastructure

  • Graceful Shutdown: Proper signal handling and resource cleanup
  • Structured Logging: JSON-formatted logs with context
  • Configuration Management: Environment-based configuration with validation
  • Error Handling: Comprehensive error handling and recovery
  • Health Checks: Multiple monitoring endpoints (/health, /liveness, /readiness)
  • Metrics Collection: Prometheus-style metrics with JSON export
  • Middleware: Request logging, recovery, metrics tracking, and security middleware
  • Timeouts: Proper timeout handling for all operations
  • AWS Deployment: Production deployment on ECS Fargate with ALB and custom domain

Database Integration

  • MongoDB Support: Full MongoDB integration with connection pooling
  • Company Management: CRUD operations for defense/aerospace companies
  • News Processing: Automated RSS feed processing and article storage
  • Data Validation: Comprehensive input validation and sanitization
  • Indexing: Optimized database indexes for performance

News & RSS Features

  • RSS Feed Processing: Automated collection from company feeds
  • Article Management: Storage with deduplication and validation
  • Sentiment Analysis: Basic sentiment scoring for articles
  • Relevance Scoring: Company relevance calculation
  • Filtering: Advanced filtering by company, date, sentiment, and relevance
  • Pagination: Efficient pagination for large datasets

API Features

  • Rate Limiting: Token bucket algorithm with per-IP tracking (10 req/s, burst 20)
  • RESTful Endpoints: Clean REST API design
  • Error Responses: Consistent error response format
  • Request Logging: Detailed request/response logging
  • Market Data Integration: Real-time stock quotes via Finnhub API
  • CORS Support: Cross-origin resource sharing enabled
  • Metrics Export: Prometheus-compatible metrics in text and JSON formats

AI/RAG Features

  • Natural Language Queries: Ask questions in plain English about companies
  • OpenAI Integration: Powered by GPT-4o-mini for cost-effective AI responses
  • Retrieval-Augmented Generation: Responses backed by real news articles
  • Web Search Integration: Google Custom Search for company-related topics when database context is insufficient
  • Article Summarization: AI-powered summarization of individual news articles
  • Memory Caching: In-memory cache for AI summaries to reduce API costs and improve performance
  • Cache Statistics: Monitor cache hit/miss rates and performance
  • Company-Based Validation: Web search allowed for ANY question about companies in our database
  • Query Analysis: Intelligent parsing of user intent and entities
  • Source Attribution: See which articles and web sources were used for each response
  • Confidence Scoring: Reliability assessment for AI-generated answers
  • Company Context: Focus queries on specific companies in the database
  • AI-Powered Filtering: Let OpenAI's intelligence handle response appropriateness

Quick Start

Prerequisites

  • Go 1.21 or later
  • MongoDB 4.4 or later
  • OpenAI API key (for AI/RAG features)
  • Google Custom Search API key and Engine ID (for web search)
  • Finnhub API key (for market data features)

Installation

  1. Clone the repository

  2. Install dependencies:

    go mod download
  3. Set up environment:

    cp .env.example .env
    # Edit .env with your configuration, including:
    # OPENAI_API_KEY=your_openai_api_key_here
    # CUSTOM_SEARCH_API_KEY=your_google_api_key_here
    # CUSTOM_SEARCH_ENGINE_ID=your_search_engine_id_here
    # FINNHUB_API_KEY=your_finnhub_api_key_here
  4. Set up conventional commit rules (recommended):

    ./scripts/setup-commit-rules.sh

    This configures your local git to use commit message templates and validation.

  5. Start MongoDB (using Docker):

    docker run -d --name mongodb -p 27017:27017 mongo:latest
  6. Build and run:

    make build
    make seed-data  # Seed initial company data
    make run
    
    
  7. Build and run:

    make build
    make seed-data  # Seed initial company data
    make run

API Endpoints

Health & Monitoring

Health Check

GET /health

Basic health check endpoint.

Example:

curl https://oct.circuit-x.com/health

Liveness Probe

GET /liveness

Kubernetes-style liveness probe (minimal check).

Readiness Probe

GET /readiness

Kubernetes-style readiness probe (checks dependencies).

Metrics (Prometheus format)

GET /metrics

Prometheus-style metrics in text format.

Metrics (JSON format)

GET /metrics.json

Detailed metrics in JSON format including request counts, latencies, and cache statistics.

Example:

curl https://oct.circuit-x.com/metrics.json

Company API

Get All Companies

GET /companies

Rate Limited: 10 requests/second, burst of 20

Example:

curl https://oct.circuit-x.com/companies

Get Company by Name

GET /company/{company-name}

Rate Limited: 10 requests/second, burst of 20

Examples:

# Get Lockheed Martin
curl https://oct.circuit-x.com/company/Lockheed%20Martin

# Get Raytheon Technologies  
curl https://oct.circuit-x.com/company/Raytheon%20Technologies

News API

Get News Articles

GET /news

Rate Limited: 10 requests/second, burst of 20

Query Parameters:

  • company: Filter by company name
  • start_date: Filter from date (YYYY-MM-DD)
  • end_date: Filter until date (YYYY-MM-DD)
  • sentiment: Filter by sentiment (-2 to 2)
  • min_relevance: Minimum relevance score (0.0 to 1.0)
  • limit: Number of results (default: 50, max: 1000)
  • offset: Pagination offset

Examples:

# Get recent news for Lockheed Martin
curl "https://oct.circuit-x.com/news?company=Lockheed%20Martin&limit=10"

# Get positive news from last month
curl "https://oct.circuit-x.com/news?sentiment=1&start_date=2024-09-23&end_date=2024-10-23"

# Get high relevance news with pagination
curl "https://oct.circuit-x.com/news?min_relevance=0.8&limit=20&offset=40"

Get Specific Article

GET /news/{id}

Example:

curl https://oct.circuit-x.com/news/507f1f77bcf86cd799439011

Get News by Company

GET /news/company/{name}

Rate Limited: 10 requests/second, burst of 20

Example:

curl https://oct.circuit-x.com/news/company/Lockheed%20Martin

AI/RAG API

Ask AI Questions

POST /ai/query

Rate Limited: 10 requests/second, burst of 20

Request Body:

{
  "question": "How did RTX perform this quarter?",
  "company_context": ["Raytheon Technologies"]
}

Examples:

# Financial performance query
curl -X POST https://oct.circuit-x.com/ai/query \
  -H "Content-Type: application/json" \
  -d '{"question": "How did RTX perform this quarter?"}'

# Defense contracts query
curl -X POST https://oct.circuit-x.com/ai/query \
  -H "Content-Type: application/json" \
  -d '{"question": "What defense contracts did RTX recently win?"}'

# Military developments query
curl -X POST https://oct.circuit-x.com/ai/query \
  -H "Content-Type: application/json" \
  -d '{"question": "What are the latest military training developments?", "company_context": ["US War Department"]}'

Analyze Query Intent

POST /ai/analyze

Request Body:

{
  "question": "What were RTX earnings this quarter?"
}

Example:

curl -X POST https://oct.circuit-x.com/ai/analyze \
  -H "Content-Type: application/json" \
  -d '{"question": "What were RTX earnings this quarter?"}'

Web Search for Defense Topics

POST /ai/web-search

Request Body:

{
  "question": "Latest defense contracts for Raytheon",
  "companies": ["Raytheon Technologies"]
}

Example:

curl -X POST https://oct.circuit-x.com/ai/web-search \
  -H "Content-Type: application/json" \
  -d '{"question": "Latest defense contracts for Raytheon", "companies": ["Raytheon Technologies"]}'

Note: Web search is allowed for ANY question about companies that exist in our database. OpenAI's intelligence handles response appropriateness.

Summarize Article

GET /ai/summarise/{articleId}

Rate Limited: 10 requests/second, burst of 20

Generate an AI-powered summary of a specific news article. Results are cached in memory to reduce API costs.

Example:

curl https://oct.circuit-x.com/ai/summarise/507f1f77bcf86cd799439011

Response:

{
  "article_id": "507f1f77bcf86cd799439011",
  "summary": "Lockheed Martin announced Q3 earnings showing...",
  "key_points": [
    "Revenue increased by 12%",
    "New defense contract worth $2.5B",
    "F-35 production ramping up"
  ],
  "sentiment": "positive",
  "cached": false,
  "generated_at": "2024-10-23T10:30:00Z"
}

Cache Statistics

GET /ai/cache/stats

Rate Limited: 10 requests/second, burst of 20

Get statistics about the AI summary cache performance.

Example:

curl https://oct.circuit-x.com/ai/cache/stats

Response:

{
  "total_items": 145,
  "hits": 892,
  "misses": 145,
  "hit_rate": 0.86,
  "evictions": 12
}

Market Data API

Real-time stock market data powered by Finnhub.

Get Stock Quote

GET /market/quote/{ticker}

Rate Limited: 10 requests/second, burst of 20

Example:

# Get Raytheon Technologies quote
curl https://oct.circuit-x.com/market/quote/RTX

Response:

{
  "ticker": "RTX",
  "current_price": 92.45,
  "change": 1.23,
  "percent_change": 1.35,
  "high": 93.12,
  "low": 91.87,
  "open": 92.00,
  "previous_close": 91.22,
  "timestamp": "2024-10-23T16:00:00Z"
}

Get Multiple Quotes

GET /market/quotes?tickers=RTX,LMT,NOC

Rate Limited: 10 requests/second, burst of 20

Query Parameters:

  • tickers: Comma-separated list of ticker symbols

Example:

curl "https://oct.circuit-x.com/market/quotes?tickers=RTX,LMT,NOC"

Get Available Tickers

GET /market/tickers

Rate Limited: 10 requests/second, burst of 20

Returns all available tickers from companies in the database.

Example:

curl https://oct.circuit-x.com/market/tickers

Response:

{
  "tickers": [
    {
      "ticker": "RTX",
      "company": "Raytheon Technologies",
      "industry": "Aerospace"
    },
    {
      "ticker": "LMT",
      "company": "Lockheed Martin",
      "industry": "Defense"
    }
  ],
  "count": 2
}

Get Market Status

GET /market/status/{exchange}

Rate Limited: 10 requests/second, burst of 20

Example:

curl https://oct.circuit-x.com/market/status/US

Response:

{
  "exchange": "US",
  "is_open": true,
  "status": "open",
  "timezone": "America/New_York",
  "current_time": "2024-10-23T14:30:00Z"
}

Pre-loaded Companies

The system includes two defense/aerospace companies:

  1. Lockheed Martin (LMT)

  2. Raytheon Technologies (RTX)

RSS Feed Processing

The application includes automated RSS feed processing to collect and store news articles:

Automatic Background Refresh

The server automatically processes RSS feeds every 2 hours in the background. This happens:

  • Immediately on application startup
  • Every 2 hours thereafter
  • For all companies in the database

No manual intervention needed for production deployments!

Manual Processing Commands

# Seed company data first
make seed-data

# Process all company RSS feeds
make process-feeds

# Process specific company feed
make process-feed COMPANY="Lockheed Martin"

# Direct command usage
./bin/feed-processor
./bin/feed-processor -company="Raytheon Technologies"

Article Processing Features

  • Deduplication: Articles are deduplicated using GUID or URL
  • Sentiment Analysis: Basic sentiment scoring (-2 to +2)
  • Relevance Scoring: Company relevance calculation (0.0 to 1.0)
  • Automatic Indexing: Database indexes for optimal query performance

Architecture

Project Structure

cmd/
β”œβ”€β”€ api/main.go              # Application entry point
β”œβ”€β”€ seed/main.go             # Database seeding utility
└── feed-processor/main.go   # RSS feed processor
config/                      # Configuration management
pkg/
β”œβ”€β”€ logger/                  # Structured logging
└── metrics/                 # Metrics collection
internal/
β”œβ”€β”€ domain/
β”‚   β”œβ”€β”€ ai/                  # AI/RAG business logic
β”‚   β”œβ”€β”€ company/             # Company business logic
β”‚   β”œβ”€β”€ market/              # Market data business logic
β”‚   β”œβ”€β”€ news/                # News business logic
β”‚   └── shared/              # Shared domain models
β”œβ”€β”€ infra/
β”‚   β”œβ”€β”€ ai/                  # OpenAI integration
β”‚   β”œβ”€β”€ cache/               # In-memory caching
β”‚   β”œβ”€β”€ database/mongodb/    # MongoDB implementations
β”‚   β”œβ”€β”€ feed/                # RSS feed processing
β”‚   β”œβ”€β”€ market/              # Finnhub integration
β”‚   └── search/              # Google Custom Search
└── interfaces/http/
    β”œβ”€β”€ handlers/            # HTTP request handlers
    β”œβ”€β”€ middleware/          # HTTP middleware (logging, metrics, rate limiting)
    └── router.go            # Route definitions

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Internet / Users                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β”‚ HTTPS (443) / HTTP (80)
                            β–Ό
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚   Route53 DNS               β”‚
              β”‚   october.circuit-x.com     β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
                             β–Ό
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  Application Load Balancer  β”‚
              β”‚  (october-alb)              β”‚
              β”‚  - Health checks            β”‚
              β”‚  - SSL termination          β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
                             β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚     ECS Fargate (october-cluster)       β”‚
       β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
       β”‚  β”‚  October Backend Container        β”‚  β”‚
       β”‚  β”‚  - Go 1.21                        β”‚  β”‚
       β”‚  β”‚  - Port 8080                      β”‚  β”‚
       β”‚  β”‚  - Auto-scaling enabled           β”‚  β”‚
       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚           β”‚           β”‚
          β–Ό           β–Ό           β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ MongoDB β”‚ β”‚ OpenAI  β”‚ β”‚ Finnhub  β”‚
    β”‚ Atlas   β”‚ β”‚   API   β”‚ β”‚   API    β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚           β”‚           β”‚
          β”‚           β”‚           └── Market Data
          β”‚           └────────────── AI/RAG
          └────────────────────────── Data Storage

    External Integrations:
    - Google Custom Search API (Web search)
    - CloudWatch Logs (Monitoring)
    - SSM Parameter Store (Secrets)

Running the Application

Prerequisites

  • Go 1.21 or later
  • MongoDB (if using database features)

Environment Setup

  1. Copy environment template:

    cp .env.example .env
  2. Adjust configuration in .env as needed

Build and Run

# Build the application
go build -o october-server ./cmd/api

# Run the application
./october-server

Development

# Run directly
go run ./cmd/api

# Run with custom log level
LOG_LEVEL=debug go run ./cmd/api

# Run with custom port
SERVER_PORT=9090 go run ./cmd/api

# Run with live reload (requires air)
make dev

# Test all API endpoints (server must be running)
make test-api

# Test AI/RAG endpoints (server must be running)
make test-ai

Health Check

The application provides a health check endpoint:

curl http://localhost:8080/health

Response:

{
  "status": "healthy",
  "timestamp": "2024-10-23T10:30:00Z"
}

Configuration

All configuration is handled through environment variables:

Variable Default Description
SERVER_HOST 0.0.0.0 Server bind address
SERVER_PORT 8080 Server port
SERVER_READ_TIMEOUT 15s HTTP read timeout
SERVER_WRITE_TIMEOUT 15s HTTP write timeout
SERVER_IDLE_TIMEOUT 60s HTTP idle timeout
DATABASE_URI mongodb://localhost:27017/october MongoDB connection string
LOG_LEVEL info Log level (debug, info, warn, error)
OPENAI_API_KEY - OpenAI API key for AI/RAG features (required)
CUSTOM_SEARCH_API_KEY - Google Custom Search API key (required)
CUSTOM_SEARCH_ENGINE_ID - Google Custom Search Engine ID (required)
FINNHUB_API_KEY - Finnhub API key for market data (required)
AWS_ACCESS_KEY_ID - AWS access key (for deployment only)
AWS_SECRET_ACCESS_KEY - AWS secret key (for deployment only)

Safety Features

Error Handling

  • All functions check return values
  • Comprehensive error logging
  • Graceful degradation on failures

Resource Management

  • Proper cleanup on shutdown
  • Connection pooling and limits
  • Memory usage monitoring

Signal Handling

  • SIGINT and SIGTERM handling
  • Graceful shutdown with timeout
  • Active connection draining

Logging

  • Structured JSON logging
  • Request/response logging
  • Error tracking and alerting

Development Guidelines

  1. Function Size: Keep functions under 60 lines
  2. Error Handling: Always check and handle errors
  3. Resource Cleanup: Use defer for cleanup operations
  4. Testing: Write tests for all public functions
  5. Documentation: Document all exported functions and types
  6. Validation: Validate all inputs and configurations

Production Deployment

AWS ECS Fargate (Recommended)

The application is production-ready and deployed on AWS using:

  • ECS Fargate: Serverless container orchestration
  • Application Load Balancer: Traffic distribution and health checks
  • Route53: DNS management with custom domain
  • ACM: Free SSL/TLS certificates
  • CloudWatch: Centralized logging and monitoring
  • SSM Parameter Store: Secure secrets management

Production URL: https://oct.circuit-x.com

For detailed deployment instructions, see DEPLOYMENT.md

CI/CD & Release Management

The repository includes automated GitHub Actions workflows:

Commit Validation Workflow

  • Trigger: Push to any branch or Pull Request
  • Actions:
    • Validates all commit messages follow Conventional Commits specification
    • Provides detailed feedback on invalid messages
    • Posts PR comments with examples and fix instructions
  • File: .github/workflows/commit-lint.yml

Deployment Workflow

  • Trigger: Push to main branch
  • Actions:
    • Build and push Docker image to ECR
    • Deploy to ECS Fargate
    • Configure custom domain with HTTPS
  • File: .github/workflows/deploy.yml

Release Workflow

  • Trigger: Successful deployment completion
  • Actions:
    • Automatically determines version bump (major/minor/patch) based on commit messages
    • Creates Git tag
    • Generates release notes with categorized changes
    • Creates GitHub release with production links
  • File: .github/workflows/release.yml
  • File: .github/workflows/release.yml

Commit Message Conventions for version bumping:

  • feat: or feature: β†’ Minor version bump (e.g., v1.0.0 β†’ v1.1.0)
  • fix: or bugfix: β†’ Patch version bump (e.g., v1.0.0 β†’ v1.0.1)
  • feat!: or BREAKING CHANGE: β†’ Major version bump (e.g., v1.0.0 β†’ v2.0.0)
  • Other commits β†’ Patch version bump

Docker (Alternative)

FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod tidy && go build -o october-server ./cmd/api

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/october-server .
CMD ["./october-server"]

Build and run:

make docker-build
make docker-run

System Service

Create a systemd service file for production deployment:

[Unit]
Description=October Backend Service
After=network.target

[Service]
Type=simple
User=october
Group=october
WorkingDirectory=/opt/october
ExecStart=/opt/october/october-server
Restart=always
RestartSec=5
EnvironmentFile=/opt/october/.env

[Install]
WantedBy=multi-user.target

Monitoring

The application provides comprehensive monitoring capabilities:

Health Endpoints

  • Health: GET /health - Basic health check
  • Liveness: GET /liveness - Kubernetes-style liveness probe
  • Readiness: GET /readiness - Kubernetes-style readiness probe

Metrics Endpoints

  • Prometheus: GET /metrics - Prometheus-compatible text format
  • JSON Metrics: GET /metrics.json - Detailed JSON metrics including:
    • Request counts by endpoint and status code
    • Request latencies (p50, p90, p95, p99)
    • Active connections
    • Uptime
    • Memory usage
    • Cache statistics (hits, misses, hit rate)
    • API response times

Structured Logging

  • JSON-formatted logs with contextual information
  • Request/response logging with duration
  • Error tracking with stack traces
  • Configurable log levels (debug, info, warn, error)

Production Monitoring

  • CloudWatch Logs: Centralized log aggregation
  • CloudWatch Metrics: Custom metrics and alarms
  • ALB Health Checks: Continuous availability monitoring
  • ECS Service Monitoring: Container health and auto-recovery

Security

  • Input validation on all endpoints
  • Proper error message sanitization
  • Rate limiting (when configured)
  • CORS protection
  • Security headers middleware

About

A defence & aerospace market intelligence platform project combining financial data, industry news, and AI insights. Try it: https://october.circuit-x.com

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •