altair

Open source API gateway written in Go. Created to be lightweight, simple, fast, reliable, cross platform, and programming language agnostic.

Notice

This software is still in alpha version, which may contain several hidden bugs that can cause data loss or unexpected behaviour.

Architecture Diagram

altair

Documentation

Plugin API Documentation

Plugin API Documentation in Postman

Docker

We are on dockerhub! Common implementation of altair docker is to have directory where you store your config and routes folder inside it.

config/
routes/
.env
docker-compose.yml

The content of docker-compose could be like this:

version: "3.8"
services:
  altair:
    image: codefluence/altair:latest
    volumes:
      - ./routes/:/opt/altair/routes/
      - ./config/:/opt/altair/config/
      - ./.env:/opt/altair/.env
    ports:
      - "1304:1304"
    network_mode: host
    env_file: ./.env

How to Use

We recommend you to use Altair using docker-compose like above. But if you want to use the binary instead, you could download the binary from release pages.

How to Contribute

Installation

Prerequisites

  1. Go >= 1.13
  2. MySQL

How To

  1. Clone this repo
  2. Create databases schema based on your .env or/and configuration
  3. Make sure mysql running
  4. go run altair.go migrate main_database
  5. go run altair.go run
  6. Read CONTRIBUTING.md

Feature

  • [ ] Request Forwarder
    • [x] Route Compiler
    • [x] Route Generator Forwader
    • [x] Downstream Plugins
      • [x] Oauth Token Checking
      • [x] Oauth Scope Checking
      • [ ] Response Caching
    • [ ] Persistent HTTP client implementation
  • [x] Metric & Monitoring
    • [x] Prometheus
  • [x] Logging
    • [x] Stdout
  • [ ] Plugins
    • [ ] Plugin dynamic database migration
    • [ ] Oauth Authorization
      • [x] CRUD Oauth Application
        • [x] Create
        • [x] List
        • [x] One
        • [x] Update
      • [x] Authorization
        • [x] Authorization Code Grant
      • [ ] Access Token
        • [x] Access Token Implicit Request for Confidential Application
        • [x] Access Token Code Grant Flow
        • [ ] Refresh Token
          • [ ] Access Token Refresh Token Flow
          • [ ] Refresh Token Generation
        • [x] Revoke Access Token
    • [ ] Response Caching
      • [ ] Route Config
      • [ ] API for deleting the cache
    • [ ] JWT

GitHub