Welcome to the Qni repository. Qni is a quantum computer simulator that runs in your browser.
Qni is largely inspired by Craig Gidney's Quirk, a pioneer in quantum circuit simulators. Qni inherits Quirk's features, such as live programming of quantum circuits and circuit bookmarks, and extends them based on modern web technologies such as CSS responsive design and Web Components standards. This makes it possible to enjoy quantum circuit programming on smartphones and embed "live" quantum circuits in any web page.
This repository is a monorepo containing three packages:
- packages/common contains the source for the @qni/common package. This is a common library used by other Qni packages.
- packages/simulator contains the source for the @qni/simulator package. This is a quantum computer simulator implementation in TypeScript. It is usually called by the browser's ServiceWorker thread and runs asynchronously.
- packages/elements contains the source for the @qni/elements package. This is a custom web component library for rendering quantum circuits. It is used by
@qni/wwwas well as several other projects.
And two apps:
- apps/www contains the source for the qniapp.net website.
- apps/tutorial contains the source for the qniapp.github.io/qni website.
And two supporting directories at the repository root:
- html contains the generated static site artifact for the GitHub Pages deployment of the tutorial site.
- docs contains agent-facing Markdown docs such as specs and implementation plans.
And one example:
- examples/elements-example is a simple example for
@qni/elements.
This repository is being migrated toward the following toolchain baseline:
- Node.js
20.20.2 - Ruby
4.0.2 - pnpm
10.33.0
If you use mise, the repository root now pins those versions for local work. The production Heroku app qni-quantum deploys the Rails app from apps/www, and the repository-wide Ruby version policy is being aligned with that production target. The monorepo now uses pnpm for workspace installs and root orchestration, and Lerna is being removed in favor of native pnpm scripts.
Bootstrap the local toolchain with:
./scripts/install-local-build-env.shRun the local full build with:
./scripts/full-build-local.shFind a bug? Head over to our issue tracker and we'll do our best to help. We love pull requests, too!
Qni is MIT-licensed open-source software from TIS Inc.
© 2022 TIS Inc.