/web

Software to power the geekzone website and apps

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Geek.Zone Web App

This application is currently intended as the minimum viable product for Geek.Zone members and n00bs to be able to manage their Geek.Zone membership. We will build it from there, but that's our target right now! We currently use a third party to do this, and while they are not a bad service per se, they do charge us for their services and do not do all the things we need them to do. Building it ourselves will not only mean that we get the system that we need, but also that those involved will learn new, transferrable skills and have some fun doing so.

Take a look at the original spec doc.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

What things you need to install the software and how to install them

  • Python==3.8.3 (Not compatible with Windows XP (why are you still using Windows XP?))
  • Pip==3
  • Django==3.0.7
  • PostgreSQL==12.3

Suggestions

Clearly, you can and should use which ever development tools you prefer. If you don't have a preference, we suggest trying,

Python

SQL

Diagrams

Also, do join us on our Discord!

Installing

Here's what to do to get this project up and running so that you can turn that sweet, sweet coffee in to sweet, sweet code.

  1. Linux: sudo apt-get update && sudo apt-get upgrade. Windows: install WSL.
  2. Get the latest version of Python3
  3. Pip3 should come with python. Double check.
  4. In a convenient, empty directory, run git clone git@github.com:GeekZoneHQ/web.git
  5. Create a virtual environment in that directory
  6. Activate that virtual environment
  7. Run pip3 install -r requirements.txt
  8. Check if you have already got PostgreSQL. Install it if not.

Local Development

Running the Tests

We have not got any tests for you right now. This readme will be kept up to date so check back when it does.

Changing the CircleCI Build

I have found the circleci local cli tool to be very useful when making changes to the circle build locally. The errors can be a bit cryptic, but it's easier than debugging basic syntax issues from within the circleci console.

Running Kubernetes files locally

The kubernetes files are not optimised for being run locally (yet), but you should be able to get them working with minimal local changes.

We use envsubst in the build to replace the image tag numbers in the kubernetes yaml files. You can run the same command locally if you wish.

CIRCLE_WORKFLOW_ID=1 envsubst < k8s/deployment.yml | kubectl apply -f -

Deployment

The code is currently deployed onto a test Kubernetes cluster hosted using AWS Elastic Kubernetes Service (EKS). Our CI/CD service circleci will deploy any code changes to test.geek.zone on a merge to master.

The deployment files can be found under the k8s folder.

Contributing

No special rules, just pull request before merging, you know the drill ;)

If you wish to add your name and contact details to humans.txt then you are encouraged to do so. Not obligatory.

Check out these resources for guides on contibuting.

License

As always, anything contributed to Geek.Zone projects is done so under GPLv3.