ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Web reader for interactive textbooks: chapters, numbered formulas, worked exercises, a Python lab and graphs.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A smartbook is a course book written in Markdown with numbered formulas, exercises, exam questions, Python snippets and graphs, packed into a .ptsb file. Smart Builder writes them, and this reader shows them in the browser.
Read chapters. Formulas render with KaTeX and carry numbers like a printed book. Hovering a reference such as (2.1) shows the formula without leaving the page.
Study from the formula sheet. It collects every numbered formula from the chapters. Exercises and past exam questions come with hints and step-by-step solutions.
Run code and plot. The lab runs Python in the browser through Pyodide, with numpy and matplotlib, and MATLAB scripts through numbl, a MATLAB-compatible interpreter. Graphs are computed on the device. Neither sends code to a server.
Print. Chapters, the formula sheet, exercises and exams each have a print preview, with hints and solutions shown.
Import a book. Drop a .ptsb file on the home page. It stays in that browser and isn't uploaded anywhere.
The interface is in Italian, with light and dark themes. This repository ships only the example book ("Guida di esempio"). The public copy at politost.it/reader also lists the free books from politost-books.
You need Node.js 22.22.2 or newer on the 22 line, or 24.15 or newer. CI uses 24.
git clone https://github.com/SuperTost100/politost-smartbook.git
cd politost-smartbook
npm ci # also copies the Pyodide runtime into public/pyodide/
npm run dev # opens on http://localhost:5173
Choose "Guida di esempio" to open the example book.
The default build needs no backend, account or database. npm run build writes a static site to dist/, which you can host anywhere with an SPA fallback. Self-hosting has the details.
Everything the reader keeps lives in your browser, under the site's origin:
.ptsb files and the copies of catalog books you opened are in the IndexedDB database politost-smartbook.politost-theme, politost-last-read, pwa-install-snooze-until).smartbook-static-v4.There is no export. To back up an imported book, keep its .ptsb file and import it again when you need it. "Rimuovi da questo dispositivo" on an imported book's card deletes the book and its reading position. To clear everything, including catalog copies, delete the site's data in your browser settings.
Importing a book, running code in the lab and plotting graphs send nothing anywhere. The Pyodide runtime is served from the app's own origin. These are the actions that do talk to a server:
VITE_BOOKS_URL. The reader fetches catalog.json from that site. politost.it points it at books.politost.it, and a build without it makes no such request..ptsb from the same site once, checks its size and sha256, and keeps a copy in IndexedDB. Later visits open it from that copy, offline.VITE_PLATFORM_ENABLED=true). Sign-in, registration, terms consent, license keys, book access checks and the opening of a licensed chapter go to the API at VITE_API_URL. It is off by default and the public reader doesn't use it.The public reader has no analytics or telemetry.
All settings are optional. Set them in the environment or copy .env.example to .env.local:
| Variable | Default | What it does |
|---|---|---|
VITE_BASE_PATH | / | Serves the app from a subfolder, such as /reader |
VITE_BOOKS_URL | empty | Books site with a catalog.json. The home page lists its books |
VITE_PLATFORM_ENABLED | false | Turns on sign-in, licenses and cloud books |
VITE_API_URL | empty | Platform API address, required when the platform is on |
All four are read at build time. The platform API and its course books live in a separate private repository.
npm run lint
npm run test:content # content-core parser tests plus the reader's content tests
npm run test:unit
npm run build
npm run test:e2e # installs Playwright's Chromium on first run
CI runs all five on every pull request and on main. Auth tests run only with VITE_PLATFORM_ENABLED=true.
The app renders in the browser, so a crawler that doesn't run JavaScript would see an empty page. On politost.it the Worker in deploy/politost/worker.js fixes that. For the library, each chapter, the formulario, the exercises and the exams, it sends the app's index.html with the page already in it: title, description, canonical, JSON-LD and the text. politost-books renders that text at build time and publishes it under books.politost.it/pages/, so a merged book change shows up without a reader deploy. In the browser the app replaces it with its own view.
Path under /reader | What the Worker sends |
|---|---|
/ | The library, with every published book and its chapters |
/libro/<id> | A 301 to the first chapter |
/libro/<id>/capitolo/<chapter>, formulario, esercizi, esami | The page, ready to index. A chapter also answers Accept: text/markdown with its Markdown |
/libro/<id>/laboratorio, grafici, stampa/... | The app with noindex |
/libro/<id> for a book that isn't published, such as an upload | The app with noindex |
/sitemap.xml | Every indexable page, built from the catalog |
| Any other unknown path | The app with status 404 |
When books.politost.it doesn't answer, the Worker sends the plain app, which loads its books the usual way.
| Read this | To learn |
|---|---|
| Reader guide | How to use the reader, in Italian. Also served at /docs |
| Reader architecture | Routes, components and how a book loads |
| Design system | Tokens, type, icons and the logo |
| PTSB format | What a .ptsb file contains |
| Content format | The Markdown syntax books are written in |
| Self-hosting | Building and serving the static site |
| Repository sync | Which repository owns what since the monorepo split |
packages/content-core/, MIT) and ptsb-pack (Python CLI that packs books into .ptsb files)..ptsb files.The archived politost-builder is withdrawn. Don't copy code from it.
AGPL-3.0. The bundled content-core package has its own MIT license. Books you open with the reader are not covered by this license.