Features

that empowers 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; supports Domain and Sub-domains.

  •  Flexible, Namespace/group and reverse route.
  •  Well integrated with static files, error handling flow.
  •  Rich support for RESTful; such as API versioning strategies, etc.
  •  Path params with validation, Auto-bind, etc.

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 allows you to organize your configurations in different environment (defined by profile) easily.

  •  By default dev and prod profiles are defined.
  •  Define what you need and organize; such as dev, qa, etc.

Parameters Auto Parse and Bind

aah provides 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 bind of (non-)pointer target and custom Value Parser by Type.

Powerful Reply

aah is natively RESTful or Render with your choice of view engine.

  •  View engine - Enhanced Go, Pug (Jade). [Amber & Jet (upcoming)].
  •  Powerful reply builder - easily compose response.
  •  Reply HTML, JSON, JSONP, XML, File, Bytes, etc.
  •  Ready to use 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.

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 too.

i18n Internationalization

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

  •  Just configure your application and application localized.
  •  Access messages anywhere in the application.
  •  Organize your message files they 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; flexible, hierarchical propagation flow.

  •  Each 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 these files. Its a good start point with necessary configuration for 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 these features and benefits.

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