Compare commits

..

No commits in common. "6b051a074e4cc4fb0e134aaec010789443160e1f" and "1249a7dbc8bb86008a1248342d188b77027e87cd" have entirely different histories.

239
README.md
View File

@ -2,36 +2,30 @@
A lightweight Docker-based web tool to monitor cryptocurrency prices (via Binance and OKX) with **unlimited alarms** and **unlimited crypto tracking**, outshining typical TradingView limitations. It also provides quick access to multiple RSS-based crypto news sources and a live Economic Calendar. A lightweight Docker-based web tool to monitor cryptocurrency prices (via Binance and OKX) with **unlimited alarms** and **unlimited crypto tracking**, outshining typical TradingView limitations. It also provides quick access to multiple RSS-based crypto news sources and a live Economic Calendar.
<img src="https://github.com/user-attachments/assets/d87ca663-97be-4c22-a0ab-46505fe9c99f" width="800" height="auto">
---
## Demo
Check out the live demo here: [HodlEye Demo](https://hodleye.gerald-hasani.com/)
--- ---
## Table of Contents ## Table of Contents
1. [Overview](#overview) 1. [Overview](#overview)
2. [Features](#features) 2. [Features](#features)
- [Unlimited Alarms & Tracking](#unlimited-alarms--tracking) - [Unlimited Alarms & Tracking](#unlimited-alarms--tracking)
- [Price Updates](#price-updates) - [Price Updates](#price-updates)
- [Alarm Functionality](#alarm-functionality) - [Alarm Functionality](#alarm-functionality)
- [Crypto News](#crypto-news) - [Crypto News](#crypto-news)
- [Economic Calendar](#economic-calendar) - [Economic Calendar](#economic-calendar)
3. [Installation & Usage](#installation--usage) 3. [Installation & Usage](#installation--usage)
- [Requirements](#requirements) - [Requirements](#requirements)
- [Docker Build & Run](#docker-build--run) - [Docker Build & Run](#docker-build--run)
4. [Project Structure](#project-structure) 4. [Windows Notification App: HodlEye_Notify](#windows-notification-app-hodleye_notify)
- [Frontend (`index.html` & `magic.js`)](#frontend-indexhtml--magicjs) 5. [Project Structure](#project-structure)
- [News Feed Server (Node.js)](#news-feed-server-nodejs) - [Frontend (index.html & magic.js)](#frontend-indexhtml--magicjs)
5. [Important Notes / Limitations](#important-notes--limitations) - [News Feed Server (Node.js)](#news-feed-server-nodejs)
6. [Privacy & Data Disclaimer](#privacy--data-disclaimer) 6. [Important Notes / Limitations](#important-notes--limitations)
7. [License](#license) 7. [Coming Soon](#coming-soon)
8. [Privacy & Data Disclaimer](#privacy--data-disclaimer)
9. [License](#license)
--- ---
@ -39,27 +33,37 @@ Check out the live demo here: [HodlEye Demo](https://hodleye.gerald-hasani.com/)
**HodlEye Crypto Price Tracker** is a Dockerized application that aims to surpass typical limitations of other tracking platforms (like TradingView), offering: **HodlEye Crypto Price Tracker** is a Dockerized application that aims to surpass typical limitations of other tracking platforms (like TradingView), offering:
- **Unlimited Alarms**: No cap on the number of alarms you can set. - **Unlimited Alarms**: No cap on the number of alarms you can set.
- **Unlimited Crypto Tracking**: Easily add as many coins as you want. - **Unlimited Crypto Tracking**: Easily add as many coins as you want.
- **Real-Time Price Updates (every 5 seconds)**: Uses Binance and OKX data. - **Real-Time Price Updates (every 1 seconds)**: Uses Binance and OKX data.
- **Crypto News & Economic Calendar**: Stay updated on the latest events affecting the market. - **Crypto News & Economic Calendar**: Stay updated on the latest events affecting the market.
The tool refreshes prices every **5 seconds**, which may introduce a slight delay in alarm triggers if the price quickly touches the threshold in between intervals. The tool refreshes prices every **1 seconds**, which may introduce a slight delay in alarm triggers if the price quickly touches the threshold in between intervals.
--- ---
&nbsp;
## Features ## Features
### Unlimited Alarms & Tracking ### Unlimited Alarms & Tracking
- You can set **as many alarms as you like** — no daily or total limit. - You can set **as many alarms as you like** — no daily or total limit.
- Track **any number of cryptocurrencies** in the list simultaneously. - Track **any number of cryptocurrencies** in the list simultaneously.
<img src="https://github.com/user-attachments/assets/276de04d-dcf6-411a-b550-cbb5104c1579" width="auto" height="400">
&nbsp;
### Price Updates ### Price Updates
- **Binance** and **OKX** are integrated as the primary data sources. - **Binance** and **OKX** are integrated as the primary data sources.
- By default, HodlEye tries Binance first; if that fails or is forced off, it falls back to OKX. - By default, HodlEye tries Binance first; if that fails or is forced off, it falls back to OKX.
- It automatically fetches the current price, 24h open, 1h open, and calculates the 24h and 1h percentage changes every **5 seconds**. - It automatically fetches the current price, 24h open, 1h open, and calculates the 24h and 1h percentage changes every **1 seconds**.
&nbsp;
### Alarm Functionality ### Alarm Functionality
- Set alarms for each coin (e.g., `BTC/USDT`), choosing: - Set alarms for each coin (e.g., `BTC/USDT`), choosing:
- **Alarm Price** (threshold) - **Alarm Price** (threshold)
- **Direction** (Rising, Falling, or Both) - **Direction** (Rising, Falling, or Both)
@ -67,56 +71,112 @@ The tool refreshes prices every **5 seconds**, which may introduce a slight dela
- When triggered, a popup and sound notification appear, with optional desktop notifications. - When triggered, a popup and sound notification appear, with optional desktop notifications.
- **Once** alarms are marked locally in the browser (not removed from the server) so they do not trigger again unless reloaded or manually reset. - **Once** alarms are marked locally in the browser (not removed from the server) so they do not trigger again unless reloaded or manually reset.
&nbsp;
### Crypto News ### Crypto News
- News from multiple RSS sources: - News from multiple RSS sources:
- `https://crypto.news/feed/` - `https://crypto.news/feed/`
- `https://cointelegraph.com/rss` - `https://cointelegraph.com/rss`
- `https://thedefiant.io/api/feed` - `https://thedefiant.io/api/feed`
- `https://newsbtc.com/feed` - `https://newsbtc.com/feed`
- `https://news.bitcoin.com/feed` *(may be inaccessible in certain regions)* - `https://news.bitcoin.com/feed` _(may be inaccessible in certain regions)_
- `https://bitcoinmagazine.com/feed` - `https://bitcoinmagazine.com/feed`
- `https://cryptopanic.com/news/rss/` - `https://cryptopanic.com/news/rss/`
- `https://decrypt.co/feed` - `https://decrypt.co/feed`
- Quickly view and filter recent articles within the built-in News modal. - Quickly view and filter recent articles within the built-in News modal.
<img src="https://github.com/user-attachments/assets/f0727b39-a075-4d50-9600-f53c803d4a1b" width="auto" height="400">
&nbsp;
### Economic Calendar ### Economic Calendar
- The **Economic Calendar** button opens a modal with an [Investing.com](https://www.investing.com/) iframe, showing major economic events such as central bank decisions and market-impacting announcements. - The **Economic Calendar** button opens a modal with an [Investing.com](https://www.investing.com/) iframe, showing major economic events such as central bank decisions and market-impacting announcements.
--- <img src="https://github.com/user-attachments/assets/e254301e-9aaa-48d8-84e7-6faa598ca8be" width="600" height="auto">
---
&nbsp;
## Installation & Usage ## Installation & Usage
### Requirements ### Requirements
- [Docker](https://www.docker.com/) installed. - [Docker](https://www.docker.com/) installed.
- (Optional) [Docker-Compose](https://docs.docker.com/compose/) if you want a more complex or multi-container setup. - (Optional) [Docker-Compose](https://docs.docker.com/compose/) if you want a more complex or multi-container setup.
### Docker Build & Run ### Docker Build & Run
1. **Clone this repository** 1. **Clone this repository**
```bash ```bash
git clone https://github.com/YourGitHubName/HodlEye.git git clone https://github.com/Gerald-Ha/HodlEye-Crypto-Price-Tracker.git
cd HodlEye cd HodlEye
``` ```
2. **Build the Docker image** 2. **Build the Docker image**
```bash ```bash
docker buildx build -t hodleye-crypto-tracker . docker buildx build -t hodleye-crypto-tracker .
``` ```
*(Make sure youre in the same directory as the Dockerfile.)*
3. **Run the container** _(Make sure youre in the same directory as the Dockerfile.)_
3. **Run the container**
```bash ```bash
docker run -d -p 3099:3099 -p 5001:5001 --name hodleye-container hodleye-crypto-tracker docker run -p 3099:3099 -p 5001:5001 -v hodleye_data:/app/data --name hodleye-container hodleye-crypto-tracker
``` ```
- Port `3099` serves the main web interface.
- Port `3099` serves the main web interface.
- Port `5001` is used by the Node.js server that fetches news RSS feeds. - Port `5001` is used by the Node.js server that fetches news RSS feeds.
4. **Access the application** 4. **Access the application**
- **Main UI**: [http://localhost:3099](http://localhost:3099) - **Main UI**: [http://localhost:3099](http://localhost:3099)
- **News Feed Endpoint**: [http://localhost:5001/api/news](http://localhost:5001/api/news) - **News Feed Endpoint**: [http://localhost:5001/api/news](http://localhost:5001/api/news)
--- ---
&nbsp;
## Windows Notification App: HodlEye_Notify
<img src="https://github.com/user-attachments/assets/a3356708-1b3a-4fb8-9a71-d1af88f29c5f" width="auto" height="150">
<img src="https://github.com/user-attachments/assets/cb0eb2a8-45fb-4a80-bb81-56957e838153" width="auto" height="150">
If you prefer not to keep the HodlEye Crypto Price Tracker web interface open in your browser all the time, you can use a lightweight Windows application called **HodlEye_Notify**. This tool connects directly to the same endpoint as the Docker container and will display notifications on your desktop whenever an alarm is triggered.
&nbsp;
1. **Setup**
- Enter the IP address and port of your HodlEye Docker container (for example, `http://192.168.1.112:3099/`) in the HodlEye_Notify window.
- Click **Connect** to establish a WebSocket connection.
- Once connected, youll see the status change to “Connected.”
2. **Autostart**
- Add HodlEye_Notify to your Windows **Startup** folder so it automatically launches when Windows starts. This way, youll continuously receive notifications without needing to reopen the program manually.
3. **Testing Notifications**
- From the machine running the Docker container, you can trigger a test notification using the following `curl` command:
**Ubuntu**
```bash
curl -X POST http://192.168.1.112:3099/api/notifications \
-H "Content-Type: application/json" \
-d "{\"message\": \"⚠️ ALARM (Recurring, Both): BTC reached 92250\", \"timestamp\": \"2025-03-06T06:19:58.584Z\"}"
```
**Windows CMD**
```bash
curl -X POST http://192.168.1.112:3099/api/notifications -H "Content-Type: application/json" -d "{\"message\": \"⚠️ ALARM (Recurring, Both): BTC reached 92250\", \"timestamp\": \"2025-03-06T06:19:58.584Z\"}"
```
- If everything is configured correctly, you should receive a desktop notification from HodlEye_Notify indicating the alarm has triggered.
This application simplifies the process of staying informed about your alarms, letting you work on other tasks without leaving the HodlEye web interface open.
---
&nbsp;
## Project Structure ## Project Structure
Below is an example directory tree (based on your structure). Yours may vary slightly: Below is an example directory tree (based on your structure). Yours may vary slightly:
@ -124,21 +184,28 @@ Below is an example directory tree (based on your structure). Yours may vary sli
``` ```
HodlEye-Crypto-Price-Tracker HodlEye-Crypto-Price-Tracker
├── Dockerfile ├── Dockerfile
├── LICENSE.txt
├── PRIVACY.md
├── README.md
├── data ├── data
│ └── data.json │ └── data.json
├── public ├── public
│ ├── font │ ├── font
│ │ └── BreeSerif-Regular.ttf │ │ └── BreeSerif-Regular.ttf
│ ├── images │ ├── images
│ │ ├── Gitea_Logo.svg
│ │ ├── coffee.svg │ │ ├── coffee.svg
│ │ └── favicon.png │ │ ├── favicon.png
│ │ └── github-mark.svg
│ ├── index.html │ ├── index.html
│ ├── magic.js │ ├── magic.js
│ ├── news.js │ ├── news.js
│ ├── responsive.css
│ ├── sound │ ├── sound
│ │ ├── cashing.mp3 │ │ ├── cashing.mp3
│ │ └── ping.mp3 │ │ └── ping.mp3
│ └── style.css │ ├── style.css
│ └── update.js
├── server ├── server
│ ├── newsfeed │ ├── newsfeed
│ │ ├── node_modules │ │ ├── node_modules
@ -149,29 +216,34 @@ HodlEye-Crypto-Price-Tracker
│ ├── package-lock.json │ ├── package-lock.json
│ ├── package.json │ ├── package.json
│ └── server.js │ └── server.js
└── sound ├── sound
├── cashing.mp3 │ ├── cashing.mp3
└── ping.mp3 │ └── ping.mp3
└── update.json
``` ```
&nbsp;
### Frontend (`index.html` & `magic.js`) ### Frontend (`index.html` & `magic.js`)
- **`index.html`**
- Main interface containing modals and buttons (Add Crypto, Edit List, Alarms, Options, etc.). - **`index.html`**
- Main interface containing modals and buttons (Add Crypto, Edit List, Alarms, Options, etc.).
- Includes buttons for: - Includes buttons for:
- **Crypto News** (opens a news modal) - **Crypto News** (opens a news modal)
- **Economic Calendar** (Investing.com iframe) - **Economic Calendar** (Investing.com iframe)
- **Unlimited Alarms** management - **Unlimited Alarms** management
- **Options** (Dark mode, alarm sounds, desktop notifications) - **Options** (Dark mode, alarm sounds, desktop notifications)
- **Buy me a Coffee** donation button - **Buy me a Coffee** donation button
- **`magic.js`** - **`magic.js`**
- Core logic: - Core logic:
- Fetches cryptos (`/api/cryptos`) - Fetches cryptos (`/api/cryptos`)
- Loads alarms (`/api/alarms`) and notifications (`/api/notifications`) - Loads alarms (`/api/alarms`) and notifications (`/api/notifications`)
- Pulls prices from Binance/OKX every 5 seconds - Pulls prices from Binance/OKX every 1 seconds
- Checks and triggers alarms - Checks and triggers alarms
- Handles UI rendering (prices, alarms, notifications, drag & drop reorder) - Handles UI rendering (prices, alarms, notifications, drag & drop reorder)
&nbsp;
### News Feed Server (Node.js) ### News Feed Server (Node.js)
- A minimal Node.js Express server (in `server.js` or similar) which: - A minimal Node.js Express server (in `server.js` or similar) which:
- Retrieves the listed RSS feeds and parses them via `xml2js` - Retrieves the listed RSS feeds and parses them via `xml2js`
- Serves them in JSON format at `/api/news` - Serves them in JSON format at `/api/news`
@ -184,49 +256,60 @@ HodlEye-Crypto-Price-Tracker
``` ```
- Accessible at [http://localhost:5001/api/news](http://localhost:5001/api/news). - Accessible at [http://localhost:5001/api/news](http://localhost:5001/api/news).
*(Within Docker, its already bundled, so just expose `5001`.)* _(Within Docker, its already bundled, so just expose `5001`.)_
--- ---
&nbsp;
## Important Notes / Limitations ## Important Notes / Limitations
1. **1-second polling** 1. **1-second polling**
- Theres a potential delay in alarms because price thresholds are only checked every 5 seconds. If a price briefly touches and moves away between polls, you might miss that exact trigger moment.
2. **API availability** - Theres a potential delay in alarms because price thresholds are only checked every 1 seconds. If a price briefly touches and moves away between polls, you might miss that exact trigger moment.
- Binance/OKX may be temporarily down or might not support certain symbols.
2. **API availability**
- Binance/OKX may be temporarily down or might not support certain symbols.
- HodlEye tries Binance → fallback to OKX if needed. - HodlEye tries Binance → fallback to OKX if needed.
3. **Unlimited Alarms (Once vs. Recurring)** 3. **Unlimited Alarms (Once vs. Recurring)**
- **Once** alarms become locally “triggered” to avoid repeated alerts but are not server-side deactivated.
- **Once** alarms become locally “triggered” to avoid repeated alerts but are not server-side deactivated.
- **Recurring** triggers repeatedly every time the threshold is crossed. - **Recurring** triggers repeatedly every time the threshold is crossed.
4. **RSS Feeds** 4. **RSS Feeds**
- Some feeds might be inaccessible in certain regions (`bitcoin_news` in Germany, for instance). - Some feeds might be inaccessible in certain regions (`bitcoin_news` in Germany, for instance).
- Economic Calendar content is loaded from an `<iframe>` pointing to Investing.com. - Economic Calendar content is loaded from an `<iframe>` pointing to Investing.com.
--- ---
&nbsp;
## Coming Soon ## Coming Soon
Exciting new features and improvements are on the way! Here are some planned updates: Exciting new features and improvements are on the way! Here are some planned updates:
- **Portfolio Management**: Track your crypto holdings in real-time with easy-to-read analytics. - **Portfolio Management**: Track your crypto holdings in real-time with easy-to-read analytics.
- **Windows Notification App**: A lightweight Windows application to receive price alerts and notifications directly on your desktop.
- **More Integrations**: Expanding support for additional exchanges and data sources. - **More Integrations**: Expanding support for additional exchanges and data sources.
- **Automatic alarm in the event of a sharp price drop of 10% within 1 hour**
- **HodlEye Notify Alarm with various sound selections and HodlEye Alarms**
Stay tuned for updates! Stay tuned for updates!
---
--- ---
&nbsp;
## Privacy & Data Disclaimer ## Privacy & Data Disclaimer
- **No Data Collection by This Application**: HodlEye itself does not collect, store, or process any personal data or usage analytics. - **No Data Collection by This Application**: HodlEye itself does not collect, store, or process any personal data or usage analytics.
- **External Services**: Certain features (e.g., news feeds, iframes) rely on third-party websites or APIs. We do not control and are not responsible for the data-collection practices or privacy policies of these external providers. Please refer to the privacy policies of those services for details. - **External Services**: Certain features (e.g., news feeds, iframes) rely on third-party websites or APIs. We do not control and are not responsible for the data-collection practices or privacy policies of these external providers. Please refer to the privacy policies of those services for details.
--- ---
&nbsp;