Tech Stack - Incomplete-Infinity/eve-companion GitHub Wiki

📦 Tech Stack

The EVE Companion App uses a pragmatic, library-rich tech stack to accelerate development. The priority is to ship a feature-complete product quickly, with plans to refactor out external dependencies over time.


🛠️ Core Tools

Tool Purpose
Electron Forge Scaffolding, building, and packaging
Webpack Bundling and hot module replacement
Node.js Backend logic and OAuth token handling

🎨 UI & Styling

Library Purpose
Halfmoon.css Layouts, utilities, and basic component styling
Topcoat.css Clean flat UI components
Augmented-ui.css Decorative sci-fi borders and inlays
Bootstrap.js Legacy JS behaviors (modals, dropdowns)
Popper.js Tooltip/dropdown positioning support

🧠 State Management

Library Purpose
Zustand Lightweight global state management

📊 Visualization

Library Purpose
three.js 3D rendering for starmap, ship models
d3.js Data-driven visuals (sovereignty, routes)
Chart.js Financial and performance graphs
svg.js Dynamic SVG manipulation (fittings, UIs)
AOS Optional scroll-based animations

🧰 Utilities

Library Purpose
axios HTTP requests with token injection
tippy.js Tooltips with advanced styling
notyf Toast-style notifications
interact.js Drag/resize for window frames
p-queue Throttled async request queue (lazy loading)
electron-store Persistent config/settings storage
electron-log Logging for both renderer and main process
dexie.js IndexedDB wrapper for storing large data sets

🔐 Authentication & API

Library Purpose
simple-oauth2 Secure token handling in Electron main
oidc-client-ts Fallback web-based login/token manager
swagger-typescript-api Auto-generates ESI client from Swagger
@svgdotjs/svg.js Used for dynamic SVG manipulation

🔮 Dev Tools

Tool Purpose
jsdoc Generates developer documentation
vitest Unit testing framework (optional)
mocha Electron-compatible test runner
esbuild Optional utility bundler

📦 Scripts (from package.json)

"scripts": {
  "start": "electron-forge start",
  "make": "electron-forge make",
  "generate-esi": "swagger-typescript-api generate --path https://esi.evetech.net/latest/swagger.json --output ./src/api/esi --name index.ts --axios --modular --union-enums",
  "generate-docs": "jsdoc -c jsdoc.json",
  "prepare": "npm run generate-esi && npm run generate-docs"
}

📁 Project Structure

Path Description
src/js/main/ Core app logic (1 class = 1 file)
src/api/esi/ Generated ESI API client
docs/ JSDoc-generated documentation
style-guide/ Visual design references and theming
img/ Logos, concept art, UI inspiration

TIP: You can regenerate the ESI client and documentation using:

npm run prepare