Welcome to GOX

Welcome to the official documentation for GOX.

GOX is an ecosystem comprising a programming language, an official server implementation, and the tools you need to build full-stack web applications.

This documentation describes the capabilities of the GOX ecosystem and explains how to use them.


GOX ecosystem capabilities

GOX provides a set of tools designed to work in an integrated way during the development of web applications.


Programming language

The GOX language is the core of the ecosystem.

Its main features include:

  • A compiled language inspired by JSX.
  • A module system inspired by ECMAScript.
  • Compatibility with Go packages.
  • Reusable functional components.
  • An integrated template system.

→ Language


HTTP server

Official implementation of the server is gox-server.

Its main capabilities include:

  • Filesystem-based routing.
  • Static file serving.
  • An integrated session system.
  • Built-in rate limiting.
  • Communication over WebSockets.

→ Server


Client applications

GOX allows to integrate developed client applications with different JavaScript ecosystem frameworks.

It currently offers support for:

  • React
  • Preact
  • SolidJS
  • Vue
  • Svelte

→ Client applications


Scalability

GOX takes advantage of the concurrent model provided by Go to run applications efficiently and allows to distribute an application between multiple instances of gox-server.

For distributed scenarios, GOX provides official implementation redisadapter.

→ Scalability


Distributed infrastructure

The official implementation of redisadapter allows several instances of gox-server function as a single logical server.

Its capabilities include:

  • Sessions distributed.
  • WebSockets distributed.
  • Communication between the gox-server.

redisadapter co-ordinates the gox-server, but does not automatically distribute HTTP traffic between them. To direct requests to different instances, a load swimmer, an inverse proxy or an equivalent solution should be used.

→ Distributed infrastructure


Testing

GOX provides an integrated system for page and action testing.

→ Testing


GOX and gox-server

It is important to distinguish between GOX and its official implementation from the server.


GOX

GOX is an ecosystem comprising a programming language, an official server implementation, and the tools you need to build full-stack web applications.


gox-server

gox-server is the official implementation of the server for GOX.

Proporciona:

  • The compiler.
  • The execution environment.
  • The command gox.
  • The HTTP server.

In this documentation the name gox-server It shall only be used when it is necessary to refer specifically to the server.


Supported platforms

Currently gox-server offers support for:

  • Linux
  • macOS
  • Windows, WSL

Windows is not supported in a native way due to a limitation of the Go plugin system used by gox-server to load dynamically compiled modules.

This limitation belongs to Go and not to the GOX language.

→ Supported platforms


Documentation structure

The documentation is organized in the following sections:

  • Installation
  • Getting started
  • Language
  • Concepts
  • Configuration
  • CLI
  • Server
  • Client applications
  • Scalability
  • Infrastructure
  • Testing
  • API

→ Documentation index


Where to start

If this is the first time you have used GOX, it is recommended to follow the documentation in this order:

  1. Installation
  2. Quick Start
  3. Your first page
  4. Project structure
  5. Language
  6. Templates
  7. Configuration
  8. CLI
  9. Server
  10. Client applications
  11. Scalability
  12. Infrastructure
  13. Testing
  14. API

Conventions

The following conventions shall be used throughout this documentation:

  • GOX refers to the ecosystem.
  • The GOX language refers to the programming language.
  • gox-server refers to the official implementation of the server.
  • redisadapter refers to the official implementation for the distributed operation.
  • gox refers to the command used from the terminal.
  • File names, directories, commands and options are displayed using single-spaced format.

Next step

Continue with Installation to prepare GOX and have the command gox in your system.

Installation