An open API service indexing awesome lists of open source software.

https://github.com/ajcuddeback/nimbus

A weather statistics application
https://github.com/ajcuddeback/nimbus

ai angular java langchain4j mongodb spring-boot spring-webflux

Last synced: 5 months ago
JSON representation

A weather statistics application

Awesome Lists containing this project

README

          

# ๐ŸŒฉ๏ธ Nimbus โ€” Real-Time Weather Station Platform

> A full-stack weather monitoring system that streams data from a physical Raspberry Pi sensor to a cloud-hosted application using MQTT, Spring WebFlux, MongoDB, and Angular SSR.

---

## ๐Ÿ›ฐ๏ธ Overview

Nimbus collects minute-by-minute atmospheric data from a custom-built weather station (running on a Raspberry Pi), ingests the data over MQTT into a reactive Java backend, stores it in MongoDB, and renders it in real-time via an Angular SSR frontend deployed on a virtual machine with NGINX.

![architecture](./docs/architecture.jpg)

---

## โš™๏ธ Tech Stack

| Layer | Technology |
|--------------|-----------------------------------------|
| IoT Sensor | Raspberry Pi, Python, BME280 |
| Messaging | MQTT (Mosquitto broker) |
| Backend | Java, Spring WebFlux, Reactor, MongoDB |
| Frontend | Angular (SSR with hydration), ngx-charts |
| Deployment | Ubuntu VM, NGINX, PM2 |

---

## ๐ŸŒ Live Demo

๐Ÿ”— [https://nimbus-weather-project.com](https://nimbus-weather-project.com)

---

## ๐Ÿ”ง Features

- **Real-time streaming** from Raspberry Pi over MQTT
- **Reactive backend** using Spring WebFlux and Reactor
- **Minute-by-minute ingestion** into MongoDB
- **Historical charting** by metric and time
- **SSR-enabled Angular UI** for SEO & fast load
- **Self-hosted on a virtual machine** using NGINX

---

## ๐Ÿงช Local Dev Setup

### Note
You must have a raspberry pi running the code from https://github.com/ajcuddeback/nimbus-pi.git and a MongoDB instance

```bash
# clone repo
git clone https://github.com/ajcuddeback/nimbus.git
cd nimbus

# Setup backend
cd weatherapi/weatherapi
./mvnw spring-boot:run

# Setup frontend
cd ../../app
npm install
npm run dev:ssr