Skip to content

Commit 260eee6

Browse files
authored
Merge pull request #268 from samgozman/short-fork-2.0
Short fork 2.0 - Major update
2 parents c214ee7 + f06da9d commit 260eee6

File tree

182 files changed

+28749
-10842
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

182 files changed

+28749
-10842
lines changed

.eslintrc.json

Lines changed: 0 additions & 88 deletions
This file was deleted.

.gitignore

Lines changed: 3 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,4 @@
1-
# Logs
2-
logs
3-
*.log
4-
npm-debug.log*
5-
yarn-debug.log*
6-
yarn-error.log*
7-
lerna-debug.log*
1+
# Ignore db-data folder that used as a volume for the database
2+
/db-data/
83

9-
# Diagnostic reports (https://nodejs.org/api/report.html)
10-
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11-
12-
# Runtime data
13-
pids
14-
*.pid
15-
*.seed
16-
*.pid.lock
17-
18-
# Directory for instrumented libs generated by jscoverage/JSCover
19-
lib-cov
20-
21-
# Coverage directory used by tools like istanbul
22-
coverage
23-
*.lcov
24-
25-
# nyc test coverage
26-
.nyc_output
27-
28-
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29-
.grunt
30-
31-
# Bower dependency directory (https://bower.io/)
32-
bower_components
33-
34-
# node-waf configuration
35-
.lock-wscript
36-
37-
# Compiled binary addons (https://nodejs.org/api/addons.html)
38-
build/Release
39-
40-
# Dependency directories
41-
node_modules/
42-
jspm_packages/
43-
44-
# TypeScript v1 declaration files
45-
typings/
46-
47-
# TypeScript cache
48-
*.tsbuildinfo
49-
50-
# Optional npm cache directory
51-
.npm
52-
53-
# Optional eslint cache
54-
.eslintcache
55-
56-
# Microbundle cache
57-
.rpt2_cache/
58-
.rts2_cache_cjs/
59-
.rts2_cache_es/
60-
.rts2_cache_umd/
61-
62-
# Optional REPL history
63-
.node_repl_history
64-
65-
# Output of 'npm pack'
66-
*.tgz
67-
68-
# Yarn Integrity file
69-
.yarn-integrity
70-
71-
# dotenv environment variables file
72-
.env
73-
.env.test
74-
75-
# parcel-bundler cache (https://parceljs.org/)
76-
.cache
77-
78-
# Next.js build output
79-
.next
80-
81-
# Nuxt.js build / generate output
82-
.nuxt
83-
dist
84-
85-
# Gatsby files
86-
.cache/
87-
# Comment in the public line in if your project uses Gatsby and *not* Next.js
88-
# https://nextjs.org/blog/next-9-1#public-directory-support
89-
# public
90-
91-
# vuepress build output
92-
.vuepress/dist
93-
94-
# Serverless directories
95-
.serverless/
96-
97-
# FuseBox cache
98-
.fusebox/
99-
100-
# DynamoDB Local files
101-
.dynamodb/
102-
103-
# TernJS port file
104-
.tern-port
105-
src/utils/tinkoff-tickers.json
106-
config/dev.env
4+
node_modules/

.vscode/launch.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

README.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,40 @@
66
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=samgozman_short-fork&metric=alert_status)](https://sonarcloud.io/dashboard?id=samgozman_short-fork)
77
![GitHub](https://img.shields.io/github/license/samgozman/short-fork)
88

9-
Данный проект нацелен на агрегирование основных финансовых индикаторов американских акций, торгующихся на фондовой бирже. Основной упор приложение делает на данные о количестве шортовых позиций (Short Float и Short Volume).
9+
This project aims to aggregate the main financial indicators of traded USA stocks.
1010

11-
Изначально делал веб приложение для себя, чтобы выводить самую нужную для меня информацию в читабельном виде на экране смартфона.
11+
Initially, I created a web application for myself to display the most important information in a readable format on the smartphone screen.
1212

13-
**[Перейти на short fork](https://short-fork.up.railway.app)**
13+
**[Go to short fork](https://short-fork.up.railway.app)**
1414

15-
## Как пользоваться
15+
## How to use
1616

17-
Введите тикер компании (например **NVDA**) в поле ТИКЕР и нажмите Enter либо стрелочку слева. На данный момент приложение работает только с иностранными компаниями! Зелёным цветом отмечаются те показатели, по которым компания сейчас дёшева оценена, жёлтым справедливо и красным в переоценке (либо просто неадекватное значение).
17+
Enter the company ticker (for example, **NVDA**) in the text input field and press Enter. The indicators that show that the company is currently can be undervalued are marked in green, those that are fairly valued are marked in yellow, and those that are overvalued (or simply have an inadequate value) are marked in red.
1818

19-
После этого данные начнут собираться с нескольких источников, что может занять непродолжительное время.
19+
After that, data will begin to be collected from several sources, which may take some amount of time.
2020

21-
![Первый экран приложения после ввода](doc/img/01.png)
21+
![The first screen of the application after entering the data](doc/img/01.png)
2222

23-
На первом уровне отображаются основные мультипликаторы финансовых показателей, технический анализ от TradingView и график объёма шортовых позиций.
23+
The main financial indicator multipliers, technical analysis from TradingView, and a chart of short volumes (from my other project TightShorts) are displayed at the first level.
2424

25-
![Второй экран](doc/img/02.png)
25+
![Second screen](doc/img/02.png)
2626

27-
Далее располагаются данные по опционной торговле, ссылки на сторонние сервисы, консенсус аналитиков и график изменения выручки и прибыли компании за 5 лет.
27+
Next, data on options trading, links to third-party services, consensus analysts, and a chart of the company's revenue and profit changes over 5 years are provided.
2828

29-
Если вы не знаете, что означает каждый показатель - просто **кликните на него** и всплывёт подсказка!
29+
If you do not know what each indicator means, simply **click on it** and a tooltip will appear!
3030

31-
![Третий экран](doc/img/03.png)
31+
![Third screen](doc/img/03.png)
3232

33-
На третьей срочке находятся данные по инсайдерским продажам и график отношения долга к капиталу компании.
33+
The third row displays data on insider sales and a chart of the company's debt-to-equity ratio.
3434

35-
![График](doc/img/04.png)
35+
![Chart](doc/img/04.png)
3636

37-
И под конец - график TradingView с самыми популярными осцилляторами: RSI, STOCH, AO, BB.
37+
And finally, the TradingView chart with the most popular oscillators: RSI, AO, BB.
3838

39-
## Источники данных
39+
## Data sources
4040

41-
* [finviz.com](https://finviz.com/) - Название компании, сайт, цена, P/E, P/S, ROE, ROA, Debt/Eq, Short Float %, RSI, recom.
42-
* [shortsqueeze.com](https://shortsqueeze.com/) - Short Float %. По данному параметру сразу два источника для информативности.
43-
* [tightshorts.ru](https://tightshorts.ru/) - Short Volume %
44-
* [tradingview.com](https://ru.tradingview.com/gopro/?share_your_love=eragonovich) - Виджет технического анализа и график цены
45-
* [www.barchart.com](https://www.barchart.com/) - Долг к капиталу, Выручка и прибыль, Опционы, Мнение аналитиков
41+
* [finviz.com](https://finviz.com/) - Company name, website, price, P/E, P/S, ROE, ROA, Debt/Eq, Short Float %, RSI, etc.
42+
* [shortsqueeze.com](https://shortsqueeze.com/) - Short Float %. For this parameter, there are two sources of data.
43+
* [tightshorts.ru](https://tightshorts.ru/) - Short Volume %.
44+
* [tradingview.com](https://ru.tradingview.com/gopro/?share_your_love=eragonovich) - Technical analysis widget and price chart.
45+
* [www.barchart.com](https://www.barchart.com/) - Debt to Equity, Revenue and Earnings, Options, Analyst Opinion.

backend/.dockerignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
dist
2+
node_modules
3+
.git
4+
.prettierrc
5+
README.md

backend/.eslintrc.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module.exports = {
2+
parser: '@typescript-eslint/parser',
3+
parserOptions: {
4+
project: 'tsconfig.json',
5+
tsconfigRootDir: __dirname,
6+
sourceType: 'module',
7+
},
8+
plugins: ['@typescript-eslint/eslint-plugin'],
9+
extends: [
10+
'plugin:@typescript-eslint/recommended',
11+
'plugin:prettier/recommended',
12+
],
13+
root: true,
14+
env: {
15+
node: true,
16+
jest: true,
17+
},
18+
ignorePatterns: ['.eslintrc.js'],
19+
rules: {
20+
'@typescript-eslint/interface-name-prefix': 'off',
21+
'@typescript-eslint/explicit-function-return-type': 'off',
22+
'@typescript-eslint/explicit-module-boundary-types': 'off',
23+
'@typescript-eslint/no-explicit-any': 'off',
24+
},
25+
};

backend/.gitignore

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# compiled output
2+
/dist
3+
/node_modules
4+
5+
# Logs
6+
logs
7+
*.log
8+
npm-debug.log*
9+
pnpm-debug.log*
10+
yarn-debug.log*
11+
yarn-error.log*
12+
lerna-debug.log*
13+
14+
# OS
15+
.DS_Store
16+
17+
# Tests
18+
/coverage
19+
/.nyc_output
20+
21+
# IDEs and editors
22+
/.idea
23+
.project
24+
.classpath
25+
.c9/
26+
*.launch
27+
.settings/
28+
*.sublime-workspace
29+
30+
# IDE - VSCode
31+
.vscode/*
32+
!.vscode/settings.json
33+
!.vscode/tasks.json
34+
!.vscode/launch.json
35+
!.vscode/extensions.json
36+
37+
# ENVs
38+
*.env

backend/.prettierrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"singleQuote": true,
3+
"trailingComma": "all"
4+
}

backend/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM node:18-alpine AS build-env
2+
WORKDIR /app
3+
COPY package*.json ./
4+
RUN npm ci
5+
COPY . ./
6+
RUN npm run build
7+
8+
FROM gcr.io/distroless/nodejs18-debian11
9+
COPY --from=build-env /app /app
10+
WORKDIR /app
11+
ENV NODE_ENV=production
12+
CMD ["dist/main.js"]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
PORT=3000
2+
NODE_ENV=development
3+
REDIS_HOST=redis
4+
REDIS_PORT=6379
5+
REDIS_PASSWORD=
6+
REDIS_USER=default
7+
TTL_SHORTSQUEEZE=43200
8+
TTL_FINVIZ=1200
9+
TTL_BARCHART_OVERVIEW=1200
10+
TTL_BARCHART_FINANCIAL=2592000
11+
SHORT_API_URL=
12+
SHORT_API_KEY=

0 commit comments

Comments
 (0)