Skip to main content

Manim-slides presentation framework with a generated web portal.

Project description

Simplex

PyPI version Python CI License

Simplex is a Manim presentation workflow with a generated static web portal. Write normal Manim scenes, mark slide boundaries with manim-slides, and let Simplex render the deck, reconcile slide metadata, build thumbnails, render notes, and publish a browsable site.

The PyPI distribution is simplex-web. It installs the simplex command and imports into the simplex.* namespace.

Why Simplex?

  • Author scenes with standard Manim objects such as MathTex, VGroup, Axes, and Animation.
  • Use manim-simplex slide bases, layout regions, theme tokens, and mobjects.
  • Organize decks under decks/ with a small deck.toml.
  • Build a static portal with deck pages, notes, citations, math rendering, thumbnails, RevealJS playback, and optional live reload.
  • Keep the rendered video frames clean; navigation chrome lives in the web viewer where it can be changed without re-rendering videos.

Packages

Simplex is split into a small toolkit:

Repository PyPI Purpose
manim-simplex manim-simplex Manim plugin, themes, slide bases, mobjects, and manifest schema.
simplex simplex-web CLI, deck discovery, render orchestration, static portal builder.
simplex-lectures-template - Starter lectures repository.

The import namespace is still simplex. Both manim-simplex and simplex-web intentionally use a PEP 420 namespace package so their modules merge at runtime.

Requirements

  • Python 3.13 or newer
  • FFmpeg
  • A LaTeX distribution
  • Manim's native dependencies, including Cairo and Pango on Linux

Typical system packages:

# Ubuntu / Debian
sudo apt-get install texlive-latex-extra texlive-fonts-recommended ffmpeg \
                     libcairo2-dev libpango1.0-dev
# Windows
winget install MiKTeX.MiKTeX
winget install Gyan.FFmpeg

After installation, run:

simplex doctor

Install

pip install simplex-web

With uv:

uv add simplex-web

For local development in this repository:

uv sync
uv run simplex doctor

Quick Start

Create a new deck in an existing project:

simplex new algorithms/hash-tables
simplex render hash-tables
simplex build
simplex serve

Then open:

http://localhost:8000

To start from the GitHub template instead:

simplex init my-lectures
cd my-lectures
simplex new first-deck
simplex build
simplex serve

Deck Layout

simplex new hash-tables creates a deck like this:

decks/hash-tables/
|-- deck.toml
|-- manim.cfg
|-- notes.md
|-- refs.bib
|-- assets/
`-- slides/
    |-- __init__.py
    `-- intro.py

The important fields in deck.toml are:

slug = "hash-tables"
title = "Hash Tables"
summary = "A one-line deck summary."
theme = "dastimator_dark"
quality = "high_quality"
entrypoints = ["slides.intro:Intro"]

entrypoints points to scene classes inside the deck directory. Legacy scenes = ["Intro"] is still accepted for single-file slides.py decks, but entrypoints is the preferred layout.

Authoring Slides

A scene is ordinary Manim plus the Simplex slide base:

from manim import DOWN, ORIGIN, Tex, Write

from simplex.slides import BaseSlide
from simplex.theme.context import get_active_theme


class Intro(BaseSlide):
    def construct(self) -> None:
        theme = get_active_theme()

        title = Tex("Hello, Simplex", font_size=theme.typography.h1)
        self.region.place(title, ORIGIN)

        subtitle = Tex(r"$e^{i\pi} + 1 = 0$", font_size=theme.typography.h2)
        subtitle.next_to(title, DOWN, buff=0.4)

        self.play(Write(title), Write(subtitle))
        self.next_slide()

BaseSlide comes from manim-simplex. It provides the default theme, bounded layout region, slide lifecycle helpers, and section metadata used by the web builder.

Notes And Site

Each deck can include notes.md. The site builder renders Markdown notes, inline math, display math, citations from refs.bib, and slide references.

Site-wide options live in site.toml:

brand = "Simplex"
tagline = "Manim presentations, rendered."

nav = [
  { label = "Decks", href = "/" },
  { label = "GitHub", href = "https://github.com/shlomi-perles/simplex" },
]

Links labeled GitHub are shown as the footer GitHub icon, next to the Built with Simplex mark.

Deployment-only settings are read from environment variables:

  • SIMPLEX_BASE_URL
  • SIMPLEX_GA_TAG
  • SIMPLEX_BRAND
  • SIMPLEX_PREVIEW

CLI

Command Purpose
simplex new <slug> Create decks/<slug>/ from the bundled template.
simplex new <section>/<slug> Create a deck inside a named section.
simplex init [dir] Create a lectures repo from the GitHub template.
simplex render <slug> Render one deck into site/decks/<slug>/.
simplex render <slug>::<Scene> Render one scene from a deck.
simplex build Render decks and build the static portal under site/.
simplex build --no-render Rebuild portal HTML from existing render output.
simplex serve [--watch] Serve site/ locally, optionally with live reload.
simplex test Smoke-render decks by rendering only the first animation.
simplex clean Remove generated site/ and media/ output.
simplex doctor Check required binaries on PATH.

Development

git clone https://github.com/shlomi-perles/simplex.git
cd simplex
uv sync
uv run ruff check .
uv run ruff format --check .
uv run basedpyright
uv run pytest -q

The release workflow uses GitHub Actions Trusted Publishing to upload simplex-web to PyPI. No PyPI API token is stored in the repository.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplex_web-0.2.2.tar.gz (672.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simplex_web-0.2.2-py3-none-any.whl (682.4 kB view details)

Uploaded Python 3

File details

Details for the file simplex_web-0.2.2.tar.gz.

File metadata

  • Download URL: simplex_web-0.2.2.tar.gz
  • Upload date:
  • Size: 672.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simplex_web-0.2.2.tar.gz
Algorithm Hash digest
SHA256 3dcec958ac39480d8de4a871569ae213861a9383c694621ee90051c341146245
MD5 af8e0ea0797922b38890c66c9b76c16c
BLAKE2b-256 80fda75d443737e34826fa14b76e55add7c9ee547c98bd6a675e5907461a3d31

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplex_web-0.2.2.tar.gz:

Publisher: publish.yml on shlomi-perles/simplex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simplex_web-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: simplex_web-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 682.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simplex_web-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ab2f18ebfc0f409bdd36ae2ae9cf821b17e2b438a1bacc065aecc6263b83a30b
MD5 20f52ca725e6cc3d863d8ab38886d815
BLAKE2b-256 63ffea4f3d2422450f57359ca0935567f98d41fdbf90c90d273111949ea79393

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplex_web-0.2.2-py3-none-any.whl:

Publisher: publish.yml on shlomi-perles/simplex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page