Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/starshipfactory/membersys

The membership management system used by Starship Factory
https://github.com/starshipfactory/membersys

Last synced: 5 days ago
JSON representation

The membership management system used by Starship Factory

Awesome Lists containing this project

README

        

membersys
=========

membersys is a web service for applying for membership in an organization,
written for the Starship Factory.

Requirements
------------

membersys is relatively self-sufficient. It can run in a
doozer-anonymous-port setting, but that Doozer dependency is optional except
for compiling. Other than that it can run on any networked host.

Building
--------

For building, you will need to install the doozer-exportedservice Go package
first. Under Debian GNU/Linux, this can be done by running the following
command as root:

% apt-get install golang-doozer-exportedservice-dev

Under other systems, you can copy the source files to
${GOPATH}/src/ancient-solutions.com/doozer/exportedservice.

Once this is done, run

% go build

in order to get a working binary. It will be called membersys and will be
statically linked, so you can just use it anywhere.

Installing
----------

For installing, you will have to copy the form.html and printlayout.html
files as well as the css and js directory into the destination template
directory, such as /usr/local/share/membersys. Then, copy the
binary you built previously to the destination binary directory, e.g.
/usr/local/bin.

Then you can run the binary and pass it the --template-dir flag, pointing
to the directory where you installed the templates, e.g.

% /usr/local/bin/membersys --template-dir=/usr/local/share/membersys

Running
-------

If you want to use membersys productively, it is recommended that you use
a separate program to launch it and redirect all output to logs. Currently,
membersys doesn't daemonize, so it will always run in the foreground. Using
a tool like run-as-daemon will work around this easily.

Monitoring
----------

Like any good Go program, membersys exports a few variables under
/debug/vars:

* num-http-requests: the total number of HTTP requests received by the
binary, including requests for favicon.ico, CSS and JS files, etc.
* num-successful-form-submissions: number of times the request form has
been filled out correctly and submitted.
* num-form-submission-errors: maps by error type the different reasons why
requests have been rejected (e.g. no name was specified), and how many
requests of the type have been rejected.

Roadmap
-------

For future releases, we are planning to add the following features:

For release 0.2, we plan to store all successfully submitted requests in an
Apache Cassandra database. The print form will get a barcode with the row
ID of the record, making the record easier to find using a barcode scanner.

Release 0.3 will get mail verification functionality. Applicants will
receive an e-mail to the address they provided, and requests will only be
considered when a link given in the e-mail has been followed.

Release 1.0 will get administrative functionality for authenticated users.
If they are identified to be in a given scope, they will be able to accept
or reject applicants from the web interface. Applicants can either be
searched for by given criteria or looked up directly by their row ID,
which can be scanned from the printed form using a barcode scanner.

BUGS
----

Bugs for this project are tracked using ditz in the source code tree itself.
The current state of bug squashing can be viewed at
http://bugs.starship-factory.ch/membersys/

To report bugs, either send a pull request with the ditz bug added to the
project
[starship-factory/membersys](https://github.com/starshipfactory/membersys)
on GitHub, or send an e-mail to
[the Starship Factory open list](http://wiki.starship-factory.ch/Mailingliste.html#index1h1).