Features

Empower engineering and devops

Server and its Extensions

aah provides powerful OOTB features with server.

  •  HTTP, HTTPS (Certs & Let's Encrypt), HTTP/2, UNIX Socket
  •  Server extensions - OnInit, OnStart, OnShutdown, etc
  •  Graceful shutdown, Automatic Gzip compression
  •  Access Log, Dump request and response

Routing

Natively multi-tenant (domains and subdomains).

  •  Flexible, Namespace/group and reverse route
  •  Well integrated flow of static files and error handling
  •  Rich support for RESTful APIs (versioning strategies, path params, auto-bind, etc)

Console Commands

Easily add N no. of user-defined behavior(s) as a console command into aah application binary. For example: such as command migrate, install, uninstall, etc.

  •  Ability to add CLI access to application functionality

Configuration

aah configuration syntax is very similar to HOCON syntax.

  •  Organize your config files and use include reference
  •  Reload app configurations via SIGHUP on non-dev profile

Multi-Environment Configuration

aah supports the concept of profile, which helps organize the configurations easily across different environments.

  •  By default, dev and prod profiles are defined
  •  Define profiles that are needed and organize. For e.g.: qa, stage1, etc

Parameters Auto Parse and Bind

aah provides a very flexible way to auto parse and bind request values into appropriate Go data types.

  •  Bind Path, Form, Query into controller action parameters or struct fields
  •  Bind JSON or XML request body into struct
  •  Supports binding (non-)pointer target and custom Value Parser by Type

Powerful Reply

Natively RESTful or Render with the choice of view engines.

  •  View engine - Enhanced Go, Pug (Jade), [upcoming ...]
  •  Powerful reply builder - easily compose response
  •  Reply HTML, JSON, JSONP, XML, File, Bytes, etc
  •  Natively HTML minify

SPA and Mobile app support

aah supports the trend of separate front-end architecture.

  •  Natively RESTful, stateless by default
  •  Content negotiation on Content-Type and Accept
  •  Built-in CORS support
  •  Powerful security implementation

Real-time app support

aah supports real-time application architecture.

  •  WebSocket - Bidirectional
  •  Server-Sent Events (SSE) - Unidirectional [upcoming]

Event handling and dispatching

aah provides simple and efficient Event Publisher with Asynchronous and Synchronous capabilities.

  •  aah server extension points are built around event publisher
  •  Supports publish once feature

i18n Internationalization

aah provides i18n support aka messages. Language ID is ISO 639-1, Region ID is ISO 3166-1.

  •  Just configure and application is internationalized/localized
  •  Access messages anywhere in the application
  •  Organize the message files the way you want under i18n directory

Logging

aah provides simple yet powerful logging capabilities with Fields, Child Logger.

  •  OOTB Console and File receivers are supported
  •  Human (Text) and machine (JSON) readable log formats
  •  Supports Hook and drop-in replacement for package log

Error Handling

aah provides well structured error handling with flexible and hierarchical propagation flow.

  •  Controller level error handling
  •  Application level Centralized error handling
  •  Framework's default error handler

Static File Delivery

Easy to use static file delivery.

  •  Serve directory and its sub-directories
  •  Individual files and directory listing feature
  •  Header Cache-Control by each MIME type
  •  Simple cache busting via filename

Docker and systemd

aah CLI provides command to generate configuration files for and development and production.

  •  For docker - Dockerfile.dev and Dockerfile.prod (multi-stage build for minimal size)
  •  For systemd - <app-name>.service file

Dig into aah documentation to take advantage of these features and benefits.

Ooh No! the feature that I'm looking for is not currently available in aah framework. What should I do? Well, refer to the project roadmap or reach me via Gitter Chat, Github Issues.