Skip to content

KunalPareek21/podium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Podium

A modern event, conference, and speaking theme for WordPress.

Built for WordCamp organizers, conference websites, and public speakers. Speaker profiles, session schedules, talk archives, sponsor tiers, and venue information handled natively — without page builders.


Who Podium Is For

  • WordCamp organizers who need a complete event site on day one
  • Conference teams building for developer, design, or community events
  • Public speakers who want a personal site showcasing talks and appearances
  • Community groups running recurring events like meetups or online conferences

Podium came from the real pain of running WordCamps with generic themes. Conference attendees check schedules on mobile on bad wifi during the event. Speakers deserve proper profile pages. Sponsors deserve tiered display. None of this should require a page builder.


Features

Conference Core

  • Custom post types for Speakers, Sessions, and Talks
  • Session taxonomy: Tracks (Development, Design, Business, Community, and more)
  • Session taxonomy: Session Types (Keynote, Workshop, Talk, Panel, Lightning Talk)
  • Multi-day schedule with time slot display and track filtering
  • Schedule readable without JavaScript (progressive enhancement)
  • Speaker profile pages with photo, bio, social links, and talk listing
  • Sponsor tier pages: Gold, Silver, Bronze, Community
  • Venue page with address and map link
  • Call for Speakers (CFP) page with open/closed status display
  • Code of Conduct page template

Performance

  • Lighthouse Performance score target: 95+
  • LCP (Largest Contentful Paint) under 2 seconds
  • CLS (Cumulative Layout Shift) under 0.1
  • TBT (Total Blocking Time) under 200ms
  • Self-hosted variable fonts (no Google Fonts API calls)
  • JavaScript deferred, loaded in footer
  • No external JavaScript libraries
  • No jQuery
  • Speaker photos lazy loaded
  • Sponsor logos lazy loaded
  • CSS under 25KB unminified
  • JavaScript under 15KB unminified total

Full Site Editing (FSE)

  • Built entirely on the block editor
  • 14 pre-built block patterns for common event layouts
  • 9 template parts (header, footer, speaker card, session card, sponsor tier, and more)
  • 19 block templates including all custom post type archives and singles
  • Style variations support
  • Full theme.json configuration

SEO and Structured Data

  • Event schema (schema.org) on homepage and event pages
  • Person schema on speaker profile pages
  • BreadcrumbList on all interior pages
  • WebSite schema with SearchAction on homepage
  • Open Graph meta tags (og:title, og:description, og:image, og:type, og:url)
  • Twitter Card meta tags
  • All schema via JSON-LD in wp_head

Accessibility

  • WCAG 2.1 AA compliance target
  • Skip navigation link
  • ARIA landmarks and labels throughout
  • Keyboard navigation for mobile menu, dropdowns, day tabs, filter buttons
  • Focus trap in open mobile menu
  • Accessible countdown timer (announced to screen readers once per minute)
  • Color contrast compliant palette
  • Reduced motion support

Customizer Options

  • Event name, tagline, start/end dates, location, format
  • Ticket URL and price
  • CFP status (open/closed), deadline, submission URL
  • Header: show/hide date, ticket button text, sticky toggle
  • Colours: primary accent, secondary accent, session type colours
  • Footer: tagline, WordPress attribution toggle
  • Social links: Twitter, Mastodon, GitHub, YouTube
  • Event hashtag
  • Schema: organization name and logo

Installation

From GitHub

  1. Download the repository as a ZIP file
  2. In WordPress admin: Appearance → Themes → Add New → Upload Theme
  3. Upload the ZIP and click Activate

Manual

  1. Copy the podium folder to /wp-content/themes/podium/
  2. In WordPress admin: Appearance → Themes
  3. Click Activate under Podium

Requirements

  • WordPress 6.3 or later
  • PHP 8.0 or later
  • Tested up to WordPress 6.8

WordPress.org Theme Features Supported

Feature Status
Custom Logo
Custom Menu
Featured Images
Full Width Template
RTL Language Support
Translation Ready
Block Patterns
Full Site Editing
Wide Blocks
Accessibility Ready
Editor Style
Dark Color Scheme ✓ (style variation)
Light Color Scheme ✓ (default)
Sticky Post
Theme Options ✓ (via Customizer)

Custom Post Types

podium_speaker

Speaker profiles for event presenters.

Meta Fields:

  • podium_speaker_title — Job title or role
  • podium_speaker_organization — Company or affiliation
  • podium_speaker_website — Personal website URL
  • podium_speaker_twitter — Twitter/X handle (without @)
  • podium_speaker_github — GitHub username
  • podium_speaker_mastodon — Mastodon handle (@user@instance)
  • podium_speaker_linkedin — LinkedIn profile URL
  • podium_speaker_bio_short — Short bio under 150 characters
  • podium_speaker_country — Country of origin

podium_session

Conference sessions and talks on the schedule.

Meta Fields:

  • podium_session_date — Session date (YYYY-MM-DD)
  • podium_session_start_time — Start time (HH:MM, 24h)
  • podium_session_end_time — End time (HH:MM, 24h)
  • podium_session_room — Room or location name
  • podium_session_speaker_ids — JSON array of speaker post IDs
  • podium_session_slides_url — Link to slide deck
  • podium_session_video_url — Link to recording
  • podium_session_is_keynote — Boolean keynote flag
  • podium_session_capacity — Seating capacity
  • podium_session_language — Session language

Custom Taxonomies

  • podium_track — Organizes sessions by topic track (Development, Design, Business, Community, Beginner, Advanced)
  • podium_session_type — Classifies session format (Keynote, Workshop, Talk, Panel, Lightning Talk, Break)

Folder Structure

podium/
├── assets/
│   ├── css/
│   │   ├── style.css          Main theme CSS (BEM, custom properties)
│   │   ├── schedule.css       Schedule page styles
│   │   ├── editor.css         Block editor styles
│   │   └── print.css          Print stylesheet
│   ├── fonts/                 Self-hosted variable fonts (woff2)
│   ├── images/                Theme images (none bundled)
│   └── js/
│       ├── navigation.js      Mobile menu, sticky header, keyboard nav
│       ├── schedule.js        Schedule filtering (progressive enhancement)
│       └── countdown.js       Accessible event countdown
├── docs/                      Full documentation
├── inc/
│   ├── accessibility/         WCAG 2.1 AA enhancements
│   ├── customizer/            WordPress Customizer settings
│   ├── patterns/              Block pattern registration
│   ├── performance/           Performance optimizations
│   ├── post-types/            Custom post type definitions
│   ├── schema/                JSON-LD structured data
│   ├── setup/                 Core theme setup (support, enqueue, menus)
│   ├── taxonomies/            Custom taxonomy definitions
│   └── template-tags/         Template helper functions
├── languages/                 Translation files (.pot)
├── parts/                     FSE template parts (HTML)
├── patterns/                  Block patterns (PHP)
├── templates/                 FSE block templates (HTML)
├── CHANGELOG.md
├── README.md
├── functions.php
├── screenshot.png
├── style.css                  WordPress theme header
└── theme.json                 Full Site Editing configuration

Style Variations

Podium ships with style variations in /styles/:

Variation Description
Default Warm off-white background, orange accent
Dark Dark slate background for evening events
High Contrast Maximum contrast for accessibility-first deployments

Apply a variation via Appearance → Editor → Styles.


Customization

See docs/customization.md for the complete customization guide.

Quick reference:

  • Colours: Appearance → Customize → Podium Colours
  • Event Info: Appearance → Customize → Event Information
  • Social Links: Appearance → Customize → Social & Community
  • Block Patterns: Available in the editor pattern inserter under "Podium"
  • Child Theme: All templates can be overridden in a child theme

Accessibility Commitment

Accessibility in Podium is a community value, not a compliance checkbox.

The WordPress community includes attendees and speakers with visual, motor, cognitive, and hearing differences. The schedule must work with a screen reader. The venue page must work with keyboard-only navigation. The speaker profiles must have meaningful alt text.

See docs/accessibility.md for full WCAG 2.1 AA compliance details.


Performance Goals

Conference sites are used on-site, on conference wifi, on mobile phones. They must load fast under the worst conditions.

Metric Target
Lighthouse Performance 95+
Largest Contentful Paint < 2 seconds
Cumulative Layout Shift < 0.1
Total Blocking Time < 200ms
CSS (unminified) < 25KB
JavaScript (unminified) < 15KB total

See docs/performance.md for the full strategy.


WordCamp Specific Setup

  1. Activate Podium
  2. Configure event details: Appearance → Customize → Event Information
  3. Create the Speaker, Session, Schedule, Sponsors, Venue, CFP, and Code of Conduct pages
  4. Add speaker profiles via Speakers → Add New
  5. Add sessions via Sessions → Add New with date, time, room, and speaker
  6. Apply the appropriate block pattern to each page
  7. Configure navigation menus: Appearance → Menus (or Site Editor)
  8. Set your accent colour: Appearance → Customize → Podium Colours

See docs/event-guide.md for the complete step-by-step guide.


Contribution Guide

See docs/contribution-guide.md.

Pull requests welcome. Please follow WordPress Coding Standards for PHP, and JSDoc conventions for JavaScript.


License

GNU General Public License v2 or later

http://www.gnu.org/licenses/gpl-2.0.html


Author

Kunal Pareek https://kunalpareek.in

GitHub: https://github.com/KunalPareek21/podium

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors