Vernier.ch: Vernier City's Comprehensive Citizen Platform and Official Web Portal
Drupal-based Vernier City website & admin portal: Geneva Canton's 2nd largest city. Custom design with major UX focus.
Case descriptionThe City of Vernier entrusted us to overhaul their official website. The project encompassed an audit and reorganization of existing content, visual redesign, and the implementation of Drupal to support diverse content types and extensive layout capabilities, thanks to the Paragraph module. We created a service portal built on Drupal permissions and rights, integrating Webform, custom modules for user-generated content (notably for contributions to the business and association directory), and an advanced search engine that indexes archival documents.
The new design makes finding information directly on the site easier with its clear organization, well-structured landing pages, and a robust search engine. Citizens can now stay informed about their local politics, track municipal council communications, access official documents, and keep tabs on council meetings.
Entrepreneurs and associations are also catered for, with the site providing a platform for businesses and associations within the city to register, get referenced, gain visibility, and establish a direct link to them.
Case goals and resultsThe former website was built on a proprietary solution that limited flexibility in content organization, weak typing, and no content linkage. With Drupal and its ecosystem, we designed a sustainable solution that would evolve with the city and its citizens' needs. Various content and display types facilitated the creation of user-responsive pages. For instance, a service can link documents, and a news item can link to a service. The administrative portal, made using Webform, has significantly increased autonomy compared to the old solution. It enables the digitalization of processes in a few hours without incurring extra costs, which is a substantial improvement.
Additionally, the project was an opportunity to clarify a public administration's stance on personal data collection. The implementation of the Plausible tool, instead of Google Analytics, ensures visitors' privacy is respected. Using Drupal for all service offerings guarantees that the collected data remains on the same infrastructure.
ChallengesThe major challenges of the project included content migration from scraping the old site, implementing ElasticSearch, indexing documents over 30 years old, and installing the OpenAgenda module for event display. Our advanced use of Webform, especially with workflows, enabled efficient status tracking for service requests. Despite these challenges, we managed to propose solutions and contribute patches to the OpenAgenda module.
Community contributionsIn the scope of this project, significant community contributions were made. We notably updated the NBSP module for CKEditor 5 compatibility (https://www.drupal.org/project/nbsp/issues/3277174). Additionally, we revamped the CKEditor Advanced Image module, entirely rewriting it for CKEditor 5 (https://www.drupal.org/project/editor_advanced_image/issues/3333406).
Our development extended to the Factory Lollipop system for Paragraphs, further enhancing Drupal testing facilities (https://github.com/antistatique/drupal-factory-lollipop/pull/27).
A noteworthy contribution to the Drupal ecosystem was our improvement to the phpcsfixer-configs-drupal project. We introduced new rules that make the latest versions of php-cs-fixer compatible with the Drupal Code Style (https://github.com/drupol/phpcsfixer-configs-drupal/pull/9).
We also introduced the Image Styles Builder module, designed to streamline the declaration of image styles by frontend teams.
Our contributions also extended to OpenAgenda, where we provided considerable assistance in improving their module and libraries (https://github.com/OpenAgenda/sdk-php/pull/4#event-9685431846, https://github.com/OpenAgenda/sdk-php/pull/2, https://www.drupal.org/project/openagenda/issues/3341552, https://www.drupal.org/project/openagenda/issues/3299977, https://github.com/dallgoot/yaml/pull/10, https://github.com/dallgoot/yaml/pull/11).
Infomaniak and Jelastic