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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| jupyter_lecture_studio-0.2.0.tar.gz | 658.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.