Go Makefile HTML PLpgSQL
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github
cmd
dao
docs
domain
env
errors
makes
public/js
server
service
static
transfer
vendor
.gitattributes
.gitignore
.goreleaser.yml
.scrutinizer.yml
.travis.yml
Gopkg.lock
Gopkg.toml
LICENSE
Makefile
README.md
build.go
main.go
main_test.go
pkg_test.go

README.md

Form API Tweet

Analytics Data Collector as a Service — your personal server for HTML forms.

Patreon Build Status Code Coverage Code Quality License

Quick start

Requirements:

  • Docker 17.09.0-ce or above
  • Docker Compose 1.16.1 or above
  • Go 1.9.2 or above
  • GNU Make 3.81 or above
$ make up demo status

       Name                     Command               State                                  Ports
----------------------------------------------------------------------------------------------------------------------------------
form-api_db_1        docker-entrypoint.sh postgres    Up      0.0.0.0:5432->5432/tcp
form-api_server_1    /bin/sh -c envsubst '$SERV ...   Up      80/tcp, 0.0.0.0:80->8080/tcp
form-api_service_1   form-api run --with-profil ...   Up      0.0.0.0:8080->80/tcp, 0.0.0.0:8090->8090/tcp, 0.0.0.0:8091->8091/tcp

$ curl http://localhost:8080/api/v1/41ca5e09-3ce2-4094-b108-3ecc257c6fa4
# <form id="41ca5e09-3ce2-4094-b108-3ecc257c6fa4" lang="en" title="Email subscription"
#       action="http://localhost/api/v1/41ca5e09-3ce2-4094-b108-3ecc257c6fa4" method="post"
#       enctype="application/x-www-form-urlencoded">
#       <input id="41ca5e09-3ce2-4094-b108-3ecc257c6fa4_email" name="email" type="email" title="Email"
#              maxlength="64" required="true"></input>
# </form>
$ curl -v -H "Content-Type: application/x-www-form-urlencoded" \
       --data-urlencode "email=test@my.email" \
       http://localhost:8080/api/v1/41ca5e09-3ce2-4094-b108-3ecc257c6fa4
# > POST /api/v1/41ca5e09-3ce2-4094-b108-3ecc257c6fa4 HTTP/1.1
# > Host: localhost:8080
# > User-Agent: curl/7.54.0
# > Accept: */*
# > Content-Type: application/x-www-form-urlencoded
# > Content-Length: 21
# >
# < HTTP/1.1 302 Found
# < Location: https://kamil.samigullin.info/?41ca5e09-3ce2-4094-b108-3ecc257c6fa4=success
# < Date: Sat, 05 May 2018 09:34:47 GMT
# < Content-Length: 0
# <

Specification

API

You can find API specification here. Also, we recommend using Insomnia HTTP client to work with the API - you can import data for it from the file.

CLI

$ form-api --help
Form API

Usage:
  form-api [command]

Available Commands:
  completion  Print Bash or Zsh completion
  help        Help about any command
  migrate     Apply database migration
  run         Start HTTP server
  version     Show application version

Flags:
  -h, --help   help for form-api

Use "form-api [command] --help" for more information about a command.

Installation

Brew

$ brew install kamilsk/tap/form-api

Binary

$ export VER=1.0.0      # all available versions are on https://github.com/kamilsk/form-api/releases
$ export REQ_OS=Linux   # macOS and Windows are also available
$ export REQ_ARCH=64bit # 32bit is also available
$ wget -q -O form-api.tar.gz \
       https://github.com/kamilsk/form-api/releases/download/"${VER}/form-api_${VER}_${REQ_OS}-${REQ_ARCH}".tar.gz
$ tar xf form-api.tar.gz -C "${GOPATH}"/bin/ && rm form-api.tar.gz

Docker Hub

$ docker pull kamilsk/form-api:1.x

From source code

$ egg github.com/kamilsk/form-api@^1.0.0 -- make test install

Mirror

$ egg bitbucket.org/kamilsk/form-api@^1.0.0 -- make test install

egg is an extended go get.

Bash and Zsh completions

You can find completion files here or build your own using these commands

$ form-api completion bash > /path/to/bash_completion.d/form-api.sh
$ form-api completion zsh  > /path/to/zsh-completions/_form-api.zsh

Notes

  • brief roadmap
    • v1: MVP
    • v2: API v2
    • v3: CSI
    • v4: CRUD
    • v5: GUI
    • Forma, SaaS
  • research
  • tested on Go 1.9 and 1.10

Update

This application is in a state of MVP and under active development. SemVer is used for releases, and you can easily be updated within minor versions, but major versions can be not BC-safe.


Gitter @kamilsk @octolab

made with ❤️ by OctoLab