Skip to content

Tech Stack

daarunia edited this page Jul 11, 2026 · 1 revision

Tech Stack

An overview of the technologies used in NexTask and the role each one plays. Versions reflect package.json at the time of writing.

Frontend (renderer)

Technology Role
Vue 3 (^3.5) Core UI framework, using the <script setup> Composition API.
Pinia (^3) State management. Each domain (task, stage, settings) has its own store, which also acts as the client-side cache and API gateway.
Vue Router (^5) Client-side routing, using hash history (required for file:// loading in packaged builds).
PrimeVue (^4.5) + PrimeIcons UI component library (dialogs, buttons, inputs, selects, spinner). Uses the Aura theme preset with a .app-dark dark-mode selector. Components are auto-imported via unplugin-vue-components + the PrimeVue resolver.
TailwindCSS (^4.3) Utility-first styling, integrated through the official Vite plugin.
Axios (^1.18) HTTP client used by the stores to talk to the Fastify API.
vuedraggable (4.1) Drag-and-drop for tasks and columns (wraps SortableJS).
vue-logger-plugin Leveled logging in the renderer, driven by VITE_LOG_LEVEL.

Backend / API (main process)

Technology Role
Fastify (^5) The REST API server, started inside the Electron main process on port 3000.
@fastify/swagger + swagger-ui Generates OpenAPI docs from the route JSON schemas and serves them at /docs.
@fastify/cors Enables cross-origin requests from the renderer.
Prisma (^7.8) ORM and schema/migration tooling. Uses the new prisma-client generator.
@prisma/adapter-better-sqlite3 Driver adapter connecting Prisma to a local SQLite database.
better-sqlite3 The underlying synchronous SQLite engine (native module).

Desktop shell

Technology Role
Electron (^43) Wraps the app into a native desktop window; provides the main/renderer process model.
electron-builder (^26) Packages and builds installers for Windows, macOS and Linux.
electron-store (^11) Persists user settings (theme, primary color) to a JSON file, schema-validated.
electron-log (^5) Logging in the main process.
@electron/rebuild Recompiles native modules against the Electron runtime.

Build & tooling

Technology Role
Vite (^8) Dev server and bundler for the renderer.
TypeScript (6.0) Types across main and renderer. Each area has its own tsconfig.json.
rollup-plugin-visualizer Produces a bundle-size report at dist/bundle-analysis.html.
Playwright (^1.61) End-to-end testing, driving the real Electron app.
Husky + lint-staged Git hooks and staged-file formatting.
Prettier Code formatting.
SonarQube scanner Static code analysis (npm run sonar).
chokidar File watching for the dev server's live reload.
picocolors Colored terminal output in the build scripts.
dotenv Loads .env for the dev server.

Runtime requirements

Node.js 24.x (engines.node)
npm 12 (packageManager: npm@12.0.0)
Module system ES Modules ("type": "module")

Dependency overrides

package.json pins a few transitive dependencies for security/compatibility via overrides: @hono/node-server, better-sqlite3, hono, node-abi, fast-uri, form-data.

How they connect

For how these technologies interact at runtime — the main/renderer split, the embedded API, and the data flow — see Architecture.

Clone this wiki locally