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