
In 2018, I was invited to tutor in the BA Graphic Design program at BHSAD. For four years, I led a module on students’ online presence, helping them develop their personal websites alongside other studio projects.
Because of the pandemic, classes, workshops, and student presentations shifted entirely online in 2020. By the end of the academic year, we faced a new challenge: How could students present their final projects? Usually, this was done through a physical end-of-year exhibition, but with in-person events not possible, the only feasible solution was to create an online exhibition.
At the time, I was working at my design studio and frequently used Kirby for digital projects. Kirby is a flexible and user-friendly file-based PHP Content Management System ideal for building small websites. I volunteered to create an exhibition platform using Kirby for students to showcase their final projects.
The most critical requirement was scalability. Over 100 students needed individual pages to showcase their final projects, including titles, descriptions, and media—images and videos. Manually uploading and managing this content was impractical, so I devised a way for students to submit and edit their projects independently using Kirby.
The outcome was a platform that allowed students to register and upload their work directly, removing the necessity for manual moderation. The site was archived and remained online for several years before being taken down. However, the framework was repurposed multiple times for later end-of-year online exhibitions.
This project has been on my mind for years, particularly the challenge of enabling over 100 participants to contribute to an exhibition without manual upload or moderation. I was also surprised that no solution addressed this need existed.
In 2024, I decided to update, refine and publish this project as an open-source exhibition website builder that anyone could use to create their group exhibition website.
I chose Kirby again as the CMS because of its great backend and frontend integration, as well as its proven success in the original exhibition project. However, much has improved in Kirby over the years since that first version. One of Kirby’s most significant updates was the introduction of content blocks, which enable dynamic content creation using predefined content blocks. I used these blocks for project pages, allowing exhibitors to construct a narrative with blocks of images or embedded videos.
When designing the website layout, I aimed to maintain the focus on the work itself. Exhibition websites are typically clean and minimalistic, ensuring that projects take centre focus without too much design. I adhered to this principle with a clean, structured layout. Visually, the only decorative element is a thin line system that subtly highlights the structure layout without overwhelming the content. For typography, I selected Inter, an open-source sans-serif font that complements the clean visual look while ensuring focus on content. Also, this time, I used **Tailwind CSS **instead of manual styles for easier styling and responsive design.
Beyond layout and typography, I made customisation a key part of Swarm. Admin users can adjust background and text colours, upload a favicon and OG image, and add an optional introduction block on the homepage. If they prefer to dive straight into the projects, they can remove this introduction block, creating a direct viewing experience. The website header can also be personalised with links to external resources.
Admin users can enable and define project filtering, allowing visitors to browse projects by theme or pathway. Exhibitors can simply select the relevant category when creating their page, and the site will automatically sort and display their work accordingly.
One of the most important aspects of Swarm is that it does not require a central moderator to oversee every project upload. Instead, it allows exhibitors to take full control of their project pages. The site administrator can enable an exhibitor's registration in a Kirby panel, where exhibitors can follow a sign-up link and create an account. From there, exhibitors can access the CMS panel with a limited interface designed specifically for them—providing functionality to create, edit, and publish only their projects.
Exhibitors can easily log in later to revise their project pages, change images and text, or add new content. At the same time, the exhibition administrator retains complete control over the website's content, having access to all drafts and published projects to oversee the entire exhibition site.
To begin using Swarm as intuitively as possible, I have created a dedicated website that showcases features and provides guidance throughout every step of the setup process. A live demo showcases the exhibition website, allowing exploring the final result before setting up their own website. In addition, I made a tutorial video that walks users through deployment, installation and website creation—everything they need to launch their own exhibition website with minimal effort.
Swarm is built on flat file Kirby CMS, so a database isn’t needed. Website content is stored as files—Markdown for text and image files for visuals—making deployment as simple as downloading a zip archive from GitHub and uploading its contents to a web server. Once the files are in place, the only setup required is registering a panel admin account to begin editing the exhibition website.
The only drawback is that Kirby is a paid CMS that requires a license for a final live website. Meanwhile, educational institutions can apply for a free licence, making Swarm an exceptionally viable solution for university exhibitions.
As I finalised Swarm, I realised that it could also be adapted for solo exhibitions as well, not just group shows. I plan to explore this in future updates. I also have an idea for adapting this project to Next.js frameworks in combination with Sanity as a CMS, similar to my previous project, Collected (I wrote about it in my last story). This would make it easier for users to deploy this project and make it more accessible.
For now, Swarm is live and open-source—ready for designers, artists, creators, developers, and educational institutions to use for their exhibitions. As the end of the academic year approaches, I would love to see if any educational institution uses Swarm to display its students' works.
The complete source code for this project can be found on GitHub. More info about the project is available here.