Skip to content

Festivals-App/festivals-website

Repository files navigation

Mozilla HTTP Observatory Grade



FestivalsApp Website

This repository contains the source files of the official website for the FestivalsApp as it is available at festivalsapp.org and a lightweight go sidecar app, called festivals-website-node. The festivals-website-node will register with the festivals-gateway discovery service and exposes other functions including updating the website.

Figure 1: Architecture Overview Highlighted


DevelopmentDeploymentDocumentation & ArchitectureEngage & FeedbackLicensingWebsite


Development

I have a rather custom development workflow for the FestvialsApp website. This is probably due to my dislike for website development: i can't bring myself to learn the right way. Though unconventional, it is quite straight forward as the website only uses html, css and a little bit of php for the contact form.

All necessary files are in the source folder waiting to get compiled by the compile script which is minifying and merging those files and is outputting the result to a folder called "out". This folder now contains a new folder with the current timestamp as its name and a folder called "current". The "current" folder will always contain the newest compiled files, and can be used to check the latest changes to the source files using a browser.

I use Visual Studio Code, as it is super easy to run the compile script with just a shortcut (Shift+Cmd+B) and i don't have any preferences when developing websites.

The key requirements for the website are: fast, easy to update, open source, accessible(*) and secure.

Requirements

Setup

I don't have a special setup in Visual Studio Code and the provided configuration files should let you start right away. You only need to install minify on your system to allow the compile script to run.

Deployment

I use nginx to serve festivalsapp.org, deployed in a small VM running Ubuntu at digitalocean. To deploy the website via the install script you have to do the general VM setup first. Otherwise the are no special requirements for serving this website, except the contact form needs some configuration to allow the system to send emails (TBA).

Installing festivalsapp.org

curl -o install.sh https://raw.githubusercontent.com/Festivals-App/festivals-website/master/operation/install.sh
chmod +x install.sh
sudo ./install.sh
rm install.sh

After installing you still need to configure HTTPS.

sudo apt install certbot

Updating festivalsapp.org

curl -o update_website.sh https://raw.githubusercontent.com/Festivals-App/festivals-website/master/operation/update_website.sh
chmod +x update_website.sh
sudo ./update_website.sh
rm update_website.sh

Updating festivals-website-node

curl -o update_node.sh https://raw.githubusercontent.com/Festivals-App/festivals-website/master/operation/update_node.sh
chmod +x update_node.sh
sudo ./update_node.sh
rm update_node.sh

Documentation & Architecture

There is not a lot that is custom about the website. The base locale of the website is german, localized versions of the website are stored inside a top level folder with a descriptive name, like 'EN' for the english localization. Images are all stored in a top level folder called images and need to be compressed and optimized by hand, as the compile script won't attempt any optimizations on the images.

The general documentation for the Festivals App is in the festivals-documentation repository. The documentation repository contains architecture information, general deployment documentation, templates and other helpful documents.

Engage & Feedback

I welcome every contribution, whether it is a pull request or a fixed typo.

The best place to discuss questions and suggestions regarding the website is the issues section on github. If this doesn't fit you proposal or reason to contact me, there are some more general purpose communication channels where you can reach me, listed in the following table.

Type Channel
General Discussion
Other Requests

Licensing

Copyright (c) 2017-2024 Simon Gaus. Licensed under the GNU Lesser General Public License v3.0