NodeQL is a local-first desktop application for learning, designing, and running SQLite with visual blocks. Projects, settings, plugins, and databases remain on the user's device.
Release status: public preview. Linux x64, macOS, and Windows x64 are the supported release targets. Published binaries are currently unsigned; see Releasing before describing a build as generally available.
A browser preview can also be built from source. See Web preview for build instructions and session-storage limitations.
Latest release: NodeQL v0.4.3 adds visual SQLite functions, column aliases, fullscreen and exportable result tables, a refined workspace, and fullscreen settings.
Teachers can create and share guided SQLite exercises with the NodeQL Workshop Admin. The release page provides downloads and teaching materials.
Dark Mode |
White Mode |
Table Browser |
Workshop |
Additional screenshots and contribution guidance are available in docs/screenshots.
- Visual SQLite blocks with snapping, editing, compilation, and execution.
- SQLite function catalog, including visual Unix timestamp to date/time
conversion with
datetime(..., 'unixepoch'). - Per-column SELECT aliases, including multiple aliases in a single query and safer handling of same-named columns in joins.
- Fullscreen query results with CSV, JSON, and TSV export.
- A resizable, animated three-area workbench with live database preview.
- Fullscreen settings organized into Accessibility, Motion, Display, and Personalization.
- Interactive NodeQL learning workshop with twelve lessons, guided exercises, knowledge checks, and saved browser progress.
- Isolated workshop mode with sixteen practical workspace missions: a large toolbar button transforms the app into a dedicated learning area where learners drag and connect real nodes, see generated SQLite live, receive structural feedback, resume saved paths, and learn through Simple or Advanced Mode without changing the active project workspace.
- Local SQLite database access without a separate system CLI.
- Graphical table creation in the database browser's Simple Mode and direct
CREATE TABLEediting in Advanced Mode. - Versioned JSON project files, recent projects, per-project autosave, and guided upgrades of supported legacy project files with automatic backups.
- Declarative Plugin SDK v2 with visual blocks, external data-source adapters, SHA-256-verified community repositories, validation, and compatibility checks.
- English fallback with installable, validated community language packages.
- Offline use after installation; no account, analytics, or cloud dependency.
- GitHub-based update checks, community translation contributions, and AI-generated language packs created during desktop releases.
NodeQL does not include analytics, advertising, account tracking, or automatic crash reporting. The optional network behavior is documented in PRIVACY.md. Vulnerabilities should be reported according to SECURITY.md, not through public issues.
Plugin API v2 is declarative. It does not execute third-party Dart code, native libraries, scripts, or executables. Translation packages are restricted to approved HTTPS hosts and verified by schema, size, metadata, placeholders, and SHA-256.
NodeQL can install community plugin catalogs from static HTTPS URLs. The official example repository can be added in Settings > Manage Plugins > Repositories:
https://kartoffelspalt.github.io/nodeql-example-plugins/repository.catalog.json
The repository demonstrates the public catalog format and SDK example plugins.
Requirements:
- Flutter
3.44.1 - Dart compatible with SDK
^3.9.0 - Native Flutter desktop build dependencies for the target platform
flutter pub get
flutter gen-l10n
dart format lib test tool
flutter analyze
flutter test
dart run tool/validate_translations.dart
flutter run -d macosUse windows or linux instead of macos on the corresponding platform.
On Linux, file dialogs require zenity, kdialog, or qarma on PATH.
The Debian package installs one of these as a dependency; install one
separately when using the tarball.
From the repository root, run the following once per shell session:
source tool/flutter_with_build_number.shAfterwards, use flutter run -d macos as usual. The wrapper increases only
the +BUILD part of pubspec.yaml before every flutter run invocation and
then forwards all arguments to Flutter. It does not affect flutter test,
flutter build, or other Flutter commands. The changed pubspec.yaml remains
an intentional local modification; commit or revert it as appropriate.
lib/core: application bootstrap, themes, and update checkslib/localization: runtime catalogs, cache, validation, and locale statelib/domain: project and block modelslib/data: JSON persistence and defaultslib/engine: runtime, block, workspace, stage, and extension contractslib/features: workbench presentation and feature statedocs/plugins: external plugin SDK and schema documentationdocs/localization: translation contribution and package documentationtest: unit and widget tests
- Contributing
- Interactive learning workshop
- Plugin SDK
- Translation guide
- AI agent guide
- Release process
- Changelog
- Trademark policy
NodeQL source code is available under the MIT License. Runtime translation contributions are provided under CC BY 4.0. The NodeQL name and logo are not licensed under the MIT License; see TRADEMARKS.md.
NodeQL is developed as an independent open-source project. If NodeQL saves you time, helps you learn SQL, or is used in your workflow, consider supporting its development:
- GitHub Sponsors: Sponsor this project
- Star the Repository: Help others discover NodeQL by giving it a ⭐ on GitHub!
