Skip to content

SIU-Sirocco-2025/Eco-Track

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eco-Track Logo

Eco-Track 🌿

Hệ Thống Theo Dõi & Dự Đoán Chất Lượng Không Khí TP.HCM

"Theo dõi hôm nay để bảo vệ bầu trời ngày mai."

License: GPL-3.0

Demo System Documentation

📖 API Docs🗺 Bản đồ AQI📊 Dashboard Admin🚀 Release Guide🤝 Đóng Góp 📝 Changelog


📋 Tổng Quan

Eco-Track thu thập, chuẩn hoá và lưu trữ dữ liệu chỉ số ô nhiễm không khí (AQI) và thông tin thời tiết theo quận/huyện tại TP. Hồ Chí Minh.
Dữ liệu thời gian thực được lấy từ OpenAQ API v3 và lưu vào MongoDB để phân tích, trực quan hoá và dự đoán.

Hệ thống cho phép:

  • Hiển thị dashboard trực quan (biểu đồ, bản đồ, heatmap)
  • Truy vấn dữ liệu theo thời gian và khu vực
  • Phân tích xu hướng chất lượng không khí
  • Dự đoán AQI ngắn hạn (24 giờ) bằng mô hình ML

🏗️ Kiến Trúc & Công Nghệ

  • Backend: Node.js + Express
  • Database: MongoDB + Mongoose
  • Views: Pug (client & admin)
  • Frontend libs: Bootstrap 5, Leaflet.js, Chart.js
  • Scheduler: node-cron (thu thập OpenAQ theo giờ)
  • ML: Python (NumPy, Pandas, scikit-learn, PyTorch) gọi qua Node

Tham chiếu mã nguồn:

Lưu ý: Mọi tham chiếu AirVisual đã bị loại bỏ. Script cũ scripts/fetch-and-save.js không còn được khuyến nghị sử dụng.


✨ Tính Năng Chính

1) 📡 Thu Thập Dữ Liệu (OpenAQ v3)

  • Lấy dữ liệu cảm biến theo giờ của TP.HCM từ OpenAQ
  • Lưu raw giờ vào collection HCMCAirHour
  • Map và chuẩn hoá AQI cho từng quận

Script:

2) 🗃 Chuẩn Hoá & Lưu Trữ

3) 📊 Dashboard & UI

4) 🔮 Dự Đoán AQI 24h


🌐 API


🔧 Yêu Cầu Hệ Thống

  • Node.js >= 16.x, npm/yarn
  • MongoDB (local/Atlas)
  • Python 3.9+ nếu dùng dự đoán
  • Git

Biến môi trường (.env) mẫu:

PORT=3000
MONGODB_URL=<your-mongodb-url>

# OpenAQ API
OPENAQ_API_BASE=https://api.openaq.org/v3
OPENAQ_API_KEY=<your-openaq-api-key>
OPENAQ_FETCH_INTERVAL=0 * * * *
SYNC_INTERVAL_MINUTES=30

# Session
SESSION_SECRET=<your-secret>

# SMTP Email
EMAIL_USER=<your-email>
EMAIL_PASS=<your-app-password>

📥 Cài Đặt & Chạy

1) Cài đặt

git clone https://github.com/<your-username>/Eco-Track.git
cd Eco-Track
npm install

2) Chạy server

npm run dev
# hoặc
npm start

Mặc định: http://localhost:3000

3) Kết nối DB

4) Cron thu thập OpenAQ (tùy chọn)

node scripts/fetch-openaq-hours.js

5) Seed dữ liệu demo 72h (tùy chọn)

node scripts/seed-72h-data.js

📁 Cấu Trúc Thư Mục

  • config/ – Cấu hình hệ thống
  • controllers/ – Logic client, admin, api
  • models/ – Schema Mongoose (AQI, thời tiết, giờ, index)
  • routers/ – Định tuyến
  • views/ – Giao diện Pug
  • public/ – Tài nguyên tĩnh
  • scripts/ – Cron, seed, tiện ích
  • helpers/ – Python runner, kiểm tra deps

🔖 Release

  • Hướng dẫn chi tiết: xem RELEASE_GUIDE.md
  • Lịch sử thay đổi: xem CHANGELOG.md
  • Quick steps phát hành:
    1. Tăng version trong package.json và cập nhật CHANGELOG.md
    2. Commit: chore: release vX.Y.Z
    3. Tạo tag và đẩy lên Git:
      git tag vX.Y.Z
      git push origin vX.Y.Z
    4. Tạo GitHub Release, đính kèm nội dung từ CHANGELOG.md

🤝 Đóng Góp

git checkout -b feat/<ten-tinh-nang>
git commit -m "feat: <mo-ta-ngan-gon>"
git push -u origin feat/<ten-tinh-nang>

🐛 Báo Lỗi & Góp Ý


📄 Giấy Phép

Phân phối theo GNU GPL v3.0. Xem LICENSE.

© 2025 Eco-Track – Cùng xây dựng bầu không khí trong lành cho TP. Hồ Chí Minh 🌿