A textbook usually arrives with no account of where it came from. This one has one, because how it was made shapes what you should trust it for. Below: who wrote what, the rules it was built under, what it can still get wrong, and a dated record of everything that has changed since the first lesson shipped.
These pages are not first teaching. They assume you already sat through the lesson once and half-remember it. The job here is retrieval practice: pulling the idea out of your own head before the page will show you anything, wrapped around a second explanation framed differently from the one you got in class.
That is why almost nothing reveals itself until you commit to an answer. It isn't there to be difficult. Reading an explanation and recognising it as familiar feels like learning and mostly isn't; retrieving it cold is what actually moves it into memory. A page that let you skim to the answer would be more pleasant and less useful.
It is also not a quiz bank, not a grade, and not watching you. Nothing you type here is sent anywhere. Your progress lives in your own browser and stays there.
This book was built by one teacher working with AI coding agents (principally Anthropic's Claude models, with Google's Gemini models doing some of the generation work). The specific tools have already changed several times and will change again, so naming them is pointless. The division of labour is the part that matters, and it hasn't moved.
The honest summary: the AI made this possible at all: a single teacher does not otherwise hand-build a 27-lesson interactive curriculum with a working widget framework across two semesters. It also introduced a good share of the bugs listed further down this page. Both things are true, and the version history below is deliberately unflattering about it.
Every lesson is held to the same written constraints. They exist because each one was violated at least once and the result was worse than the rule.
Everything shared between lessons lives in one place, so a fix lands everywhere at once instead of in one page and not the other twelve.
The widget framework. Interactive elements are described as data, not hand-coded per lesson. A page declares that it wants a predict-then-reveal, a sort-and-classify, a fill-in-the-blank recall, a step builder, a faded worked example, or a free-text self-explanation, and the shared engine renders it, marks it, saves it, and prints it. That is why a widget behaves identically in lesson 1-1a and lesson 2-7c, and why a bug in one is a bug in all of them.
Dual-organization dashboard & concept mapping. The home dashboard organizes lessons either by classroom Unit Storylines (Units 1–5) or by official NGSS Performance Expectations (all 15 chemistry PEs) with sticky persistence in browser storage. The interactive concept map visualizes mastery flows and prerequisite pathways across all 27 lessons.
The Reference Center. The drawer that slides out from the side (periodic table for the first 36 elements, thermochemical tables, bond energies, specific heats, formulas, mole-mass converter, calculator) is one implementation shared by every lesson and the dashboard. Until September 2026 it only existed inside lessons, and the home page couldn't open it.
Progress and review. Completed checkpoints are stored per lesson and scheduled for review on a Leitner spaced-repetition cycle: get something right and it comes back later; get it wrong and it comes back sooner. Lessons also remember the furthest section you reached and offer to resume there. All of it is in your browser's local storage: clear your browser data and it is gone, and there is no copy anywhere else.
Print. Every lesson has a print path that unrolls the interactive elements into answerable paper, with a glossary appendix. One accepted gap: a few bespoke interactives print their on-screen controls as-is rather than converting into paper questions.
The diagram generator. A separate teacher-facing tool at /chem/diagram-generator/ that builds Bohr models, Lewis structures, molecular models, and reaction diagrams as SVG for slides and handouts. It shares the book's conventions and its refusal to draw chemistry it can't draw honestly.
Errors here are found by people reading carefully, and most of the ones in the history below were found late. Assume the same is true of the ones still in it.
If a number looks wrong, if a widget marks a correct answer wrong, if a diagram contradicts what you were told in class, say so. Your teacher's explanation wins over this page, and a report gets it fixed for everyone in the class after you. The Submit Feedback button in the top bar goes straight to the author.
Two known limitations worth stating outright. The chemistry scope is deliberately focused: this covers the assessed targets of the five course storyline units and focuses directly on the 15 NGSS Performance Expectations, skipping miscellaneous material that a broader survey textbook would include. And the pages assume the class sequence: read cold, without the lesson that preceded them, some of the framing will not land.
Newest first. Dates are when the change went live.
Rebuilt the core engine of the Chemistry Performance Expectation Practice Suite to transition from a single-item diagnostic ceiling to a 3-tier adaptive placement ladder. Students start at Level 2 (Intermediate); first-try passes elevate to Level 3 (Mastery Challenge) to validate full mastery, while misses step down to Level 1 (Foundational) followed by targeted Level 2 remediation. Added progressive two-tier item disclosure, locking Part 2 reasoning until Part 1 is chosen to prevent answer leakage, and abstracted reasoning options across all five semester 1 modules. Upgraded typography to the chemistry textbook standard, integrating Spectral serif for hints, solutions, and study tips while restricting monospace strictly to formulas and math. Added browser exit protection to prevent loss of unprinted completion receipts, and introduced an automated local storage receipt archive with a hub browser.
Polished the Chemistry Performance Expectation Practice Suite for introductory high school chemistry students across all semester 1 modules (HS-PS1-1, HS-PS1-2, HS-PS1-3, HS-PS1-7, HS-PS2-6). Integrated the textbook's shared chemistry glossary to provide interactive click-to-define popover cards on key scientific terms throughout question stems and explanations. Converted all chemical formulas, ion charges, units, and powers of ten to clean Unicode subscripts and superscripts across all 31 assessed skills, replacing raw ASCII text and code formatting. Regularized prompts, distractors, and worked solutions to accessible, student-friendly language. Formatted the full verification URL directly on the printed cryptographic receipt while maintaining single-page A4 print formatting.
The Performance Expectation Adaptive Practice Suite now supports full theme parity with the rest of the chemistry textbook. An accessible theme toggle with sun and moon icons is now present in navigation headers across all practice views, including the hub, student workstation, diagnostic interstitial, certificate completion screen, and teacher verification tool. Color tokens were calibrated with high-contrast text and border values across both modes, and theme selections synchronize continuously across the textbook, main app, and practice sessions via unified storage persistence.
Expanded the Chemistry Performance Expectation Practice Suite to cover all five first-semester Performance Expectations: HS-PS1-1 (Periodic Trends & Atomic Structure), HS-PS1-2 (Chemical Reactions, Bonding & Conservation of Matter), HS-PS1-3 (Electrical Forces & IMFs), HS-PS1-7 (The Mole, Stoichiometry & Mass Conservation), and HS-PS2-6 (Structure-Property Relationships & Scientific Argumentation). Students now have access to 31 distinct skill diagnostics with multi-modal item formats (two-tier claim-and-reasoning, property rankings, categorization tables, numeric calculations, and multi-select criteria checks), two-tier adaptive tutoring hints with full worked solutions, and tamper-evident SHA-256 digital certificates with QR code verification. Added direct launch modules across the course dashboard and updated the Teacher Verification Tool for all semester 1 standards.
Launched the Next Generation Science Standards (NGSS) Adaptive Practice Suite for Chemistry, starting with Unit 1 Performance Expectations HS-PS1-1 (Atomic Structure & Periodic Trends) and HS-PS1-3 (Bulk Properties & Intermolecular Forces). The workstation features sequential diagnostic checks, automated skill gap identification, targeted adaptive remediation with two-tier hint scaffolding, and tamper-resistant cryptographic receipts with offline QR verification. The printed summary sheet is mathematically formatted to fit cleanly on a single A4 page, including item attempt audit histories and personalized study recommendations linking directly back to relevant textbook chapters. Questions feature diverse science practice modalities (two-tier claim/justification, ranking trends, categorization tables, multi-select, and quantitative calculations) with seeded option shuffling, candidate name authentication, and in-place certificate editing.
The course dashboard was refactored to dynamically load and render the curriculum manifest (lessons.json) at runtime, eliminating duplicated code and ensuring all 27 lessons, glossary terms, storyline resources, and Performance Expectations stay in exact step automatically. The concept map, Spaced Repetition (SRS) cram mode, and deep-search index initialize seamlessly from the live manifest, with progress tracking automatically mapped across both unit storyline and NGSS expectation views.
Fixed SVG parser breakout errors in Lesson 3-1c (calorimetry variables) and Lesson 5-1a (solar core fusion neutrino labels), restoring proper diagram rendering in both lessons. Added automated verification ensuring all diagrams across the textbook remain intact and compliant with curriculum rendering invariants.
A curriculum-wide usability, pedagogical, and visual overhaul across Units 2, 3, 4, and 5. Core architectural standards were unified across the textbook: chemical formulas render in robust block layouts eliminating equation tearing; illegal HTML tags were purged from SVG text elements to protect DOM tree integrity; button entity casing was conformed to Unicode; Canvas 2D contexts resolve dynamic CSS tokens cleanly with high-DPI Retina backing buffers; and structured inquiry challenge presets were integrated across all simulation sandboxes. In Unit 2, Lesson 2-6a gained a dual-path branching architecture (“Choose Your Own Adventure”: Lipids vs. Alkanes) sharing a unified 5-step argument builder. In Unit 3 (Thermochemistry), reaction profiles were rebuilt with accurate energy geometry (3-14a); thermal energy and temperature were cleanly separated using the particulate Sparkler Paradox (3-1a); heating curves gained multi-stage equations and hydrogen bonding energetics (3-1b); coffee-cup calorimetry was refactored with discrete stacked LOL energy block diagrams (4 + 1 = 5 → 2 + 3 = 5) and live heat transfer vectors (3-1c); and thermal equilibrium was grounded in a master 3-stage collision sequence (3-4a). In Unit 4 (Kinetics & Equilibrium), Maxwell-Boltzmann curves were formally tagged as enrichment to focus core assessment on collision frequency (4-1a); catalysis was re-centered on industrial surface mechanisms (4-1b); the Le Chatelier reaction simulator numerical integrator was stabilized to eliminate sawtooth spikes (4-6a); and arterial blood buffer diagrams were repaired and dynamically linked to live Le Chatelier shift ratios (4-6b). In Unit 5 (Astrophysics & Nuclear Physics), solar fusion was upgraded with authentic cross-section cutaways and a hydrostatic cosmic thermostat (5-1a); cosmic evidence was grounded in a Three Visual Pillars synopsis and unclipped redshift spectra (5-2a); stellar nucleosynthesis received an exact binding energy curve and supergiant onion shell timescale bar (5-3a); electromagnetic radiation was rebuilt around container-width Master Figure 5-4a.1 with dual coordinate axes, a 10 eV ionization divide, and an interactive power vs. frequency simulator (5-4a); and nuclear decay was overhauled with particulate shielding barrier diagrams, exact exponential half-life curves, and a repaired 100-atom stochastic lattice engine (5-8a).
A major visual, interactive, and mathematical remediation pass across all Unit 2 chemistry lessons (plus 1-2e carryovers). On the dashboard, a missing closing tag was fixed to restore proper grid separation between Unit 1 and Unit 2, and the storyline terminology was aligned from "tawa" to "grill" across the entire textbook. In Lesson 1-2e, electron transfer badges received centered glyph typography, and the methane combustion blueprint separated reactant oxygen pairs while adding the missing product water molecule to conserve mass. In Lesson 2-2a, the synopsis chemical change diagram was aligned to heteronuclear bonded atoms to conserve atomic identities, and the melting simulation was refactored so particles pool cleanly across the bottom of the beaker rather than colliding mid-air. In Lesson 2-6a, the fat explorer was rebuilt into a full-width, side-by-side simulation comparing Saturated Fat (Stearic acid, MP 69°C) vs. Unsaturated Fat (Oleic acid, MP 13°C) under a unified 0 to 100°C slider with quick preset buttons, with the five-part Argument Builder relocated directly below. In Lesson 2-7a, the hero zoom was rescaled, the mole scale bridge was rebuilt with a digital bench balance (12.00 g, 1 mole), particle representations were converted to space-filling CPK spheres, and the glucose preset was updated to an authentic glucopyranose 6-membered ring. In Lesson 2-7b, mole maps were scaled to container width, water particles were conformed to bent geometry, conversion factor cards were rebalanced into a clean 2-column grid, and Section 04b (Empirical Formulas) was delineated as a Non-Assessable Extension. In Lesson 2-7c, the synopsis yield map was rebuilt, chemical equation typography was regularized to preserve natural baseline subscripts, BCA table column alignment was locked, the S'mores factory gained a visual particle equation with a dynamic results tray, and the reaction chamber was partitioned into 8 dedicated coordinate bays, mathematically guaranteeing zero particle overlap across all reactant quantities.
All molecular diagrams in Lesson 1-2b (Molecular Polarity) were completely reconstructed as authentic 2D Lewis structures adhering to the Diagram Generator standards: atom symbols render as bold monospace letters in CPK coloring (Oxygen in --accent vermilion, Carbon and Hydrogen in --ink, Chlorine in --good muted green, and Nitrogen in --cool slate blue), accompanied by paired valence electron dots, clean center-to-center bond lines, and clear dipole summation vectors across the Hero 3-step sequence, Synopsis figure, Section 02 worked example, and Section 03 interactive. The Section 03 “Cancel or reinforce?” interactive now auto-loads the O2 molecule on startup, eliminating the blank initial window. In tokens.css, SVG typography tokens were regularized with a 4-tier scale (--dia-atom-size: 22px, --dia-header-size: 14px, --dia-label-size: 12px, --dia-caption-size: 10px) to eliminate microscopic text across diagrams site-wide. Zero em-dashes and — entities were enforced throughout.
A global SVG typography and contrast engine was integrated into the core stylesheet, guaranteeing that all untagged text, presentation attributes with var(--ink) (resolving WebKit/Safari attribute parsing limitations), and hardcoded dark/black fills or strokes render in crisp, high-contrast tokenized --ink in dark mode. The arbitrary 120px max-height clamp on synopsis figures was removed across all 27 lessons, allowing them to expand to the full width of their synopsis card column. The core lightbox engine was expanded to bind all synopsis figures with cursor: zoom-in, hover elevation, automatic caption fallback to <h4> headings, and responsive scaling up to 860px width in the modal overlay. Lesson 1-2a (Bonding & Electronegativity) had its synopsis diagram completely redesigned into a balanced 3-panel 360x170 layout covering Covalent sharing (ΔEN < 1.7), Ionic transfer (ΔEN ≥ 1.7), and Metallic delocalized electron sea, complete with diagram framing and caption. Finally, all legacy em-dashes and — entities were audited and eradicated across the codebase.
Lesson badge codes across the dashboard, concept map, and lesson manifests were standardized to match their NGSS Performance Expectations directly (e.g. 1-7a/b/c for mole concepts under HS-PS1-7, 1-4a for bond energy under HS-PS1-4, 1-5a/b for reaction kinetics under HS-PS1-5, 1-6a/b for equilibrium under HS-PS1-6, and 1-8a for nuclear reactions under HS-PS1-8), with transparent migration preserving all existing saved student progress. Lesson 1-2a (Bonding & Electronegativity) received an interactive overhaul: Section 01 was redesigned from the ground up into an uncluttered 3-stage sequence animation with high-contrast badge headers, non-overlapping force vectors, and physically accurate overlapping valence shells in Stage 3 where the shared electron pair sits squarely inside the covalent lens; Section 02's electronegativity difference slider marks were cleaned up to eliminate text collisions; and the Section 03 Signature Interactive Bond Explorer had its animation lifecycle and lightbox interception issues resolved. The in-lesson AI tutor was rebranded to “Chemistry Study Partner” / “Tutor” with clear pre-click sign-in warning indicators, and its backend connection was hardened with explicit model payloads. Dark mode diagram text contrast was also audited and fixed in Lesson 1-1a.
A comprehensive usability and design audit landed across all 27 lessons in the textbook. All static illustrations, charts, and particle diagrams are now held inside structured figure frames with captions and universal click-to-zoom lightboxing. Chemical equations, thermodynamics expressions, and nuclear transmutations now render with standardized large typography (.chem-display.formula-lg) and high-contrast color tokens. Visual noise was cleaned up by replacing emoji in step levers and navigation arrows with clean typographic arrows. Four major interactive physics simulators were deployed for Unit 5: a 4-stage Solar Proton-Proton Chain Fusion simulator, a 4-phase Stellar Core Collapse & Supernova engine, a 100-atom stochastic Radioactive Decay Transmutation workbench with real-time half-life curves, and a Nuclear Fission & Reactor Criticality simulator with variable control rods and SCRAM shutdown. All continuous simulation loops now run through an automatic visibility observer, halting when off-screen to preserve battery and CPU life. Every remaining lesson had its Section 05 practice upgraded to canonical fill-in-the-blank retrieval cards, ensuring complete integration with the dashboard Spaced Repetition (SRS) review engine. Finally, authentic Dr. David Knuffke K-Chem video lessons and unit playlists were linked into resource panels across all five units.
The textbook expanded from its 13-lesson baseline to the complete 27-lesson curriculum across all 15 NGSS High School Chemistry Performance Expectations and 5 school storylines (Chemical Hygiene, Prata Problems, Energy & Thermochemistry, Human Equilibrium, and Origin of the Elements & Nuclear Chemistry). The home dashboard gained a dual-organization mode with sticky preference persistence: defaulting to Unit Storylines with a one-click reorganization by Performance Expectation. The interactive Concept Map was expanded to an integrated 27-lesson knowledge graph across 5 unit lanes with cross-unit prerequisite pathways and live progress color-coding. Horizontal unit tabs gained a space-saving Resources dropdown menu. The Reference Center drawer and glossary were expanded with thermochemistry tables (specific heats, bond energies, latent heats) and nuclear notation. Units 3, 4, and 5 shipped with 14 new interactive lessons featuring bespoke simulations, 2D particle dynamics sandboxes, retrieval cards, and constructed-response exam tasks with four-mark rubrics: covering heating curves, calorimetry, thermal equilibrium, bond energies, collision kinetics, enzyme dynamics, Le Chatelier shifts, blood buffer homeostasis, solar fusion, cosmic expansion, stellar nucleosynthesis, nuclear decay modes, and electromagnetic radiation absorption.
The textbook and the main Science Practice Partner app now share theme and accessibility preferences: switching to dark mode or turning on the high-legibility accessibility font carries seamlessly between the textbook and practice sessions. Every lesson page now ends with a direct Practice & Explore bridge connecting you to pre-configured multiple-choice quizzes, flashcard decks, and interactive simulations (Build an Atom, Periodic Table, Covalent & Ionic Bonding Builders, Phase Changes, and Reaction Kinetics) matching the topics covered in each chapter.
Progress had been reporting zero for every lesson since spaced repetition shipped. The checkpoints you completed were being saved correctly, but the dashboard was reading them the wrong way, so every bar sat at 0% and every lesson said “Not Started.” Cards now show a real count, like 6/10 checkpoints. Lesson 1-2c was missing from one of the three places the lesson list is written down, which made its card, its concept-map node, its search entry, and its review queue silently dead. Clear Progress was calling a function that wiped the entire site's stored data (sign-in session, badges, theme) rather than just chemistry progress; it now clears only what it promises. Added resume: a lesson remembers the furthest section you reached, even if you were only reading, and offers a dismissible bar when you return. The Reference Center drawer moved into its own file so the dashboard can open it too. Lesson 1-2c (Chemical Nomenclature) was rebuilt on the shared widget framework: from one checkpoint to ten, with feedback written for all sixteen options, plus a charge-balance ledger, a work-backwards ion builder, and a name-to-formula walkthrough.
A dedicated high-contrast flask favicon and touch icon, so the textbook is distinguishable from the main site in a row of browser tabs.
The book moved off GitHub Pages and onto the main site, at /chem/. Added high-resolution intermolecular-force diagrams and transparent-background Lewis structures sized to a single physical scale, so structures pasted into a slide deck are consistent with each other. Added a repeatable diagram workflow and a command-line renderer for producing figures in bulk.
New lesson 1-2c (Chemical Nomenclature) filled the prerequisite gap ahead of Lewis structures. Lesson 1-1b gained a five-step reactivity causal chain and an acid-reactivity case study contrasting magnesium with copper. Lesson 2-7b gained empirical and molecular formula determination with an interactive stepper. Lesson 2-7c gained a s'mores limiting-reactant simulator built to demonstrate that the smallest quantity is not automatically the limiting one. Lesson 2-6a (formerly C-SPA) gained a GHS hazard argument constructor. The follow-up QA pass then fixed what shipped with them: undefined styles leaving text invisible and cards unstyled, literal markup rendering as visible text, an empirical-formula calculator returning a wrong answer for vitamin C, a hazard builder whose correct option was always listed first and literally named “correct” in the page source, three widgets that revealed their answers with no student interaction, and green being used as a category colour in violation of the correct-only rule.
Retitled to SAS General Chemistry and connected to the school's storyline units. Unit 1 and Unit 2 resource panels were rebuilt with the 2026–27 curriculum materials (block maps, consensus notes, lesson plans, review sheets, skills packets, and a blank periodic table), and every video link was cleaned up. Added links to the Science Practice Partner interactives (Build an Atom, Periodic Table, Ionic and Covalent Bonding). Fixed top-bar buttons clipping their own text, fixed dashboard tabs cutting off labels at narrow widths, added automatic white backing behind transparent images in dark mode, and rebuilt the diagram generator's layout for phones. Added a feedback button.
Shipped spaced repetition with a dashboard review panel, cumulative mixed drills, and “why this matters” curriculum callouts. Added a global Quick Check toggle that collapses a lesson down to its retrieval elements, and a collapsible one-screen synopsis on every lesson. Added the sort-and-classify widget. Built biological monomer maps, polymer brackets, container vessels, and electrolyte dissociation with hydration shells. Fixed 666 diagram circles that were invisible across ten lessons: SVG radius attributes silently reject the design-token syntax they were written with, with no error of any kind. Unified the dashboard glossary with the lesson tooltips so the same term stopped having two definitions. Rebuilt the diagram generator: honest ion-pair rendering for salts instead of a fabricated covalent structure, an electron-count check that warns when an auto-generated structure doesn't conserve electrons, a refusal to guess at same-element polyatomics, standalone SVG and PNG export, and a reaction parser that validates every token rather than reporting a typo as balanced.
Lesson progress became persistent: widget and checkpoint state now restore when you reopen a page, and the dashboard gained a Clear Progress control. Added the interactive concept map on the dashboard, with nodes and connections that colour in as you complete lessons. Built the shared molecule and particle-scene renderers, so phase diagrams and reaction chambers are generated from data (with an automatic particle-conservation check) rather than drawn by hand per lesson.
Static diagrams across the book became click-through sequences: shell filling from potassium to gallium, bond polarity resolving into molecular polarity, before/during/after combustion showing atoms conserved mid-reaction, a three-level zoom on fat lamination, and a scrubber that drags an electron cloud from evenly shared to fully transferred as the electronegativity difference rises. Built the slide-out Reference Center. Replaced six different ad-hoc sizing hacks with one figure system of four named widths. Retrofitted every diagram in the book onto a shared token layer, which turned up three independent cases of hand-picked colours breaking the palette rules, including chlorine drawn green.
PDF and print export built and verified for every lesson, including a glossary appendix. Lesson 1-2b (Molecular Polarity) shipped, completing the manifest. A repo-wide consistency pass fixed a stacking bug in sequenced diagrams, formulas breaking across lines mid-subscript, a character counter on free-text answers that made writing feel like a word-count exercise, diagrams that couldn't be zoomed, and a balance widget tilting the wrong way.
The earliest published lessons, the glossary tooltip system, and the written voice contract that governs every student-facing sentence in the book: second person, name the misconception before the student makes it, concrete before abstract, and never mark an answer wrong without explaining why it was tempting.
The full engineering changelog, with commit-level detail, lives in the project repository alongside the design contracts, the voice contract, and the interaction specification.
Written and maintained by David Knuffke. The chemistry follows the Singapore American School General Chemistry review sheets and particle-diagram conventions, which are the work of the science department, not of this site.
The pedagogical structure (predict then reveal, retrieval woven through rather than bolted on the end, self-explanation before the model answer) is modelled on the approach at Biology by Bradford.
Set in Hanken Grotesk, Spectral, and IBM Plex Mono, all open source.
Licensed CC BY-NC-SA 4.0. Teachers are welcome to take this apart and rebuild it for their own course. Credit the source, keep it non-commercial, and share what you make on the same terms.