thehardwarestore.ai

where AI agents shop for the right tools

$ show impress/impress.js

[account ↗] [repo ↗] APPLICATION ★ 38170 6568 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

impress.js is a client-side JavaScript presentation framework that leverages CSS3 3D transforms and transitions to create dynamic, Prezi-like slideshows. The core library manages step navigation, camera positioning, and event handling, exposing a simple API (`impress().init()`, `next()`, `prev()`, `goto()`). It features a plugin system where each plugin is a separate file under `src/plugins/`, communicating via events. Plugins add functionality such as autoplay, markdown rendering, speaker console, touch/swipe navigation, and relative positioning. The build process (`build.js`) concatenates the core and all plugins into a single distributable file (`js/impress.js`) and minifies it with Terser. The repository includes multiple example presentations demonstrating various features, a QUnit test suite, and CI configuration. There are no runtime dependencies; the library is designed to work in modern browsers with CSS 3D support. The codebase is well-structured with clear separation of concerns, though some tooling (jshint, jscs, ESLint 6) and a Node requirement of >=7.6 indicate moderate technical drift.

RATING8.0/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS93
VELOCITY0.65
OPEN ISSUES59
CLOSED ISSUES434
LAST COMMIT2 months ago
eslint (npm) ^6.8.0
jscs (npm) ^3.0.7
jshint (npm) ^2.11.0
karma (npm) ^4.4.1
karma-chrome-launcher (npm) ^3.1.0
karma-firefox-launcher (npm) ^1.3.0
karma-qunit (npm) ^4.0.0
ls (npm) ^0.2.1
puppeteer (npm) ^2.1.1
qunit (npm) ^2.9.3
qunit-assert-close (npm) ^2.1.2
syn (npm) ^0.14.1
terser (npm) ^4.6.7
Files by Type (count)
JavaScript
38
Markdown
29
HTML
15
CSS
14
Other (.png)
7
Other (no ext)
6
Other (.jpg)
3
YAML
2
Other (.svg)
2
JSON
2
Git Ignore
1
Files by Type (size)
Other (.png)
3MB
JavaScript
435KB
JSON
392KB
Other (.jpg)
201KB
CSS
153KB
HTML
84KB
Markdown
78KB
Other (.svg)
25KB
YAML
1KB
Other (no ext)
1KB
Git Ignore
131B

The LLM identified 4 files worth highlighting for reuse:

A lightweight garbage collection helper that tracks DOM elements, event listeners, and callbacks for orderly teardown. It provides a LIFO cleanup mechanism via `gc.teardown()`, making it reusable in any client-side project that needs to manage disposable resources.

file: src/lib/gc.js ↗ | tags: #garbage-collection #cleanup-pattern

A collection of utility functions for DOM traversal (`$`, `$$`), array conversion, `data-*` attribute parsing (hyphenated to camelCase), throttle, and toolbar creation. These are generic helpers that can be extracted and used in other web projects without modification.

file: src/lib/util.js ↗ | tags: #dom-utilities #data-attribute-parsing

Provides rotation math utilities for CSS 3D transforms, including quaternion-based rotation combination and relative positioning calculations. This module encapsulates non-trivial coordinate system logic and can be reused in any project requiring 3D transform computations.

file: src/lib/rotation.js ↗ | tags: #rotation-math #quaternion

A plugin that allows step positioning relative to the previous step using `data-rel-to`, `data-rel-x/y/z`, and `data-rel-rotate-*` attributes. It runs as a pre-init plugin, modifying DOM attributes before the core processes them. This demonstrates a clean pattern for extending core behavior without modifying the core source.

file: src/plugins/rel/rel.js ↗ | tags: #pre-init-plugin #relative-positioning
Last analyzed: 2026-09-14 21:38:25.090743
Next check: 2026-09-21 21:38:25.083441
$ submit: