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