Skip to content

NEU-DataVerse/Smart-Forecast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

437 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Smart Forecast Logo

Nền tảng giám sát và cảnh báo môi trường đô thị thông minh

"Khi dữ liệu mở trở thành cảnh báo sớm cho cộng đồng"

License: MIT Version OLP 2025

Node.js NestJS Next.js Expo Docker FIWARE NGSI-LD

Documentation API Swagger Web Dashboard Download Android App


📋 Mục Lục


🎯 Giới thiệu

Smart Forecast là nền tảng giám sát và cảnh báo môi trường đô thị thông minh, được phát triển hướng tới hỗ trợ chuyển đổi số cho các thành phố hiện đại.

Dự án tham gia cuộc thi OLP'2025 – Ứng dụng dữ liệu mở liên kết phục vụ chuyển đổi số, tuân thủ chuẩn NGSI-LD và sử dụng Smart Data Models của FIWARE.

🌟 Ý tưởng cốt lõi

Smart Forecast thu thập dữ liệu chất lượng không khí (Air Quality)thời tiết (Weather) từ các nguồn mở như OpenWeatherMap, sau đó:

  • Phân tích, hiển thị và cảnh báo tự động khi vượt ngưỡng
  • Cho phép quản lý gửi cảnh báo thiên tai, xem báo cáo và thống kê
  • Cho phép người dân nhận thông báo và gửi báo cáo sự cố (ngập lụt, cây đổ, sạt lở...) kèm vị trí GPS và ảnh

✨ Tính năng

📱 Ứng dụng di động (Citizen App)

Chức năng Mô tả
C1 Đăng nhập / Đăng ký Xác thực JWT với Google OAuth2
C2 Xem dữ liệu môi trường Hiển thị AQI, PM2.5, nhiệt độ, độ ẩm theo vị trí GPS
C3 Bản đồ đô thị (Live Map) Bản đồ cảnh báo sự cố
C4 Nhận cảnh báo tự động Push Notification qua Firebase Cloud Messaging
C5 Gửi báo cáo sự cố Chụp ảnh, chọn loại sự cố, nhập mô tả, gửi vị trí
C6 Lịch sử cảnh báo & báo cáo Theo dõi các cảnh báo và sự cố đã gửi

🖥️ Dashboard quản trị (Admin Web)

Chức năng Mô tả
A1 Đăng nhập quản trị Phân quyền Admin/Manager
A2 Theo dõi thời gian thực Bản đồ cảm biến, biểu đồ AQI, nhiệt độ, thời tiết
A3 Quản lý báo cáo sự cố Xem, xác nhận, gán trạng thái xử lý
A4 Gửi cảnh báo đô thị Soạn và gửi cảnh báo tự động đến người dân qua FCM
A5 Xuất báo cáo Export thống kê PDF/CSV theo tháng, quý, năm

📸 Screenshots

🖥️ Web Dashboard

Dashboard

Trang Dashboard tổng quan - Hiển thị thông tin trạm, cảnh báo, sự cố và chỉ số AQI

Alerts Management Incidents Management

Quản lý cảnh báo (trái) và Quản lý sự cố (phải)

Map Alerts Map Incidents

Bản đồ cảnh báo (trái) và Bản đồ sự cố (phải)

Charts History Charts

Biểu đồ dữ liệu môi trường và lịch sử

Stations Compare Stations

Danh sách trạm quan trắc và so sánh dữ liệu giữa các trạm

📱 Mobile App

Onboarding 1 Onboarding 2 Onboarding 3 Login Google

Màn hình giới thiệu ứng dụng và Đăng nhập Google

Home Screen 1 Home Screen 2 Incident 1 Incident 2

Màn hình chính và Báo cáo sự cố

Map Alert 1 Map Alert 2 Notification Profile

Bản đồ cảnh báo, Thông báo và Hồ sơ cá nhân

🎬 Demo Video

🎥 Video demo sẽ được cập nhật sau

🔐 Demo Credentials

Documentation API Swagger Web Dashboard Download Android App

Web Dashboard (Admin)

Mobile App

  • Tải App Android từ badge ở trên
  • Đăng nhập bằng tài khoản Google

🏗️ Kiến trúc hệ thống

Smart Forecast Architecture Diagram

Sơ đồ kiến trúc tổng quan hệ thống Smart-Forecast

Smart Forecast Architecture Detail

                    ┌─────────────────────────────────────────┐
                    │              DATA SOURCES               │
                    │         (OpenWeatherMap APIs)           │
                    └─────────────────┬───────────────────────┘
                                      │
                                      ▼
┌─────────────────┐     ┌─────────────────────────────────────┐
│   Mobile App    │     │           Backend (NestJS)          │
│   (Expo RN)     │◄───►│  • Data Ingestion (NGSI-LD)         │
└─────────────────┘     │  • Alert Management                 │
                        │  • Incident Reports                 │
┌─────────────────┐     │  • Push Notifications (FCM)         │
│  Web Dashboard  │◄───►│  • REST API                         │
│   (Next.js)     │     └─────────────────┬───────────────────┘
└─────────────────┘                       │
                            ┌─────────────┼─────────────┐
                            │             │             │
                       ┌────▼────┐    ┌───▼────┐    ┌───▼────┐
                       │ Orion   │    │Postgres│    │ MinIO  │
                       │   -LD   │    │   DB   │    │Storage │
                       └────┬────┘    └────────┘    └────────┘
                            │
                       ┌────▼────┐
                       │ MongoDB │
                       └─────────┘

📦 Cấu trúc Monorepo

smart-forecast/
├── backend/        # NestJS API Server
├── web/            # Next.js Admin Dashboard
├── mobile/         # Expo React Native App
├── shared/         # Shared TypeScript Models & Constants
├── docs-site/      # Docusaurus Documentation
├── docker-compose.yml
└── pnpm-workspace.yaml

🔄 Luồng Người Dùng (User Flow)

User Flow Diagram

Sơ đồ luồng tương tác giữa Người dùng (Mobile) và Quản lý (Web Portal)

Luồng chính:

  1. Thu thập dữ liệu: Từ trạm quan trắc và OpenWeatherMap API
  2. Phân tích & Giám sát: Quản lý theo dõi trên Web Dashboard
  3. Phát hiện sự cố: Người dân gửi báo cáo từ Mobile App
  4. Xử lý & Cảnh báo: Quản lý tạo cảnh báo cho vùng ảnh hưởng
  5. Thông báo: Người dân nhận Push Notification và xem trên bản đồ

🛠️ Tech Stack

Thành phần Công nghệ
Backend NestJS TypeScript
Web Frontend Next.js Tailwind CSS
Mobile App Expo React Native
Context Broker FIWARE Orion-LD (NGSI-LD)
Databases PostgreSQL MongoDB
Object Storage MinIO (S3-compatible)
Notifications Firebase Cloud Messaging
Data Source OpenWeatherMap API
Containerization Docker Docker Compose
Package Manager pnpm Monorepo Workspace

🚀 Cài đặt nhanh

Yêu cầu hệ thống

  • Docker >= 20.10
  • Docker Compose >= 2.0
  • Node.js >= 18.x (cho development)
  • pnpm >= 8.x

Quick Start (3 bước)

# 1️⃣ Clone repository
git clone https://github.com/NEU-DataVerse/Smart-Forecast.git
cd Smart-Forecast

# 2️⃣ Copy file môi trường
cp .env.example .env
cp backend/.env.example backend/.env
# Chỉnh sửa các API keys trong backend/.env

# 3️⃣ Khởi động tất cả services
docker compose up -d

Truy cập các dịch vụ

Dịch vụ URL Mô tả
Backend API http://localhost:8000/api/v1 REST API & Swagger Docs
Web Dashboard http://localhost:3000 Admin Dashboard
Orion-LD http://localhost:1026 Context Broker
MinIO Console http://localhost:9001 Object Storage UI

Development Mode

# Cài đặt dependencies
pnpm install

# Build shared package
pnpm run build:shared

# Chạy backend development
pnpm run dev:backend

# Chạy web development
pnpm run dev:web

# Chạy mobile (Expo)
pnpm run dev:mobile

📖 Chi tiết hơn? Xem QUICKSTART.md hoặc Tài liệu đầy đủ


📚 Tài liệu

Tài liệu Mô tả
QUICKSTART.md Hướng dẫn cài đặt nhanh
CHEATSHEET.md Các lệnh thường dùng
CONTRIBUTING.md Hướng dẫn đóng góp
CHANGELOG.md Lịch sử thay đổi

Tài liệu chi tiết

🌐 Xem tài liệu đầy đủ tại https://neu-dataverse.github.io/Smart-Forecast/

Nội dung bao gồm:

  • Kiến trúc hệ thống (Architecture)
  • Hướng dẫn triển khai (Deployment)
  • API Documentation
  • Data Models (NGSI-LD)
  • Hướng dẫn sử dụng

🤝 Đóng góp

Chúng tôi hoan nghênh mọi đóng góp! Xem CONTRIBUTING.md để biết thêm chi tiết.

# Fork repo → Tạo branch → Commit → Push → Pull Request
git checkout -b feat/amazing-feature
git commit -m "feat: add amazing feature"
git push origin feat/amazing-feature

👥 Team NEU-DataVerse

Khải
Khải (Mkhai205)

PM, Backend, Frondend, DevOps
Đạt
Đạt (NGUYENTHANHDATHH)

Frontend
Bích
Bích (BichCan)

Design UI, Docs

📄 License

Dự án được phân phối dưới giấy phép MIT License. Xem file LICENSE để biết thêm chi tiết.


Nhóm NEU-DataVerse – OLP'2025
🌍 Smart Forecast – Khi dữ liệu mở trở thành cảnh báo sớm cho cộng đồng