├── client
├── src
│ ├── assets
│ │ ├── .gitkeep
│ │ ├── images
│ │ │ ├── 22_32_1.png
│ │ │ ├── 22_32_2.png
│ │ │ ├── 22_32_3.png
│ │ │ ├── 22_32_4.png
│ │ │ └── 22_32_5.png
│ │ └── fonts
│ │ │ ├── evesansneue-bold.otf
│ │ │ ├── evesansneue-expanded.otf
│ │ │ ├── evesansneue-italic.otf
│ │ │ ├── evesansneue-regular.otf
│ │ │ ├── evesansneue-bolditalic.otf
│ │ │ ├── evesansneue-condensed.otf
│ │ │ ├── evesansneue-condensedbold.otf
│ │ │ ├── evesansneue-expandedbold.otf
│ │ │ ├── evesansneue-condenseditalic.otf
│ │ │ ├── evesansneue-expandeditalic.otf
│ │ │ ├── evesansneue-expandedbolditalic.otf
│ │ │ └── evesansneue-condensedbolditalic.otf
│ ├── app
│ │ ├── pages
│ │ │ ├── users
│ │ │ │ ├── users.component.scss
│ │ │ │ ├── users.component.html
│ │ │ │ └── users.component.ts
│ │ │ ├── assets
│ │ │ │ ├── assets.component.scss
│ │ │ │ ├── assets.component.html
│ │ │ │ └── assets.component.ts
│ │ │ ├── ore-contents
│ │ │ │ ├── ore-contents.component.scss
│ │ │ │ └── ore-contents.component.html
│ │ │ ├── prices-chart
│ │ │ │ ├── prices-chart.component.scss
│ │ │ │ ├── ore-trig.component.ts
│ │ │ │ ├── gas-fullerenes.component.ts
│ │ │ │ ├── gas-bgc.component.ts
│ │ │ │ ├── ice.component.ts
│ │ │ │ ├── ore-belt.component.ts
│ │ │ │ ├── ore-moon.component.ts
│ │ │ │ └── prices-chart.component.html
│ │ │ ├── refining-profit
│ │ │ │ ├── refining-profit.component.scss
│ │ │ │ ├── refining-profit-trig.component.ts
│ │ │ │ ├── refining-profit-belt.component.ts
│ │ │ │ ├── refining-profit-moon.component.ts
│ │ │ │ └── refining-profit.component.html
│ │ │ ├── about
│ │ │ │ ├── about.component.scss
│ │ │ │ ├── about.component.ts
│ │ │ │ └── about.component.html
│ │ │ ├── home
│ │ │ │ ├── home.component.scss
│ │ │ │ ├── home.component.ts
│ │ │ │ └── home.component.html
│ │ │ ├── industry
│ │ │ │ ├── industry.component.scss
│ │ │ │ ├── jobs
│ │ │ │ │ ├── industry-jobs.component.scss
│ │ │ │ │ └── industry-jobs.component.html
│ │ │ │ ├── industry.component.html
│ │ │ │ └── system-overview
│ │ │ │ │ └── industry-system-overview.component.scss
│ │ │ ├── wallet
│ │ │ │ ├── wallet.component.scss
│ │ │ │ ├── wallet.component.html
│ │ │ │ └── wallet.component.ts
│ │ │ ├── reprocessing
│ │ │ │ └── reprocessing.component.scss
│ │ │ ├── production-calculator
│ │ │ │ └── production-calculator.component.scss
│ │ │ ├── scopes
│ │ │ │ ├── scopes.component.scss
│ │ │ │ └── scopes.component.html
│ │ │ ├── skills
│ │ │ │ └── skills.component.scss
│ │ │ ├── dashboard
│ │ │ │ └── dashboard.component.scss
│ │ │ └── data-page
│ │ │ │ └── data-page.component.ts
│ │ ├── modals
│ │ │ └── logout
│ │ │ │ ├── logout-modal.component.scss
│ │ │ │ ├── logout-modal.component.html
│ │ │ │ └── logout-modal.component.ts
│ │ ├── components
│ │ │ ├── api-offline-message
│ │ │ │ ├── api-offline-message.component.scss
│ │ │ │ ├── api-offline-message.component.ts
│ │ │ │ └── api-offline-message.component.html
│ │ │ ├── sor-table
│ │ │ │ ├── sor-table.component.scss
│ │ │ │ ├── sor-table.component.html
│ │ │ │ └── sor-table.component.ts
│ │ │ ├── no-scopes-message
│ │ │ │ ├── no-scopes-message.component.scss
│ │ │ │ ├── no-scopes-message.component.ts
│ │ │ │ └── no-scopes-message.component.html
│ │ │ └── loading-message
│ │ │ │ ├── loading-message.component.scss
│ │ │ │ ├── loading-message.component.html
│ │ │ │ └── loading-message.component.ts
│ │ ├── shared
│ │ │ ├── title.ts
│ │ │ └── esi-request-cache.ts
│ │ ├── models
│ │ │ ├── industry
│ │ │ │ ├── acquire-method.ts
│ │ │ │ ├── industry-graph-layout.ts
│ │ │ │ ├── industry-node.ts
│ │ │ │ ├── shopping-list.ts
│ │ │ │ └── industry-graph.ts
│ │ │ ├── user
│ │ │ │ └── user.model.ts
│ │ │ └── character
│ │ │ │ ├── character.service.ts
│ │ │ │ └── character.model.ts
│ │ ├── app.component.scss
│ │ ├── app.component.html
│ │ ├── guards
│ │ │ ├── auth.guard.ts
│ │ │ ├── admin.guard.ts
│ │ │ ├── app-ready.guard.ts
│ │ │ └── base.guard.ts
│ │ ├── socket
│ │ │ └── socket.service.ts
│ │ ├── data-services
│ │ │ ├── status.service.ts
│ │ │ ├── systems.service.ts
│ │ │ ├── stations.service.ts
│ │ │ ├── constellations.service.ts
│ │ │ ├── base.service.ts
│ │ │ ├── wallet.service.ts
│ │ │ ├── skillqueue.service.ts
│ │ │ ├── industry-jobs.service.ts
│ │ │ ├── attributes.service.ts
│ │ │ ├── wallet-journal.service.ts
│ │ │ ├── users.service.ts
│ │ │ ├── ship.service.ts
│ │ │ ├── search.service.ts
│ │ │ ├── skills.service.ts
│ │ │ ├── structures.service.ts
│ │ │ ├── types.service.ts
│ │ │ ├── skill-groups.service.ts
│ │ │ ├── blueprints.service.ts
│ │ │ ├── names.service.ts
│ │ │ ├── assets.service.ts
│ │ │ └── industry.service.ts
│ │ ├── http-interceptors
│ │ │ ├── esi-language.interceptor.ts
│ │ │ ├── server-token.interceptor.ts
│ │ │ ├── esi-user-agent.interceptor.ts
│ │ │ ├── request-count.interceptor.ts
│ │ │ ├── index.ts
│ │ │ ├── esi-warning.interceptor.ts
│ │ │ ├── esi-retry.interceptor.ts
│ │ │ └── esi-caching.interceptor.ts
│ │ ├── sentry.error-handler.ts
│ │ ├── app.component.ts
│ │ ├── app-ready-event.service.ts
│ │ └── navigation
│ │ │ └── navigation.component.scss
│ ├── robots.txt
│ ├── favicon.ico
│ ├── _imports.scss
│ ├── environments
│ │ ├── environment.prod.ts
│ │ ├── environment.dev.ts
│ │ ├── environment.ts
│ │ └── environment.local.ts
│ ├── tslint.json
│ ├── _addons.scss
│ ├── tsconfig.app.json
│ ├── sitemap.xml
│ ├── main.ts
│ ├── shared
│ │ └── calc.helper.ts
│ ├── _variables.scss
│ └── index.html
├── .npmrc
├── .browserslistrc
├── proxy.conf.ts
├── nginx-proxy.conf
├── tsconfig.json
├── .gitignore
├── nginx.conf
├── tsconfig.base.json
├── Dockerfile
├── tslint.json
└── package.json
├── server
├── data
│ └── README.md
├── src
│ ├── modules.d.ts
│ ├── typings.d.ts
│ ├── models
│ │ ├── base.model.ts
│ │ ├── blueprint.model.ts
│ │ ├── character.model.ts
│ │ └── user.model.ts
│ ├── routers
│ │ ├── global.router.ts
│ │ ├── error.router.ts
│ │ ├── user.router.ts
│ │ └── api.router.ts
│ ├── loggers
│ │ ├── query.logger.ts
│ │ └── request.logger.ts
│ ├── controllers
│ │ ├── socket.controller.ts
│ │ └── database.controller.ts
│ └── index.ts
├── .eslintrc.json
├── migrations
│ ├── 1574949747885-RemoveEmail.ts
│ ├── 1577713483793-BlueprintModel.ts
│ └── 1573054086025-Initial.ts
├── Dockerfile
├── tsconfig.json
├── ormconfig.js
└── package.json
├── .editorconfig
├── code-style-settings.xml
├── .gitignore
├── .github
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── workflows
│ └── cd.yaml
├── LICENSE
├── docker-compose.yml
└── README.md
/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/app/pages/users/users.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/app/pages/assets/assets.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/client/src/app/modals/logout/logout-modal.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/app/pages/ore-contents/ore-contents.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/app/pages/prices-chart/prices-chart.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/server/data/README.md:
--------------------------------------------------------------------------------
1 | Data folder where caches are stored.
2 |
--------------------------------------------------------------------------------
/client/src/app/pages/refining-profit/refining-profit.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/server/src/modules.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'socket.io-express-session';
2 |
--------------------------------------------------------------------------------
/client/src/app/components/api-offline-message/api-offline-message.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/favicon.ico
--------------------------------------------------------------------------------
/client/src/app/shared/title.ts:
--------------------------------------------------------------------------------
1 | export const createTitle = (title: string) => `EVIE - ${title}`;
2 |
--------------------------------------------------------------------------------
/client/.npmrc:
--------------------------------------------------------------------------------
1 | @fortawesome:registry=https://npm.fontawesome.com/
2 | //npm.fontawesome.com/:_authToken=${EVIE_FA_TOKEN}
3 |
--------------------------------------------------------------------------------
/client/src/app/models/industry/acquire-method.ts:
--------------------------------------------------------------------------------
1 | export enum AcquireMethod {
2 | PURCHASE,
3 | PRODUCE,
4 | }
5 |
--------------------------------------------------------------------------------
/client/src/assets/images/22_32_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/assets/images/22_32_1.png
--------------------------------------------------------------------------------
/client/src/assets/images/22_32_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/assets/images/22_32_2.png
--------------------------------------------------------------------------------
/client/src/assets/images/22_32_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/assets/images/22_32_3.png
--------------------------------------------------------------------------------
/client/src/assets/images/22_32_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/assets/images/22_32_4.png
--------------------------------------------------------------------------------
/client/src/assets/images/22_32_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ionaru/EVIE/HEAD/client/src/assets/images/22_32_5.png
--------------------------------------------------------------------------------
/client/src/app/pages/users/users.component.html:
--------------------------------------------------------------------------------
1 |
4 | {{ getName(blueprint.type_id) }} 5 | 6 | ({{ blueprint.location_id }}) 7 | ({{ blueprint.location_name }}) 8 |
9 | -------------------------------------------------------------------------------- /client/proxy.conf.ts: -------------------------------------------------------------------------------- 1 | const PROXY_CONFIG = [ 2 | { 3 | context: [ 4 | '/api', 5 | '/sso', 6 | '/data', 7 | '/socket.io', 8 | ], 9 | secure: false, 10 | target: 'http://localhost:3731', 11 | ws: true, 12 | }, 13 | ]; 14 | 15 | module.exports = PROXY_CONFIG; 16 | -------------------------------------------------------------------------------- /client/src/app/components/api-offline-message/api-offline-message.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-api-offline-message', 5 | styleUrls: ['./api-offline-message.component.scss'], 6 | templateUrl: './api-offline-message.component.html', 7 | }) 8 | export class ApiOfflineMessageComponent { } 9 | -------------------------------------------------------------------------------- /client/src/app/guards/auth.guard.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | import { UserService } from '../models/user/user.service'; 4 | import { BaseGuard } from './base.guard'; 5 | 6 | @Injectable() 7 | export class AuthGuard extends BaseGuard { 8 | 9 | public condition() { 10 | return !!UserService.user; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | insert_final_newline = true 8 | indent_size = 4 9 | indent_style = space 10 | trim_trailing_whitespace = true 11 | 12 | [*.yaml] 13 | indent_size = 2 14 | 15 | [*.md] 16 | max_line_length = off 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /client/src/app/models/industry/industry-graph-layout.ts: -------------------------------------------------------------------------------- 1 | import { DagreLayout, DagreSettings, Orientation } from '@swimlane/ngx-graph'; 2 | 3 | export class IndustryGraphLayout extends DagreLayout { 4 | settings: DagreSettings = { 5 | orientation: Orientation.TOP_TO_BOTTOM, 6 | ranker: 'network-simplex', 7 | rankPadding: 300, 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /client/src/app/components/api-offline-message/api-offline-message.component.html: -------------------------------------------------------------------------------- 1 |Value and refining products per m³ of ore.
2 | 3 |{{ message }}
17 |Tax paid: -{{ taxAmount | number: '0.2-2' }} ISK
8 |Prices are based on 8.000m³ of ore and buying in Domain and selling in Amarr
27 |Prices are based on buying/selling 5.000m³ of product in Jita.
40 |6 | EVIE can be best described as an EVE Online API viewer, it enables you to view your 7 | EVE Online character information without having to log into the game. 8 |
9 |11 | My goal is to provide you with a simple-to-use API viewer that gives you as much useful information about 12 | your characters as possible. 13 |
14 |
16 | This website uses SSO login from EVE Online.
17 | This will also enable you to save multiple characters and quickly access their data.
18 |
19 | The source code of this website is publicly available on
20 | GitHub,
21 | so feel free to nose around and discover how it all works.
22 |
Currently functional pages:
25 ||
6 | |
20 |
|---|
|
25 |
26 | |
39 |
EVIE is an online API interface for the game EVE Online. It uses the game's exposed ESI API to display 4 | information about characters, the in-game market and the game itself.
5 |Created by Ionaru. in-game: Ionaru Otsada.
6 |
Thank you all for making this project possible.
12 |Source code available on https://github.com/Ionaru/EVIE
49 |To display your data from EVE Online, EVIE requires permission to use your 'scopes'.
6 |Scopes are certain sets of data that a third-party application, like EVIE, can access from your character.
9 |For example you can grant access to view your skill queue, but not your wallet balance.
10 | 11 |
44 |
45 |
46 |
47 |
48 |
49 | {{ job.percentageDone | number:'1.0-0' }}%
50 |
Industry data
65 |{{ industryJobs | json }}
66 | Blueprint data
68 |{{ blueprints | json }}
69 |