171

Conference Website Template

£29
or the whole Vault, £99

The business, people and figures in this demo are made up for the example. Any resemblance to a real company is a coincidence.

A five-page conference website template for tech summits, webinar series, festivals with a livestream, church services and esports events. A live stage feed stays on screen for the whole visit and keeps playing while the pages change around it; the programme runs as a three-hall guide with a personal day planner.

ScrollTriggerFlip advanced
19 more details
page-transitionsoft-navigationdirectional-transitionshared-elementvideo-playbackvariable-fontflip-filterdialog-animationdraglocal-storagecountdownurl-statescrubsvg-line-drawreal-mapscroll-revealkeyboard-navigationfocus-managementprogressive-enhancement

Updated

About this template

A conference site has to do two things at once: sell the event and run the day. This five-page template puts one live picture at the centre of both. The home page sets a poster headline fitted flush to the full width of the screen with the main stage's feed cut into its first line, and under it a strip shows what is on in each hall right now and what comes next. Open Circuit, a fictional civic tech summit in a converted Leeds tram depot, is the worked example; the same pages suit a tech or business conference, an online summit or webinar series, a church with live services, an esports tournament or a festival with a stream.

Read the full template overview

The feed never stops. It sits in a slot on the page, docks to a corner when the slot scrolls away and comes back when it returns. Page changes move the page and leave the picture: the page eases out to the left, the stream holds on screen and then flies to its place on the next page as that page comes in from the right, Back the other way, without a restart. A hall switch on the feed changes the picture and repaints the site's "now" colour; halls without a stream say so and show their next session instead.

The programme is a broadcast-style guide with time running across three hall lanes. Tap or drag sessions into My Day to see clashes and walking time between halls, and the passes page builds an order from those picks with a ten-minute pass hold that survives every page change. An ink-dark stage, warm paper sections between the dark ones and three hall colours carry the whole system; change the hall names, colours, photographs and copy to make it yours. Everything is static HTML, CSS and JavaScript with bundled images and video and no build step.

Conference - website template preview

What's included

14 items
  • Five standalone HTML pages: home, programme, speakers, venue and passes
  • A persistent live feed outside the page: it sits in each page's slot, docks to a corner (or the phone bar) when the slot scrolls away, and can be paused or minimised
  • Page changes that move the page and leave the picture: the stream holds on screen while the next page loads, then flies to its slot or dock on the new page; Back runs the other way
  • Hall switch on the feed: Hall A plays the live loop, Halls B and C show a photograph with an honest "not live" label and their next session
  • Poster masthead with both lines fitted flush to the measure, refitted automatically if the words change
  • Real-time day strip with a now-line and rolling now/next labels for each hall
  • Programme guide with time across three hall lanes, track and day filters, deep links such as ?track=data&day=fri and a full session listing with calendar files
  • My Day planner on every page: tap or drag sessions in, see clashes and walking time between halls, kept in the browser
  • A live "on now" list of all three halls in the Speakers and Passes page heads, each row linking to its session
  • Speakers page with a Flip regrid by track, monochrome portraits that return to colour on hover, a profile drawer and a typographic index of 48 more names
  • Venue page with the stream playing on the stage photograph's own screen, a drawn floor plan with a scroll-drawn step-free route, and a real walking map from the station
  • Passes page with a ten-minute pass hold, a header timer that survives navigation, and an order built from My Day; a front-end demo checkout
  • Real links and complete pages without JavaScript; instant page swaps and a paused stream under reduced motion
  • Bundled, graded WebP photographs and two H.264 stream loops, with credits

Perfect for

4 use cases
  • Tech, business and public sector conferences with several stages or rooms
  • Online summits and webinar series built around a live stream
  • Churches and ministries streaming services to a wider congregation
  • Esports tournaments, film and music festivals with live coverage of one stage

How it works

5 sections

One picture for the whole visit

The live feed lives outside the page content, so it keeps playing through every page change. Each page marks where it wants the picture with a data-screen slot: in the home masthead, in the active hall's lane on the programme, on the stage photograph's screen at the venue. Pages without a slot, or a slot scrolled out of view, dock the picture to the corner or the phone bar.

Pages change, the picture stays

Internal links fetch the next page while the current one slides a few pixels left and fades. The feed does not leave with it: it holds in place and keeps playing, so a slow connection shows the stream and never an empty screen. When the new page comes in from the right, the feed flies to its place there, the page's slot or the header dock. Back runs the other way. The video element is never replaced, so the stream never restarts.

Halls, the clock and now

A demo clock runs through the event day in real time, so the home strip always has a session on now and one next in each hall. The A, B and C switch on the feed changes the picture with a hard cut and repaints every now-line and current-page marker in that hall's colour. Hall B and C have no stream, so the feed shows their photograph, says not live and gives the next session time.

Planning a day

Programme cards are buttons: tap one to add it to My Day, or drag it onto the list beside the guide on a desktop. Clashing picks shake and are flagged, and the list shows walking time between halls and warns when a change is tight. The passes page suggests the cheapest pass that covers the picks and holds it for ten minutes; the checkout is a front end only.

Calm when it needs to be

Reduced motion swaps pages instantly, re-seats the picture without a tween and pauses the stream behind a play button. Without JavaScript every link loads its page normally, the home slot plays the stream directly, the programme is a dated listing with calendar files and every speaker's profile is printed under their photograph.

Plugins ScrollTrigger, Flip
Difficulty Advanced
Includes HTML + JS + CSS source, documentation, AI setup prompt, lifetime updates

Lighthouse, as measured

Google Lighthouse on this template's demo (5 pages, lowest score shown), from the latest scan. A measurement of the demo as shipped, not a promise for your page.

Accessibility
100
Best practices
100

No performance score, on purpose. That figure depends on how you deploy: your server's compression and caching, your CDN, the connection and the device doing the test, none of which the code controls. The same page can score very differently on two consecutive runs, so measure it where it will live.

Questions about this template

Which kinds of event can use this template besides a conference?

Any event with rooms and a stream. An online summit or webinar series keeps the feed and programme as they are; a church can treat halls as services or sites; an esports tournament or festival can make the halls stages or courts. Swap the hall names, sessions, photographs and stream loop, and the guide, My Day and transition carry over unchanged.

How do I put my own live stream in the feed?

The feed is an ordinary HTML video element with a looping file, so replace the two MP4 files with your own loop of the same proportions. For a genuinely live stream, point the video at your provider's HLS address with their player library, or swap the video for their embed inside the same feed element; the docking and transition keep working because they move the container, not the video.

How do I change the programme, halls and tracks?

Edit the session listing in programme.html: each session is one list item with its day, hall, start, end and track as data attributes. The guide, the home now/next strip, the feed's next-session labels and My Day all read that one list. Hall names, walking times between halls and pass prices are short settings at the top of the script.

Does the pass checkout take real payments or save bookings?

No. The passes page is an unwired static front end. It holds a chosen pass for ten minutes in the visitor's browser tab, builds an order from their My Day picks and shows a demo message on checkout; nothing is charged, reserved or sent. Connect your ticketing provider, such as Tito, Eventbrite or your own checkout, and update the visible notes before selling passes.

Is the newsletter sign-up connected to anything?

No. The footer form is a front end only: it checks that an email address was entered and shows a confirmation, but sends nothing. Point it at your mailing tool, for example Buttondown, Mailchimp, Formspree or your CRM, and remove the demo note in the footer of each page.

Are the speakers, sessions and venue real?

No. Open Circuit, its 72 speakers, organisations, sessions, figures and the depot are fictional examples. The portraits and hall photographs are licensed stock of unrelated people and places, the depot exterior is an AI-generated concept image, and the stream loop is licensed stock footage. Replace them with your own speakers, programme and photographs, with permission, before you publish.

The Vault opens this source and the whole library.

Each product gives you the HTML, CSS and JavaScript source, the full documentation and an AI setup prompt, licensed for unlimited personal and commercial projects. Every paid product is tested for desktop and mobile layouts, reduced-motion handling, animation cleanup and keyboard controls wherever there is something to operate.

One payment, over 350 products, and future additions to the library.

Documentation

Quick Start

Upload the folder to any static host and open index.html. Keep the five HTML files beside assets/ so relative links keep working. There is no build step, framework or package to install.

Serve the files over HTTP or HTTPS to see the page transitions and the live now/next labels. While editing, use any local static server (for example python3 -m http.server in the folder) and open http://localhost:8000/index.html. Opened straight from disk the pages still work, but links load normally without the transition and the clock-driven labels keep their written text.

GSAP, ScrollTrigger and Flip load from a CDN; MapLibre loads on the venue page only, when the map nears the screen. Fonts, images, video, styles and scripts are bundled locally.

Using It With Your Own Design

  1. Identity. Replace "Open Circuit", the dates, the address and the fictional-event note in the header and footer of each page. They are repeated in all five files so each page stands alone.
  2. Halls. Rename the three halls in the markup (the feed's A/B/C switch, the home strip, the venue plan, the hall cards) and in the HALLS setting at the top of assets/script.js. STREAMED says which halls have a stream; WALK holds the walking minutes between them.
  3. Programme. Edit the session listing in programme.html (see Programme and My Day). Everything clock-driven reads it.
  4. Stream and photographs. Swap the files in assets/media/ and assets/img/ keeping the names and proportions, then update alt text and captions to describe what yours show.
  5. Colour and type. Edit the tokens at the top of assets/style.css (see Palette and Fonts).
  6. Passes and sign-up. Connect the passes page and the footer form to real services before selling anything (see Passes).

Everything visual lives in assets/style.css; everything interactive lives in assets/script.js, one function per feature, each returning early when its markup is absent. assets/page-router.js is the small router underneath the transition (link handling, fetching, history, scroll and focus); you should not need to edit it. Delete a section from the HTML and the rest keeps working.

Pages and Configuration

File Content
index.html Fitted masthead with the feed cut into it, the now/next day strip, figures, four track rows (a photograph appears on hover), six speakers, the depot and its three halls, pass prices
programme.html Day and track filters, the three-lane guide with My Day beside it, then every session as a dated listing with calendar files
speakers.html Track filter beside a live "on now" list, 24 photographed speakers with a profile drawer, 48 more as a typographic index, call for speakers
venue.html Hall A stage photograph with the feed on its screen, floor plan with the step-free route, walking map from the station, access, hotels
passes.html A live "on now" list in the head, three passes with a ten-minute hold, the order built from My Day, questions

Hooks you will meet in the markup:

  • data-page wraps each page's content and footer. Everything outside it (the header, the feed, the phone bar and the two sheets) persists across page changes and is repeated in every file.
  • data-screen marks where a page wants the live picture. Use one per page; a page without one docks the feed. data-screen-hero on it (or its parent) means the transition waits for that slot's image before landing.
  • data-rig is the feed itself. data-rig-video is the stream, data-rig-still="b" a hall's still photograph, data-hall="a" the switch buttons.
  • data-session on each programme listing item with data-day, data-hall, data-start, data-end and data-track.
  • data-pick="session-id" on any button makes it add or remove that session from My Day; data-myday-list renders the list; data-myday-count shows the count.
  • data-hold-time, data-hold-chip and data-pass-hold="day" drive the pass hold timer.
  • data-fit="one" / data-fit="two" are the masthead lines; data-rise lifts them in on first load.
  • data-reveal-group and data-hero-fade give a gentle rise on scroll and on load.

The Feed

The feed (.rig) is a single element outside the page content, so it never reloads. It has four modes:

  • slot: positioned over the page's data-screen slot. It is placed in document coordinates, so it scrolls with the page natively and never trails behind it.
  • dock: an 80 by 45 pixel thumbnail in the header beside My Day on desktops (64 by 36 between 768 and 1023 pixels wide; data-bar-dock), or a 96 by 54 thumbnail at the left of the phone bar (data-phone-dock). It docks when less than half of the slot is on screen and flies back when it returns. Both docks are empty places that open only while the feed sits in them (html[data-dock-open]), so the picture is never shown twice and never floats over the page. On a desktop, clicking the header thumbnail (data-rig-expand) opens a larger 280 by 158 picture at the bottom right with hall, pause and back-to-page controls; its arrow button (data-rig-collapse) puts it back in the header. On a phone, tapping the bar thumbnail scrolls back to the page's picture.
  • move: flying between the two (0.5s).
  • travel: owned by the page transition.

Every slot carries the stream's poster as its own background, so the instant before the feed arrives shows the same picture.

Halls. The A/B/C switch is a radio group (arrow keys move between halls). Hall A plays the stream; halls marked false in STREAMED show their photograph from data-rig-still, a "Not live" label and their next session time from the programme. Switching repaints the --now colour used by now-lines and the current-page marker. On the programme page the picture moves to the chosen hall's lane.

The stream. It is a muted looping video with autoplay loop muted playsinline in the markup: stage-360.mp4 under 700 pixels wide, stage-720.mp4 above. There is deliberately no sound control. To show a real live stream, point the video at your provider's HLS address with their player library, or replace the <video> with their embed inside .rig-frame; docking and the transition move the container, not the video.

Speaker portraits. Portraits from different photographers rarely match, so the grid shows them in monochrome and returns each to colour on hover or focus. To show colour throughout, delete the filter on .face-photo img in assets/style.css.

The "on now" list. Speakers and Passes carry a three-row list of what is on in each hall (data-head-now). Its rows are written in the markup for visitors without JavaScript and repainted from the clock and the programme listing; delete the <aside> to remove it, or add it to any page head with the page-head--now class.

The demo clock. Now/next labels follow a clock that starts at 11:05 on the first day and runs in real time. Add ?t=14:20 to any address to start it elsewhere. Change DEMO_START, DAY_START and DAY_END at the top of assets/script.js, or replace clock.now() with the real time of day once your event is live.

Page Transitions

Every same-origin link to a sibling .html page runs the same change: the page moves, the picture stays.

  1. Out (0.26s). The page eases 64 pixels to the left (6% of the width on narrow screens) and fades. The feed does not fade with it: it holds where it is and keeps playing. The next page is already being fetched; links prefetch on hover, focus and touch.
  2. Hold. Waits for the next page's feed slot image. On a slow connection the visitor watches the stream, not an empty screen.
  3. In (0.48s). The new page comes in from the right at its restored scroll position while the feed flies (0.62s) to its place on that page: the page's slot if it is on screen, otherwise the header dock or the phone bar.

Back runs the other way: out to the right, in from the left. The feed lives outside the page and is never replaced, so the stream never restarts. The new page's heading receives focus and is announced. Phones run it a little faster, and reduced motion swaps pages instantly.

Notes for editing:

  • Pages are fetched, not reloaded, so scripts inside a fetched page do not run. Put new behaviour in assets/script.js as another init function called from initPage. Every page loads assets/page-router.js before assets/script.js; keep that order on a new page.
  • The transition is the leave, hold, enter and reset functions passed to PageRouter.create at the end of assets/script.js (slideOut, slideIn, resetTransition). The distance is in shift() and the durations in timing() (fly is the feed's flight).
  • Any sibling HTML file with a data-page wrapper joins the transition automatically. Add data-native-navigation to a link or container to opt out; downloads, new-tab clicks, external links and same-page anchors already behave normally.

Swapping it for a plain crossfade. Remove the page-router.js script tag from every page and add @view-transition { navigation: auto; } to the stylesheet. The browser then crossfades between ordinary page loads where supported, but the feed restarts on each page.

Programme and My Day

Each session in programme.html is one list item:

In your downloadThe working code for this step, in index.html.

The guide, the home page's now/next strip, the feed's next-session labels, My Day and the passes order all read this one list (other pages fetch it once in the background). Keep the id and data-session equal; they are also the anchor that speaker links point to. Tracks are named in TRACKS at the top of the script and in the filter buttons. ?track=data&day=fri opens the programme filtered.

My Day is kept in the visitor's browser (local storage) and shown in the drawer on every page and in the column beside the guide on wide screens. Picks that overlap are flagged as clashes; consecutive picks in different halls show the walking time from WALK, marked tight when the gap is shorter.

Passes

The passes page is a front end only. "Hold this pass" starts a ten-minute hold kept in the browser tab, shown in the header on every page and at display size on the passes page, with spoken warnings at five minutes and one minute. The order suggests the cheapest pass that covers the visitor's My Day picks and explains mismatches. "Check out" shows a demo message: nothing is charged, reserved or sent. Connect your ticketing provider (Tito, Eventbrite or your own checkout) and change the notes before selling passes. Prices live in the markup and in PASSES at the top of the script.

The footer sign-up form is also unwired: point it at your mailing tool (Buttondown, Mailchimp, Formspree or your CRM) and remove its demo note.

Venue Map and Plan

The map is MapLibre GL on OpenFreeMap's positron style, with no API key. Set the pin with DEPOT, the station with STATION and the walking line with WALK_ROUTE (longitude, latitude pairs) near initMap in assets/script.js; the bundled route is the real 850 metre footpath route from Leeds station, routed on OpenStreetMap data. Without JavaScript or WebGL a link to OpenStreetMap stays in its place.

The floor plan is inline SVG in venue.html. The halls (data-plan-hall="a") light up from the key or on hover, and the step-free route (data-plan-route) draws as the plan scrolls through the screen.

The stage photograph's screen is a data-screen slot positioned with four percentages (--sx, --sy, --sw, --sh) measured on the photograph. With your own stage photo, measure the screen and change those four values.

Palette

Token Value Use
--stage #17161B Ground of the dark sections and the header
--stage-raise #222127 Raised panels, sheets, the scrolled header
--paper #F2EEE6 Text on stage; ground of session and pass cards and of paper sections
--paper-mute #B3AEA5 Secondary text on stage
--ink-mute #5A554C Secondary text on paper cards
--live #FF5E4D The LIVE mark and now-lines only
--hall-a / --hall-b / --hall-c #FF5E4D / #1E9E8F / #E0A526 Wayfinding for each hall

Paper sections. Add data-ground="paper" to any <section> to turn it over: the stage and paper tokens swap inside it, so its text, rules, buttons and cards repaint with no extra CSS, and the hall colours switch to their deep inks (--hall-a-ink and so on), which hold contrast on paper. The demo alternates them with dark sections on every page; move the attribute to change the rhythm.

Measured contrast pairs are recorded at the top of assets/style.css. Paper on stage is 15.5:1; every hall colour clears 4.5:1 on its ground. The design keeps two rules: coral only ever means live, and a hall colour only ever means its hall.

Fonts

Self-hosted latin WOFF2 files in assets/fonts/, all under the SIL Open Font License:

  • Anybody (800, width 55 to 70%) for display. The masthead lines are fitted to the full width: the stylesheet sizes each line as width divided by --k, and the script corrects --k from the rendered text once the font loads, so new words stay flush.
  • Schibsted Grotesk (400 to 600) for text and interface.
  • Spline Sans Mono (500) for times, hall codes and counts.

To change a face, replace the @font-face rules at the top of assets/style.css, the two font preloads in each page's <head> and the --font-* tokens.

Images and Video

The photographs are bundled as graded WebP files in assets/img/ (several at more than one width for phones), and the stream as two H.264 loops with posters in assets/media/. To replace one, keep the file name and proportions, or change the path in the markup, and update its alt text and caption. The Hall B and C photographs also appear inside the feed. The venue stage photograph is cropped tightly around its centre screen, which holds the live picture.

Some photographs contain incidental words: the venue stage photograph has a small sign at its right edge outside the crop, and the lanyards on the passes page carry handwritten name cards.

File Source Licence
media/stage-720.mp4, media/stage-360.mp4, media/stage-poster*.webp https://www.pexels.com/video/engaging-business-presentation-by-a-speaker-34917491/ (Pexels video 34917491) Pexels licence
img/venue-stage*.webp https://www.pexels.com/photo/3866658/ Pexels licence
img/depot*.webp AI-generated for this template: a concept image of a fictional building, not a real place Yours to use with the template
img/hall-b-paint-shop.webp https://www.pexels.com/photo/12266313/ Pexels licence
img/hall-c-yard.webp https://www.pexels.com/photo/18999475/ Pexels licence
img/track-services.webp https://www.pexels.com/photo/4269206/ Pexels licence
img/track-data.webp https://www.pexels.com/photo/7651734/ Pexels licence
img/track-democracy.webp https://www.pexels.com/photo/8761544/ Pexels licence
img/track-infrastructure.webp https://www.pexels.com/photo/30589059/ Pexels licence
img/audience.webp https://www.pexels.com/photo/9275222/ Pexels licence
img/passes-lanyards.webp https://www.pexels.com/photo/7648020/ Pexels licence
img/speaker-01.webp https://www.pexels.com/photo/15780884/ Pexels licence
img/speaker-02.webp https://www.pexels.com/photo/6702753/ Pexels licence
img/speaker-03.webp https://www.pexels.com/photo/40062830/ Pexels licence
img/speaker-04.webp https://www.pexels.com/photo/32846944/ Pexels licence
img/speaker-05.webp https://www.pexels.com/photo/1181691/ Pexels licence
img/speaker-06.webp https://www.pexels.com/photo/40027139/ Pexels licence
img/speaker-07.webp https://www.pexels.com/photo/3893767/ Pexels licence
img/speaker-08.webp https://www.pexels.com/photo/36499769/ Pexels licence
img/speaker-09.webp https://www.pexels.com/photo/40062823/ Pexels licence
img/speaker-10.webp https://www.pexels.com/photo/8727416/ Pexels licence
img/speaker-11.webp https://www.pexels.com/photo/7550900/ Pexels licence
img/speaker-12.webp https://www.pexels.com/photo/8545970/ Pexels licence
img/speaker-13.webp https://www.pexels.com/photo/39974545/ Pexels licence
img/speaker-14.webp https://www.pexels.com/photo/30004313/ Pexels licence
img/speaker-15.webp https://www.pexels.com/photo/40062833/ Pexels licence
img/speaker-16.webp https://www.pexels.com/photo/40062842/ Pexels licence
img/speaker-17.webp https://www.pexels.com/photo/2182970/ Pexels licence
img/speaker-18.webp https://www.pexels.com/photo/33344803/ Pexels licence
img/speaker-19.webp https://www.pexels.com/photo/6077664/ Pexels licence
img/speaker-20.webp https://www.pexels.com/photo/40409385/ Pexels licence
img/speaker-21.webp https://www.pexels.com/photo/4584496/ Pexels licence
img/speaker-22.webp https://www.pexels.com/photo/8899940/ Pexels licence
img/speaker-23.webp https://www.pexels.com/photo/37070438/ Pexels licence
img/speaker-24.webp https://www.pexels.com/photo/15796832/ Pexels licence

The people photographed are unrelated to this fictional event; the names beside them are invented. Use portraits of your real speakers, with their permission. Map data © OpenStreetMap contributors (ODbL), tiles by OpenFreeMap.

Accessibility

  • Every page is complete without JavaScript: links load pages, the home slot plays the stream, the programme is a dated listing with an "Add to calendar" file per session, and speaker profiles print under their photographs.
  • Reduced motion swaps pages instantly, re-seats the feed without movement, pauses the stream behind a play button and shows every reveal at once.
  • Programme cards are real buttons with aria-pressed; dragging is an extra, never the only way to add a session. Clashes and changes are announced in a polite live region.
  • The menu, My Day and the speaker drawer are native dialogs: focus moves in, Escape and a click outside close them, and focus returns to the button that opened them.
  • After a page change focus lands on the new heading, with a visible ring only when the visitor is using the keyboard.
  • The hold timer is a role="timer" and announces five minutes and one minute left.

Dependencies

  • GSAP with ScrollTrigger and Flip, 3.12+ (the demo pins 3.15.0 from jsDelivr).
  • MapLibre GL 4.7.1 from unpkg, venue page only, with OpenFreeMap tiles.
  • No smooth-scroll library: the feed is positioned in the document so native scrolling keeps it glued to its slot.

Teardown

window.gsapContext.revert() stops the router, reverts every page feature (tweens, ScrollTriggers, observers, listeners, the map), returns the feed to rest and removes the reveal gate, leaving a static page.

Also in your download: the full source, worked examples, the events and programmatic API, and the class reference.

£29