Skip to content

Commit 53eaa79

Browse files
authored
Update README.md
1 parent 8c397a2 commit 53eaa79

1 file changed

Lines changed: 43 additions & 37 deletions

File tree

README.md

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,69 +4,75 @@
44

55
It brings together **solar asset monitoring**, **simulations**, and **IBEX electricity market integration**. The platform uses a **centralized virtual battery system** and a **decoupled data API** to manage and optimize energy usage and trading.
66

7-
> ⚡ Created by **Deniz Ivanov**
8-
> 🎓 ASP.NET Advanced Final Project – June 2025 (SoftUni)
7+
> ⚡ Created by **Deniz Ivanov**
8+
> 🎓 ASP.NET Advanced Final Project – June 2025 (SoftUni)
99
> 📡 Market data powered by [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API)
1010
1111
---
1212

1313
## 🔍 Key Features
1414

1515
### ⚙️ Solar Asset Monitoring
16-
- Manage solar systems (Grid-Tied, Off-Grid, Hybrid)
17-
- Track real-time performance: generation, capacity, and efficiency
18-
- Use built-in simulation engine for forecasting and analysis
16+
17+
* Manage solar systems (Grid-Tied, Off-Grid, Hybrid)
18+
* Track real-time performance: generation, capacity, and efficiency
19+
* Use built-in simulation engine for forecasting and analysis
1920

2021
### 🔋 Virtual Battery Wallet (Energy-as-Currency)
22+
2123
All energy generated by a user’s solar assets is routed into a **shared virtual wallet**:
2224

23-
- Modeled as a **battery collection**, decoupled from the grid
24-
- Surplus energy is stored and shown as a **balance**
25-
- This balance can later be **sold like cryptocurrency** on the energy market
26-
- The energy is stored into batteries on one place
27-
- The electricity travels trough the grid into one place where is stored
28-
- Wallet capacity depends on user subscription plan (Small, Medium, Large)
25+
* Modeled as a **battery collection**, decoupled from the grid
26+
* Surplus energy is stored and shown as a **balance**
27+
* This balance can later be **sold like cryptocurrency** on the energy market
28+
* The energy is stored into batteries on one place
29+
* The electricity travels through the grid into one place where it is stored
30+
* Wallet capacity depends on user subscription plan (Small, Medium, Large)
2931

3032
### 📈 Smart Market Integration
31-
- Fetches **daily IBEX Day-Ahead prices** automatically
32-
- Calculates optimal hourly **trading targets** for each solar asset
33-
- Visualizes actual vs. target prices using **Chart.js**
34-
- Enables users to optimize profit by selling energy at peak hours
33+
34+
* Fetches **daily IBEX Day-Ahead prices** automatically
35+
* Calculates optimal hourly **trading targets** for each solar asset
36+
* Visualizes actual vs. target prices using **Chart.js**
37+
* Enables users to optimize profit by selling energy at peak hours
3538

3639
---
3740

3841
## 🛰 Powered by IBEX-Scraper-API
3942

40-
SunNext **does not scrape IBEX directly**.:
43+
SunNext **does not scrape IBEX directly**:
4144

42-
> [`IBEX-Scraper-API`](https://github.com/JacksonJS12/IBEX-Scraper-API) – An ASP.NET Core Web API that scrapes **IBEX Day-Ahead segment prices** and stores them in an Azure SQL database.
45+
> [`IBEX-Scraper-API`](https://github.com/JacksonJS12/IBEX-Scraper-API) – An ASP.NET Core Web API that scrapes **IBEX Day-Ahead segment prices** and stores them in a remote SQL Server database.
4346
4447
### 🧠 Why a Separate API?
45-
- **Decouples scraping logic** from the main platform
46-
- Ensures **secure**, **stable**, and **reusable** data access
47-
- Makes it easy to extend to other platforms or external tools
48+
49+
* **Decouples scraping logic** from the main platform
50+
* Ensures **secure**, **stable**, and **reusable** data access
51+
* Makes it easy to extend to other platforms or external tools
4852

4953
### 🔄 How It Works:
50-
- Scrapes **next-day hourly prices**
51-
- Triggered daily at **14:00 BG time** via **Azure Logic App**
52-
- Calls `POST /api/Scrape/scrape-and-save` only if new data
53-
- Stores data as:
54-
- `Date` (`dd/MM/yyyy`)
55-
- `Hour` (1–24 CET)
56-
- `PricePerMWh`
5754

58-
🔗 **Live API Docs:** [Swagger UI](http://ibex-scraper.somee.com/swagger/index.html)
55+
* Scrapes **next-day hourly prices**
56+
* Triggered daily at **14:00 BG time** via an **external scheduler** ([cron-job.org](https://cron-job.org))
57+
* Calls `POST /api/Scrape/scrape-and-save` only if new data is available
58+
* Stores data as:
59+
60+
* `Date` (`dd/MM/yyyy`)
61+
* `Hour` (1–24 CET/EET/EEST)
62+
* `PricePerMWh`
63+
64+
🔗 **Live API Docs:** [Swagger UI](http://ibex-scraper.somee.com/swagger/index.html) *(HTTP only – free hosting plan limitation)*
5965

6066
---
6167

6268
## 🧱 Tech Stack
6369

64-
| Layer | Technology |
65-
|--------------------|-------------------------------------------------|
66-
| Platform Backend | ASP.NET Core 8.0 MVC (based on [Nikolay Kostov’s Template](https://github.com/NikolayIT/ASP.NET-Core-Template)) |
67-
| Models | Data Models / Prototypes / ViewModels Separation |
68-
| Market Integration | [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API) |
69-
| Scraping | AngleSharp + Azure Logic App Scheduler |
70-
| Storage | Azure SQL + Local MS SQL + EF Core 8 |
71-
| UI & Charts | Bootstrap 5 + Chart.js |
72-
| Authentication | ASP.NET Identity with Roles |
70+
| Layer | Technology |
71+
| ------------------ | --------------------------------------------------------------------------------------------------------------- |
72+
| Platform Backend | ASP.NET Core 8.0 MVC (based on [Nikolay Kostov’s Template](https://github.com/NikolayIT/ASP.NET-Core-Template)) |
73+
| Models | Data Models / Prototypes / ViewModels Separation |
74+
| Market Integration | [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API) |
75+
| Scraping | AngleSharp + [cron-job.org](https://cron-job.org) Scheduler |
76+
| Storage | Remove SQL Db + Local MS SQL + EF Core 8 |
77+
| UI & Charts | Bootstrap 5 + Chart.js |
78+
| Authentication | ASP.NET Identity with Roles |

0 commit comments

Comments
 (0)