Static website for finding BSides-related events and chapters in Norway.
- A small HTML/CSS site with links to Norwegian BSides events
- A simple map of southern Norway with linked city markers
- No framework, build step, or runtime dependency
- Keep the site fast, simple, and easy to maintain
- Make it easy to find Norwegian BSides events from one URL
- Prefer accessibility, readable markup, and useful structure over visual noise
- Use approved BSides branding where explicit permission has been given
index.html- Norwegian page structure, metadata, structured data, and small interaction scriptsen/index.html- English version of the same siteindex.template.htmlanden/index.template.html- source templates for the published HTML filesstyles.css- visual styling, responsive layout, and interaction statesassets-bsides-logo-original-mono.svg- BSides logo used in the page headingassets-hackeriet-logo.svg- Hackeriet logo used in the site footerfavicon-32x32.png,apple-touch-icon.png,android-chrome-192x192.png,android-chrome-512x512.png- official BSides icon assets used for browser and app metadatamanifest.webmanifest- web app metadata for browser installability and icon discoveryassets-norway-south-base.svg- source map asset from Wikimedia Commonsassets-norway-south-crop-h.svg- local cropped southern Norway map used by the sitescripts/check_sources.py- scheduled consistency check against chapter sites and BSides Globalscripts/render_lastmod.py- renders machine-facinglastmodmetadata into the published files.github/workflows/check-content.yml- daily GitHub Actions job for the freshness check.github/workflows/update-lastmod.yml- nightly GitHub Actions job that refreshes machine-facinglastmodmetadata.github/workflows/remind-security-txt-expiry.yml- opens a reminder issue beforesecurity.txtexpiresCNAME- GitHub Pages custom domain configurationrobots.txt- crawler directives with sitemap referencesitemap.xml- simple sitemap for the published pagessitemap.template.xml- source template for the generated sitemaphumans.txt- optional human-facing authorship and site metadata file.well-known/security.txtandsecurity.txt- security contact metadataSECURITY.md- minimal security reporting guidance404.html- custom GitHub Pages not-found pageLICENSE- repository license (CC0)
The contents of this repository are released under CC0 unless otherwise noted.
Third-party assets keep their own license terms. In particular, the map asset used on the site is derived from a Wikimedia Commons file by NordNordWest and must keep its attribution.
The BSides logo and official icon files are not covered by the repository's CC0 license. They are included for this site based on explicit permission from BSides Global and should be treated as separate branded assets.
The Hackeriet footer logo is also a separate branded asset and is not part of the repository-wide CC0 grant.
The custom 404 page uses hackers-love.jpg, matching the design used on hackeriet.no.
That image should also be treated as a separate asset, not as part of the repository-wide CC0 grant.
Edits are welcome as pull requests.
Useful contributions include:
- correcting event links
- updating event dates or venue text
- improving accessibility
- improving the map or marker placement
- tightening the Norwegian wording
- keeping the Norwegian and English pages in sync
- The site currently defaults to Norwegian
- An English version is available at
/en/ - Light and dark mode follow the user’s system preference
- The event list is the primary navigation; the map is secondary
- GitHub Pages is configured for the
bsides.nocustom domain - Scheduled automation is confined to off-hours UTC runs and each workflow has a job-level timeout so slow external services do not keep runners busy indefinitely
- A daily GitHub Actions job checks whether the local pages still match the chapter sites and BSides Global listings, opens or updates one issue on failure, and closes it again when the check passes
- A separate nightly job refreshes machine-facing
lastmodmetadata in the published pages and sitemap
The scheduled checker verifies:
- the Norway-only BSides chapter listing on
bsides.orgstill matches the chapters listed on this site - each chapter still resolves to the expected local or BSides Global page
- each local chapter site still exposes the chapter-specific clues this site relies on
- chapters with events in the next six months also appear on the BSides Global event search for their city
- matching BSides Global event pages have not drifted on title, date, or venue where the local sources expose venue details
The GitHub Actions workflow uses a single content-drift label for the automated issue it opens on failure.
Operational safeguards:
- the checker uses a 10-second per-request timeout for upstream HTTP fetches
- the
check-contentworkflow has a 10-minute job timeout - the
update-lastmodandremind-security-txt-expiryworkflows have 6-minute job timeouts
index.html,en/index.html, andsitemap.xmlare published artifactsindex.template.html,en/index.template.html, andsitemap.template.xmlkeep placeholder values for machine-facinglastmodfieldsscripts/render_lastmod.pyreplaces those placeholders using the commit timestamp of the source revision.github/workflows/update-lastmod.ymlruns that renderer once per day during the night (UTC) and can also be triggered manuallyscripts/render_lastmod.pyuses a 6-second subprocess timeout when resolving the source commit timestamp- the generated
dateModified,og:updated_time, and sitemaplastmodvalues are meant for search engines, crawlers, and agents, not for visible page text
/.well-known/security.txtis the canonical security.txt location/security.txtmirrors the same content for older tooling- the security contact currently points to GitHub Issues by design; reporters are expected to request private contact there rather than post sensitive details publicly
- a weekly GitHub Actions workflow opens a reminder issue during the last 45 days before the configured
security.txtexpiry date