This project is the frontend application of GuildBit.com. This project is built with the following stack:
- Flask as the Python Framework
- SQLAlchemy as the ORM for postgres/sqlite
- Celery messaging queue for scheduling Mumble Server tasks
- Redis as the message broker for Celery and caching engine
- Python-requests for sending REST requests to murmur-rest
- Murmur-rest as the RESTful backend for communicating with Murmur virtual servers via Ice
- CSS Framework is Pure
When a user deploys a GuildBit server from the frontpage, the following takes place:
- Form is validated and a POST request is sent to the home controller index view
- App server generates a UUID4
- Form data is captured as the location, duration, password
- A post request (via python requests) is sent to the locations's murmur-rest to create a server using the payload
- murmur-rest returns an assigned server id
- Database entry a saved with the following: uuid, form.location, form.duration, form.password, server.id
- A scheduled date is generated based on the created_date from the database entry + form.duration hours
- A celery task is scheduled using the info above
- Server view is returned to user /server/{uuid4}
The server view checks database if server is expired. If expired, the server_expired.html view is shown.
For a full production deployment, please refer to INSTALL.md.
To develop locally:
git clone https://github.com/alfg/guildbit
virtualenv env --system-site-packages
. env/bin/activate
pip install -r requirements
python runserver.py
You'll need to setup mumble-server, python-zeroc-ice, and murmur-rest to develop and test locally, or
configure MURMUR_REST_HOST
to another server that's already setup.
Install instructions on http://github.com/alfg/murmur-rest
Run celery to test and track queues:
celery worker --app=app.tasks -l info
MIT License © Alfred Gutierrez