A Jekyll static site for BSidesNYC. Hosted on GitHub Pages. This site has been modernized to use Bootstrap 5.3.3 and native browser APIs, significantly reducing legacy dependencies like jQuery.
_config.yml ← single source of truth for event config (dates, venue, top nav)
_data/ ← YAML content files (speakers, sponsors, sessions, villages, archive/YYYY)
_includes/ ← reusable HTML partials
_layouts/ ← default.html (master layout) + compress.html (HTML minifier)
_sass/ ← modular SCSS
js/ ← custom JS (ES6+ standardized)
Pages are simple HTML files with YAML front matter (layout: default, permalink: /foo/).
Key sections:
year, date, location: Current conference metadata.navigationLinks: Top-nav items.sessionize.*: API endpoint URLs for schedule and speaker data._layouts/default.htmlMaster layout. Modernized features:
preconnect and font-display: swap in the <head> for near-instant text rendering.defer.Entry point: css/main.scss pulls from _sass/main.scss.
_sass/partials/_base.scss using CSS variables (--bs-primary).transform: scale() for card zooms.waves.js ripple with modern CSS :active feedback.<symbol> library in _includes/svg-icons.html for zero-request icon and logo loading.Dynamic pages fetch data via the Sessionize API using fetch(). The codebase uses ES6+ syntax (const, let, arrow functions, .forEach(), .find()).
| File | Responsibility |
|---|---|
js/scripts.js | Global behaviors: Sticky header (native scroll listener), IntersectionObserver for animations. |
js/schedule.js | Builds the schedule table and session modals. |
js/speakers.js | Builds the speaker grid. Cards “fill in” individually as images load. |
js/utils.js | Centralized Utilities: Contains createBootstrapModal, addSessionContentToModal, and addSpeakerContentToModal to ensure UI consistency. |
js/archive.js | Video modal logic and URL parsing for the Archive page. Utilizes Plyr.js for unified playback. |
js/map.js | Google Maps initialization and configuration. |
.mp4 links from archive.org and handle YouTube embeds with a consistent UI.position: sticky instead of JavaScript plugins.Update conference date/venue: Edit _config.yml.
Add a sponsor: Add entry to _data/sponsors.yml under the correct tier. Update image in img/sponsors/.
Add a new archive year:
_data/archive/YYYY.yml.archive.html and add ``.
Update track→room mapping: Edit trackToRoomElements() in js/utils.js.
bundle install
bundle exec jekyll serve
GitHub Pages handles the production build automatically on push to master.