• Stars
    star
    178
  • Rank 214,989 (Top 5 %)
  • Language
    JavaScript
  • License
    BSD 3-Clause "New...
  • Created over 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Markdown-based native presentation tool
https://beeware.org/project/projects/applications/podium/podium.png

Podium

Discord server

A markup-based slide presentation tool.

Why?

Developers go to conferences. And when they do, they need slide decks.

Unfortunately, while presentation tools like Keynote and PowerPoint are great for business presentations, they aren't well suited to the needs of developers. The mainstay of developer presentations -- code samples -- are generally painful to add to a Keynote presentation.

These presentation tools also come from a WYSIWYG (What You See Is What You Get) tradition. This can be powerful, because it makes it easy to put anything you want onto a slide. But it can also be painful, because you end up spending all your time pushing pixels into the right place, instead of focussing on the content of your talk. And if you want to make a style change, you may need to apply that change manually to every slide. The lessons of separating content from markup can't be applied to a WYSIWYG world.

On top of all that, the document formats for Keynote and Powerpoint are binary blobs -- they don't lend themselves to version control, collaborative editing, and so on.

The developer response to this has been to use HTML5. Recent years have seen the development of a number of HTML-based presentation tools, like prezi, deck.js, keydown and showoff. These tools exploit the power of HTML5 to make full screen presentations.

However, by using browser technology as the basis for these tools, they miss one very important feature of WYSIWYG presentation tools: presenter mode. One of the big features of Keynote and Powerpoint is that they aren't just decks of slides -- they have presenter notes and timing tools, and the display shown to the audience isn't the same as the display shown to the presenter. Web-based presentation tools are often missing presenter mode.

Or, if they do have a presenter mode, they rely on you being able to independently resize two separate web browsers, and they won't provide any assistance in hiding all the browser toolbars, menus, titlebars, and so on. This can be done, but it's awkward.

Many of these tools are also online-only. They assume that you have a good WiFi connection, and will be able to display your content live off the internet... which if you've ever been to a developer conference, you'll know is a risky proposition.

Podium attempts to bridge the gap between these two poles. It is comprised of:

  • A simple, text-based markup format, focussed on the needs of developer presentations.
  • A graphical presentation tool that has a presenter display independent of the slide display.

Quickstart

Official releases of Podium can be downloaded from the GitHub releases page.

Download the binary for your platform of choice, and run it. This should open a file dialog, prompting you to open a .podium slide deck. An example Podium slide deck is also available in the releases folder. Unzip the deck, and open it in Podium.

Note

The Linux AppImage format is a cross-platform binary that should run on any Linux distribution using GLibC 2.23 or later - this includes Ubuntu 16.04 and later, Fedora 24 and later, and others.

After downloading the AppImage, you may need to mark the AppImage file as executable (chmod +x Podium-*.AppImage) first. In Linux, .podium files appear as directories; select the directory and click Open.

Controls from here are keyboard based:

  • CMD-P - Enter presentation mode; or, if in presentation mode, Pause timer
  • Esc - Exit presentation mode
  • CMD-Tab - Switch displays
  • Right/Left arrows - Next/previous slide
  • Down/Up arrows - Next/previous slide
  • Enter - Next slide
  • Home/End - first/last slide
  • CMD-A - Switch aspect ratio between 16:9 and 4:3
  • CMD-R - Reload slide deck
  • CMD-T - Reset timer

If you're on Linux, "CMD" is the Control key.

Developing Podium

Podium uses the BeeWare suite of tools and libraries - most notably, the Toga widget toolkit, and the Briefcase packaging tool.

To develop Podium, create a virtual environment, and install the BeeWare tools.

If you're using Linux, you'll need to install some system packages first:

# Ubuntu/Debian
$ sudo apt-get update
$ sudo apt-get install python3-dev libgirepository1.0-dev libcairo2-dev libpango1.0-dev libwebkit2gtk-4.0-37 gir1.2-webkit2-4.0

# Fedora
$ sudo dnf install pkg-config python3-devel gobject-introspection-devel cairo-devel cairo-gobject-devel pango-devel webkitgtk3

Then, you can create a virtual environment and install the BeeWare tools:

$ mkdir beeware
$ cd beeware
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install --pre beeware

Now that you have the code, you can clone the Podium repository and run it in developer mode:

(venv) $ git clone https://github.com/beeware/podium.git
(venv) $ cd podium
(venv) $ briefcase dev

This should open the same file dialog as before.

Packaging with Briefcase

Use Briefcase to package this repository as a standalone application:

$ briefcase package

Depending on your platform, this will produce a macOS folder containing a Podium DMG file, or a linux folder containing a .AppImage file.

Note

Packaging cross-distribution Linux binaries is a complex process; See the notes on AppImage packaging in the Briefcase documentation for more details.

Overriding Default themes

Define a style.css file to override the default theme. You can use the Debugging section to help you create a theme that suites your style.

Debugging

If you need to debug the CSS for a slide, you may want to use the "inspect element" feature of the webview. You may need to enable manually enable the feature at an operating system level:

  • macOS: at a terminal prompt, run:

    defaults write org.beeware.podium WebKitDeveloperExtras -bool true

Documentation

Documentation for Podium can be found on Read The Docs.

Community

Podium is part of the BeeWare suite. You can talk to the community through:

We foster a welcoming and respectful community as described in our BeeWare Community Code of Conduct.

Contributing

If you experience problems with Podium, log them on GitHub. If you want to contribute code, please fork the code and submit a pull request.

More Repositories

1

toga

A Python native, OS native GUI toolkit.
Python
4,236
star
2

briefcase

Tools to support converting a Python project into a standalone native application.
Python
2,536
star
3

batavia

A JavaScript implementation of the Python virtual machine.
JavaScript
1,394
star
4

Python-Apple-support

A meta-package for building a version of Python that can be embedded into a macOS, iOS, tvOS or watchOS project.
Makefile
1,088
star
5

voc

A transpiler that converts Python code into Java bytecode
Python
869
star
6

beeware

A meta-package simplifying the installation of the BeeWare suite of tools
832
star
7

beeware.github.io

🐍🐝
JavaScript
530
star
8

paying-the-piper

A project for discussing ways to fund open source development.
342
star
9

Python-iOS-template

A cookiecutter template for creating an iOS project running Python code.
301
star
10

ouroboros

A standalone, pure Python implementation of the Python Standard Library.
Python
292
star
11

rubicon-objc

A bridge interface between Python and Objective-C.
Python
263
star
12

bugjar

A interactive graphical debugger for Python code.
Python
247
star
13

cricket

A GUI tool for running Python test suites.
Python
209
star
14

Python-Android-template

A cookiecutter template for creating an Android project running Python code.
159
star
15

colosseum

An implementation of the CSS layout algorithm.
Python
127
star
16

Python-Android-support

A meta-package for building a version of Python that can be embedded into an Android project.
Dockerfile
83
star
17

rubicon-java

A bridge interface between Python and Java.
Python
71
star
18

gbulb

GLib implementation of PEP 3156
Python
64
star
19

duvet

A GUI tool for visualizing coverage data.
Python
53
star
20

vscode-beeware

A Visual Studio Code extension with support for BeeWare development
TypeScript
47
star
21

briefcase-template

A cookiecutter template for a starter Briefcase project.
Python
42
star
22

rubicon

A collection of tools to bridge between Python and other language environments.
Python
40
star
23

yorkshire4

The classic Usborne computer programming books - now in Python!
Python
38
star
24

beekeeper

A Website to manage test and deploy processes
Python
30
star
25

beefore

Tools to run pre-merge checks on a pull request or commit.
Python
28
star
26

Python-macOS-template

A cookiecutter template for creating a standalone macOS project running Python code.
Shell
26
star
27

galley

A GUI tool for reviewing ReST/Sphinx documentation
Python
25
star
28

toga-chart

A matplotlib charting widget for Toga.
Python
24
star
29

briefcase-macOS-app-template

A template for generating macOS app projects with Briefcase
Python
23
star
30

slick

A native web-based client for Slack.
Python
22
star
31

briefcase-iOS-Xcode-template

A template for generating iOS Xcode projects with Briefcase
Objective-C
21
star
32

briefcase-linux-appimage-template

A template for generating Linux AppImage projects with Briefcase
Dockerfile
20
star
33

briefcase-android-gradle-template

A template for generating Android Gradle projects with Briefcase
Python
19
star
34

Python-Linux-support

A meta-package for building a version of Python that can be embedded into a Linux AppImage project.
Makefile
18
star
35

Python-tvOS-template

A cookiecutter template for creating a tvOS project running Python code.
Objective-C
16
star
36

mobile-forge

A tool to manage building cross-platform binary wheels for mobile devices
Python
15
star
37

travertino

A set of constants and utilities for describing user interfaces
Python
15
star
38

briefcase-macOS-Xcode-template

A template for generating an Xcode project for a macOS app using Briefcase
Objective-C
10
star
39

liquid-demo

A demonstration of a "standalone web app", written in Toga.
Python
9
star
40

briefcase-windows-msi-template

A template for generating Windows MSI projects with Briefcase
9
star
41

Python-Windows-template

A cookiecutter template for creating a Windows project running Python code.
Python
7
star
42

Python-OSX-template

A cookiecutter template for creating an OS/X app running Python code.
Shell
7
star
43

trebuchet

A tool to deploy websites.
7
star
44

std-nslog

A shim that redirects stderr/stdout to the Apple System Log (NSLog)
Python
7
star
45

Python-Linux-template

A cookiecutter template for creating a Linux project running Python code.
6
star
46

cpython-android-source-deps

Libraries that are needed to compile CPython for Android
Shell
5
star
47

Python-support-testbed

A testbed app that can be used to validate BeeWare support packages.
Python
4
star
48

briefcase-windows-app-template

A template for generating Windows application projects with Briefcase
4
star
49

Python-Django-template

A cookiecutter template for creating a briefcase-Django project
3
star
50

.github

Community Health files for the BeeWare Project
Python
3
star
51

cpython-apple-source-deps

A meta-project for building the binary packages for iOS, tvOS and watchOS that a CPython build requires
Makefile
3
star
52

briefcase-windows-VisualStudio-template

A template for generating Visual Studio projects for building Windows apps with Briefcase
C++
3
star
53

cookiecutter-website

A cookiecutter template for new pybee project websites.
CSS
2
star
54

legless-lizard

A setuptools mock of pythonnet.
Python
2
star
55

briefcase-linux-system-template

A template for generating Linux system packages with Briefcase
C
2
star
56

briefcase-linux-flatpak-template

A template for generating Linux Flatpak projects with Briefcase.
C
2
star
57

cpython-macOS-source-deps

A meta-project for building the binary packages for macOS that a CPython build requires
Makefile
2
star
58

pytest-briefcase

A pytest plugin for running tests of a Briefcase project.
Python
2
star
59

comb

A repository of BeeKeeper task configurations.
2
star
60

briefcase-linux-deb-template

A template for generating Linux .deb projects with Briefcase
C
1
star
61

lektor-gravatar

A Lektor plugin for generating gravatars
Python
1
star
62

skep

A proxy for finding and serving the latest Briefcase support packages
Python
1
star
63

setuptools_dynamic_dependencies

A setuptools plugin that allows for dependencies that are dependent on the package's version number.
Python
1
star
64

briefcase-web-static-template

A template for generating static web projects with Briefcase.
HTML
1
star
65

actions

Reusable Github Action templates for BeeWare
1
star