-
Notifications
You must be signed in to change notification settings - Fork 0
Tech Stack
daarunia edited this page Jul 11, 2026
·
1 revision
An overview of the technologies used in NexTask and the role each one plays. Versions reflect package.json at the time of writing.
| 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. |
| 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). |
| 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. |
| 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. |
| Node.js |
24.x (engines.node) |
| npm |
12 (packageManager: npm@12.0.0) |
| Module system | ES Modules ("type": "module") |
package.json pins a few transitive dependencies for security/compatibility via overrides: @hono/node-server, better-sqlite3, hono, node-abi, fast-uri, form-data.
For how these technologies interact at runtime — the main/renderer split, the embedded API, and the data flow — see Architecture.
NexTask — a modern cross-platform desktop todo app · Electron · Vue 3 · Prisma · TailwindCSS Repository · Licensed under Apache-2.0
Getting Started
Understanding the App
Deep Dives
Workflow