Website Team Progress Update 2025-05-07
The BornHack website is a Django project, the source code can be found on Github. The website has been evolving since the inception in February 2016, but until now the only place to follow the development has been through the Git commit log. With this post we want to highlight some of the bigger changes to the website since BornHack 2024.
The BornHack Website Team has been busy! The following list of changes is sorted with the oldest change first, with the oldest being from September, only a few months after BornHack was over. In addition to the list below many, many smaller changes and bugfixes have been merged. A lot of work has also gone into the new BornHack Media Archive (BMA), and soon a seperate news post will explain what BMA is and when it will go live.
POS Data Views in Backoffice (2024-09-19)
Data from the point-of-sale system we use for HAX transactions during the events was imported into the website, and new views were added to backoffice to show the data.
We have the full history of transactions back to and including 2018, and although the quality and completeness of the data is better in more recent years having the full picture is fantastic.
Maps v2 (2024-10-01)
The website first got an interactive map in the beginning of 2020 as part of the new facility feedback system. The idea with the facility system was for teams to be able to register facilities (like toilets, power outlets and so on) on the website, automatically enabling easy printing of QR codes for feedback channels to the teams. Part of this work was a map to show where the facilities can be found.
The map has been used a bit, but the feedback functionality never really took off. Anyway, in October 2024 a big update for the maps stuff landed, and we are very excited about the many new possibilities this offers:
- It is much easier on "our end" to embed and manage maps
- You may also have noticed it is possible to place villages on the map now. You can already see a bunch of villages on the map.
- Teams can also have their own layers, which can be easily exported, edited in Qgis or similar, and then re-imported. We expect NOC, Power, and many other teams to benefit from this.
Permissions Refactor (2024-10-01)
The BornHack website in 2016 started out with one kind of permission management: there were admins and not-admins. People in orga were admins, everyone else was not. This approach worked for a few years, but stuff like managing team memberships quickly became impractical once we started having the first non-orga people as team leads.
This lead to the principle of using the Team Lead flag on team memberships to allow management of teams (members, team info pages, team tasks, and so on). This was sort of enough for a few more years. But the flaws of this very basic approach have always been clear: if we want to restrict something so not everyone on a team can do the thing we can only ever restrict it to only team leads. Stuff like editing the facilities, or wiki pages, or adding stuff to the map.
So at the same time as the big maps refactor we also reworked the permissions checking on the website entirely. We now use Djangos permissions for everything. Different actions require different permissions. Permissions are mostly granted to teams (which internally have matching Django groups) but permissions can also be granted to individual users as needed. At the time of writing this (May 2025) the 2025 teams have permissions to do stuff on the website, but at some point after BornHack 2025 we will remove the permissions from the 2025 teams and assign them to the 2026 teams, and so on.
The permissions are pretty flexible, and more might be added in the future. Currently the following permissions exist for each team:
- Team Lead (the team lead(s))
- Team Member (all team members)
- Team Mapper (map layer management)
- Team Facilitator (facility management)
- Team Infopager (infopage management)
- Team POS (point-of-sale report submission)
- Team Tasker (team task managent)
The permissions change means that all volunteers (regardless of team) can now access backoffice, with the degree of access being determined by the user's permissions.
The team permissions can be managed in this backoffice view which is available to all team leads.
Change Usernames to UUIDs (2024-10-06)
The BornHack website has always used email for signup and login. Internally, the username for your user was generated from the localpart of the email address (so if the signup email was thomas@example.com
the username would be set to thomas
). If that username was already taken a counter was applied. Because many of our users have their own domains for email the usernames were often something like bornhack152
because 152 people all used bornhack@
emails for signup.
It isn't possible to change the username of an account. Depending on the email used to sign up a user's bornhack.dk username might be the user's real name (which, like the email, is of course private information protected under GDPR), it might be a deadname, or best case it might be something nonsensical like bornhack17
. Since usernames are just a unique identifier, and because they are sometimes shown on the website, we decided that our users would be better served with having a randomly generated username. On October 6th 2024 all bornhack.dk usernames were changed from whatever they were to a UUID4. You can see your username in the bottom of the left menu in the profile.
There might still be a view here and there which shows the username where it should be updated to show the name
or public_credit_name
from the user's profile. Please let the webteam know by opening an issue if you find a page where this needs to be done.
Switch to Bootstrap 5 (2024-10-09)
Since the beginning the BornHack website has been based on bootstrap 3.x, and changing Bootstrap version on a big site is quite an undertaking, so it had been down-prioritised for years. But in October 2024 new webteam member Zarya (who also did the maps stuff) did the work and finally got the website updated to Bootstrap 5.
This change also included dark mode support, and logged-in users also have the option to choose between two different dark themes in the profile.
New Coinify API (2025-02-16)
Our payment service provider for blockchain/cryptocurrency payments Coinify has retired their old API which means we could finally retire the crusty old vendored-in Coinify SDK code we used for their old API. We have used Coinify since 2016 with this code but from March 2025 the old API was retired. The updated Coinify code landed in our repo in February, but due to some issues getting our account KYC stuff done the code was not deployed in production until the beginning of April.
Gzipped Responses (2025-03-30)
For some reason gzip was never enabled for responses from bornhack.dk, that has been fixed now, leading to a nice little performance boost on some pages with a lot of markup.
Full OIDC support (2025-04-08)
Back in 2023 an issue was opened requesting we upgrade bornhack.dk to be a full OIDC enabled IDP. In the beginning of April 2025 this was finally done, meaning it is now easier than ever to use your bornhack.dk account to sign into other sites and services. We expect this to be used a lot during BornHack for all the stuff people run that needs some form of access control. To use it you will need the autoconfiguration link and you will also need to go to /o/applications to register a new oauth app.
BornHacks OIDC IDP uses oauth2 scopes to control access to user claims (user claims are information shared with sites and services using the BornHack IDP). We added a view in the profile where you can see precisely which information is included in which claims, when using each claim scope. We also added a new profile field preferred_username
which - if you give it a value - will be served under the standard OIDC claim profile
when asking for the profile
scope.
If you don't understand any of this OIDC/IDP stuff you can just ignore it, if you don't need or use it it has no effect on you or your account security.
Dark Mode v2 (2025-05-07)
A second iteration of the Bootstrap 5 theme and dark mode support changes landed in the beginning of May with toggle buttons in the navbar in the top of the page, and behind the scenes greatly simplified CSS. This update means also non-logged in users can enjoy dark mode even on systems where it isn't the default.
Future Changes
We still have plenty of changes coming and issues open on Github, but summer is approaching, so the list above is probably it for big changes before BornHack 2025. If the sort of tasks described above sound fun then maybe there is a place for you in the website team. If you are interested please drop by our IRC channel to chat, it is #bornhack-website
on irc.baconsvin.org
(with TLS, on port 6697).
This news post marks the first time we've really shared anything about the development of the BornHack website. The intention is to make more news posts of this kind in the future.