Real-time China-focused intelligence dashboard β aggregating news, weather forecasts, and stock market data in a unified interface.
- Live News Aggregation - Curated China-related news from Google News + SCMP (6 items per batch, rotates every 30s)
- Weather Forecasts - 3-day forecasts for 34 Chinese provinces (9 cities per batch, rotates every 30s)
- Real-time Stock Prices - A-Shares, H-Shares, and T-Shares via TradingView widgets
- Cross Rates - G7 & BRICS currency exchange rates (CNY, HKD, TWD, USD focus)
- Beijing Time Display - Current time in China (UTC+8)
- Dark/Light Theme - Auto-switch based on local time (7:00-19:00) or manual toggle
- Responsive Design - Desktop-optimized with mobile warnings
Visit chinamonitor.app
- Framework: Vanilla TypeScript + Vite
- Fonts: DSEG7/DSEG14/DSEG Weather (digital tube style)
- Icons: Font Awesome 6.5.0
- Build Tool: Vite 6.4.1
- Runtime: Node.js
- News API: Express + RSS Parser (Port 3100)
- Weather API: Express + better-sqlite3 (Port 3101)
- Database: SQLite
- News: Google News + SCMP (South China Morning Post)
- Weather: wttr.in + NMC (National Meteorological Center of China)
- Stocks & Forex: TradingView Widgets
- Live Video: YouTube Embedded Player
china-monitor/
βββ src/
β βββ main.ts # Main entry point
β βββ styles.css # Global styles
β βββ api/
β β βββ client.ts # API client
β β βββ health-check.ts # Health check
β βββ ui/
β β βββ clock.ts # Clock display
β β βββ theme.ts # Theme switching
β β βββ live-news.ts # News list
β β βββ weather-forecast.ts # Weather forecast (batch rotation)
β β βββ header-weather.ts # Header weather (IP-based)
β β βββ stock-ticker.ts # Stock ticker
β β βββ cross-rates.ts # Forex cross rates
β β βββ youtube-player.ts # YouTube player
β β βββ footer.ts # Footer
β β βββ view-counter.ts # View counter
β β βββ mobile-warning.ts # Mobile warning
β βββ utils/
β βββ images.ts # Image utilities
βββ news-api/
β βββ src/
β β βββ server.js # News API server
β β βββ cache.js # RSS cache
β βββ hourly-fetch.sh # Hourly fetch cron
βββ weather-nmc/
β βββ src/
β β βββ api-server.js # Weather API server
β β βββ fetcher.js # Weather fetcher
β βββ fetch-weather.sh # Weather fetch cron
βββ public/
β βββ index.html # Main page
β βββ about.html # About page
β βββ maintenance.html # Maintenance page
β βββ robots.txt # SEO robots
β βββ sitemap.xml # SEO sitemap
β βββ fonts/ # DSEG fonts
βββ dist/ # Build output
βββ db/ # SQLite database
βββ start.sh # Start services
βββ stop.sh # Stop services
βββ package.json
βββ tsconfig.json
βββ vite.config.ts
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/ClawFighter/ChinaMonitor.git
cd china-monitor
# Install dependencies
npm install
# Download DSEG fonts (required for digital display)
bash download-fonts.sh# Start development server (Vite)
npm run dev
# In separate terminals, start backend APIs:
cd news-api && node src/server.js
cd ../weather-nmc && node src/api-server.js# Build for production
npm run build
# Serve production build
npm run preview# Start all services (production)
bash start.sh
# Stop all services
bash stop.sh# News: Fetch every hour
0 * * * * /path/to/china-monitor/news-api/hourly-fetch.sh
# Weather: Fetch every 6 hours (0:00, 6:00, 12:00, 18:00)
0 */6 * * * /path/to/china-monitor/weather-nmc/fetch-weather.sh- Auto: 7:00-19:00 local time β Light theme, otherwise Dark theme
- Manual: Click theme toggle button in header
Weather forecasts rotate every 30 seconds (9 cities per batch):
- Batch 1: Cities 1-9
- Batch 2: Cities 10-18
- Batch 3: Cities 19-27
- Batch 4: Cities 28-34
- Then loops back to Batch 1
GET /api/news?limit=50
GET /api/news/category/:category
GET /api/news/region/:region
GET /health
GET /api/weather?limit=100
GET /health
This project uses DSEG Fonts by keshikan.net:
- DSEG7: Numeric displays (clock, temperature)
- DSEG14: Titles and headers
- DSEG Weather: Weather icons (numeric codes 1-9)
Download from: https://www.keshikan.net/fonts-e.html
AGPL-3.0 β see LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Inspired by World Monitor
- Weather data from wttr.in
- Stock data from TradingView
- DSEG Fonts by keshikan.net
For questions or feedback: bizcwen@gmail.com
Built with β€οΈ for real-time China monitoring
