Skip to main content

Jupyter Lecture Studio

Animated Jupyter lecture slides, reusable teaching components, and offline HTML — with Arabic RTL support.

Create polished lecture covers, explanation cards, syntax-highlighted code, concept diagrams, reveal activities and comparison tables from Python or JSON. Keep one visual identity across programming, AI, databases and other subjects.

Install

Requires Python 3.10 or newer. Install in the same environment as your Jupyter kernel:

python -m pip install "jupyter-lecture-studio[notebook,highlight]"

For HTML generation and the command-line interface without notebook display:

python -m pip install jupyter-lecture-studio

The core renderer has no required dependencies. notebook adds IPython; highlight adds Pygments for languages beyond the built-in Python highlighter. The package does not install Jupyter itself.

Your first lecture

Run this in a Jupyter notebook:

from jupyter_lecture_studio import LectureDeck

deck = LectureDeck(
    course="Python Programming", series="PROGRAMMING LAB",
    lesson="01", direction="ltr", theme="gold",
)

deck.cover(
    "Names and values",
    "Connect familiar programming ideas to Python.\nPredict, run, explain.",
    tags=["Understand", "Experiment", "Explain"],
    hero_code="value = 10\nvalue = 'ten'",
    hero_result="A name can refer to a different object.",
)

deck.slide(
    "Rebinding a name",
    cards=[
        {"title": "Observe", "code": "value = 10\nvalue = 'ten'"},
        {"title": "Explain", "explanation": "Assignment binds a name to an object."},
    ],
    activity={
        "question": "What does value refer to after the second assignment?",
        "answer": "The string 'ten'. The name has been rebound.",
        "label": "Predict first", "reveal": "Show explanation",
    },
)

deck.export("lecture.html")

Use show=False on component methods when generating HTML from a Python script. Each component is collected for export. Re-run the notebook in order before exporting; repeated component calls append another copy. Code inside cards is displayed; executable student practice belongs in normal notebook code cells.

What you get

Feature Teaching use
Animated covers and cards Introduce a topic and build an explanation in readable steps
Arabic RTL and English LTR Mix Arabic explanations with correctly aligned code
Concept diagrams Supply your own nodes or choose 11 Python concept presets
Reveal activities Ask students to predict before opening the explanation
Three themes and custom colors Reuse a consistent course identity
Embedded Cairo and JetBrains Mono Preserve Arabic and code typography offline
Standalone HTML and print styles Share a lecture or print from a browser
Python, dataclasses and JSON Author content in the workflow you prefer
Reduced-motion support Respect system preferences or disable motion explicitly
Bundled documentation Search and read English/Arabic guides without an internet connection

Reuse the design

from jupyter_lecture_studio import Brand, Theme, LectureDeck

deck = LectureDeck(
    brand=Brand(course="Database Systems", series="DATABASE LAB", language="sql"),
    theme=Theme(preset="ocean", direction="ltr", motion=True),
)

deck.slide("From query to result", diagram={
    "title": "Query pipeline", "direction": "ltr",
    "nodes": [
        {"value": "SQL", "note": "Describe the result"},
        {"value": "Plan", "note": "Choose operations"},
        {"value": "Rows", "note": "Inspect the output", "selected": True},
    ],
}, show=False)

deck.export("database-lecture.html")

Set Theme(motion=False) to disable animation. Embedded fonts are the default; external_fonts=True opts into Google Fonts and requires network access. Notebook-wide styling is opt-in through notebook_style=True; default styles are scoped to the rendered components.

CLI and JSON workflow

jupyter-lecture-studio init my-lecture --course "Artificial Intelligence"
jupyter-lecture-studio export my-lecture/lecture.json my-lecture/lecture.html
jupyter-lecture-studio docs

init creates a JSON content file, a starter notebook and a short guide. It refuses to overwrite an existing folder. export replaces its destination HTML file. docs prints the path of the complete bundled documentation; open that file in your browser.

from jupyter_lecture_studio import documentation_path
print(documentation_path())

The documentation includes installation, a first lecture, every component, theme settings, classroom recipes, JSON/CLI usage, the API reference, migration and troubleshooting. HTML exports contain the deck components; unrelated notebook code cells are not exported. For PDF, use your browser's Print function.

التوثيق العربي — بداية سريعة

مكتبة لبناء محاضرات Jupyter بتصميم موحد، أغلفة وبطاقات متحركة، رسومات تعليمية، وأسئلة بإجابات قابلة للكشف. مناسبة لإعادة استخدام التصميم مع جميع المواد، مع دعم العربية واتجاه الكتابة من اليمين إلى اليسار.

from jupyter_lecture_studio import LectureDeck

deck = LectureDeck(course="الذكاء الاصطناعي", lesson="01")
deck.cover(
    "من البيانات إلى القرار",
    "نفهم الفكرة من مثال واضح.\nثم نجرّب ونفسّر النتيجة.",
    tags=["افهم", "توقّع", "جرّب"],
)
deck.slide("الفكرة الأساسية", cards=[
    {"title": "نفهم", "explanation": "نربط المفهوم بخبرة الطالب السابقة."},
    {"title": "نطبّق", "code": "print('Hello')"},
], activity={
    "question": "ما النتيجة المتوقعة؟",
    "answer": "تظهر كلمة Hello؛ اشرح لماذا قبل التنفيذ.",
})
deck.export("lecture.html")

الخط الأصلي Cairo للعربية وJetBrains Mono للكود مضمّن داخل الحزمة وملف HTML افتراضيًا. لا تظهر أوقات الأقسام للطلاب. استخدم jupyter-lecture-studio docs لفتح دليل عربي مفصل ومرجع الواجهة؛ التوثيق كامل ومرفق مع التثبيت.

غيّر course وseries وlesson لهوية المادة، وأعد استخدام المكونات نفسها. يمكنك تعديل المحتوى في lecture.json دون إعادة كتابة الدفتر. أكواد البطاقات للعرض، والتجارب التنفيذية توضع في خلايا Jupyter العادية.

Compatibility and limitations

Existing from lecture_studio import LectureDeck imports and the lecture-studio command remain available. The legacy LuxurySlideDeck adapter is available from jupyter_lecture_studio.compat.

Tested workflows target JupyterLab and modern browsers. Other notebook hosts may restrict HTML/CSS; do not assume identical animation or styling in every host. Reveal answers remain in the HTML source and are intended for learning activities. Plain text is escaped by default; RichText explicitly accepts trusted author HTML without sanitization.

License and project

Library code is MIT. Bundled fonts are SIL Open Font License 1.1; their original licenses and asset manifest are included. Bundled documentation assets retain their upstream notices. See the documentation's licensing page for details.

Maintained by aoos101. Project and release files: Jupyter Lecture Studio on PyPI.

Metadata

Release files for jupyter-lecture-studio 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jupyter-lecture-studio 0.2.0
File Size Uploaded Provenance
jupyter_lecture_studio-0.2.0.tar.gz 658.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jupyter-lecture-studio 0.2.0
File Interpreter ABI Platform
jupyter_lecture_studio-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / jupyter_lecture_studio-0.2.0.tar.gz

Download URL jupyter_lecture_studio-0.2.0.tar.gz
Size 658.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a780b2b0df55cc300f049a696cdc37a0a86a909bde08ba31b63ac659a6559e40
BLAKE2b-256 checksum
How to use checksums
fc78571e5439bb047d982c80e1b0bd61919908d95584c9781bb887d602c59b8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release files / jupyter_lecture_studio-0.2.0-py3-none-any.whl

Download URL jupyter_lecture_studio-0.2.0-py3-none-any.whl
Size 531.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
081f8dadbcb3062fea4720b27a11090a97fde5c5f910d04a3483f5e735e8f94c
BLAKE2b-256 checksum
How to use checksums
899e46595dc7aa1fecd697d7e29c11762ab1532d46f1eeed202d1dbab9178f8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Security for jupyter-lecture-studio 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page