{"id":51597144,"url":"https://github.com/ishanshrestha14/internet-speedmonitor","last_synced_at":"2026-07-11T19:33:37.139Z","repository":{"id":308546899,"uuid":"1033178880","full_name":"ishanshrestha14/internet-speedmonitor","owner":"ishanshrestha14","description":"A full-stack internet speed monitoring system that tracks your internet speed every 10 minutes and visualizes the data on a React dashboard.","archived":false,"fork":false,"pushed_at":"2025-08-08T11:06:42.000Z","size":172,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-11T19:33:36.356Z","etag":null,"topics":["datascience","postgresql","python","react","typescript"],"latest_commit_sha":null,"homepage":"https://internet-speedmonitor.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ishanshrestha14.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-06T12:17:51.000Z","updated_at":"2025-08-31T12:10:06.000Z","dependencies_parsed_at":"2025-08-06T15:25:58.973Z","dependency_job_id":"25112a8b-0b0a-419d-8725-11ef94d75ea3","html_url":"https://github.com/ishanshrestha14/internet-speedmonitor","commit_stats":null,"previous_names":["pin3appl3ishan/internet-speedmonitor","ishanshrestha14/internet-speedmonitor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ishanshrestha14/internet-speedmonitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ishanshrestha14%2Finternet-speedmonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ishanshrestha14%2Finternet-speedmonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ishanshrestha14%2Finternet-speedmonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ishanshrestha14%2Finternet-speedmonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ishanshrestha14","download_url":"https://codeload.github.com/ishanshrestha14/internet-speedmonitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ishanshrestha14%2Finternet-speedmonitor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35374165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datascience","postgresql","python","react","typescript"],"created_at":"2026-07-11T19:33:36.627Z","updated_at":"2026-07-11T19:33:37.122Z","avatar_url":"https://github.com/ishanshrestha14.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Internet Speed Monitor**\n\nA **full-stack internet speed monitoring system** that tracks your internet speed every 10 minutes and visualizes the data on a React dashboard. Perfect for analyzing your ISP performance over time.\n\n## **🚀 Live Demo**\n\n**Try it now**: [**⚡ Internet Speed Monitor**](https://internet-speedmonitor-4lfbmj3kn-pin3appl3ishans-projects.vercel.app/)\n\n\u003e **Live deployment** featuring real-time data collection, interactive charts, and 24/7 automated monitoring!\n\n---\n\n## **📌 Features**\n\n- ✅ **Python Collector**: Automatically checks internet speed every 10 mins using Fast.com and stores results in a database.\n- ✅ **REST API (Node.js)**: Serves speed logs for custom date ranges (day, week, month).\n- ✅ **React Dashboard**: Interactive charts and statistics for daily, weekly, and monthly trends.\n- ✅ **Data Points**: Download speed, upload speed, latency, timestamp.\n- ✅ **Future Enhancements**: Real-time monitoring, system tray app.\n\n---\n\n## **📂 Project Structure**\n\n```\ninternet-speed-monitor/\n│\n├── collector/                # Python service (data collector)\n│   ├── speed_tracker.py\n│   ├── requirements.txt\n│   └── README.md\n│\n├── backend/                  # REST API service\n│   ├── src/\n│   │   ├── index.js          # Express server entry\n│   │   ├── routes/\n│   │   │   └── speedRoutes.js\n│   │   ├── controllers/\n│   │   │   └── speedController.js\n│   │   ├── models/\n│   │   │   └── SpeedLog.js\n│   │   └── db.js             # Database connection\n│   ├── package.json\n│   ├── .env\n│   └── README.md\n│\n├── frontend/                 # React TypeScript dashboard\n│   ├── src/\n│   │   ├── components/\n│   │   │   ├── Chart.tsx\n│   │   │   ├── Filters.tsx\n│   │   │   └── StatsCard.tsx\n│   │   ├── pages/Dashboard.tsx\n│   │   ├── App.tsx\n│   │   └── main.tsx\n│   ├── vite.config.ts\n│   ├── package.json\n│   └── README.md\n│\n└── README.md                 # Main documentation\n```\n\n---\n\n## **🛠 Tech Stack**\n\n### **Backend Services**\n\n- **🐍 Collector:** Python 3.11+ with `speedtest-cli`, `httpx`, `SQLAlchemy`\n- **🌐 API Server:** Node.js with Express, Sequelize ORM, rate limiting\n- **🗄️ Database:** SQLite (development) / PostgreSQL (production ready)\n\n### **Frontend**\n\n- **⚛️ Framework:** React 18 + TypeScript + Vite\n- **🎨 Styling:** TailwindCSS v3 with custom components\n- **📊 Charts:** Recharts with interactive tooltips and legends\n- **📅 Date Handling:** date-fns for smart time range calculations\n\n### **DevOps \u0026 Tools**\n\n- **🐳 Containerization:** Docker Compose for multi-service setup\n- **🔧 Development:** Hot reload, TypeScript checking, ESLint\n- **📝 Documentation:** Swagger/OpenAPI, Mermaid diagrams\n- **⚡ Performance:** Indexed database queries, response caching\n\n---\n\n## **🏗️ System Architecture**\n\n```mermaid\nflowchart TD\n    A[Python Collector] --\u003e|Every 10 mins| B[Speed Test APIs]\n    B --\u003e|Fast.com \u0026 Speedtest.net| C[Raw Speed Data]\n    C --\u003e|SQLAlchemy ORM| D[SQLite Database]\n\n    E[React Frontend] --\u003e|User Clicks Filter| F[Time Range Selection]\n    F --\u003e|API Request| G[Node.js Backend]\n    G --\u003e|Sequelize Query| D\n    D --\u003e|Filtered Results| H[Statistics Calculation]\n    H --\u003e|JSON Response| I[Frontend Charts]\n\n    subgraph \"Data Storage\"\n        D --\u003e|Table: speed_tests| J[\"\u003cbr/\u003e• id\u003cbr/\u003e• timestamp\u003cbr/\u003e• provider\u003cbr/\u003e• download_mbps\u003cbr/\u003e• upload_mbps\u003cbr/\u003e• latency_ms\u003cbr/\u003e• server\u003cbr/\u003e• raw_json\"]\n    end\n\n    subgraph \"Filter Logic\"\n        F --\u003e K[Today: startOfDay - endOfDay]\n        F --\u003e L[Week: startOfWeek - endOfWeek]\n        F --\u003e M[Month: startOfMonth - endOfMonth]\n        F --\u003e N[Custom: startDate - endDate]\n    end\n```\n\n## **⚙️ How It Works**\n\n### **🔄 Data Flow Process**\n\n1. **📊 Data Collection (Automated)**\n\n   - Python collector runs speed tests every 10 minutes\n   - Tests both Fast.com and Speedtest.net providers\n   - Stores results in SQLite database with timestamps\n\n2. **🌐 User Interaction**\n\n   - User selects time range filter (Today/Week/Month/Custom)\n   - Frontend sends API request to Node.js backend\n   - Backend queries database with date range filters\n\n3. **📈 Data Processing**\n   - Backend calculates statistics (avg, max, min speeds)\n   - Returns JSON response with filtered data\n   - Frontend renders interactive charts and stats cards\n\n### **🛠 API Endpoints**\n\n| Endpoint                                                              | Description         | Example                            |\n| --------------------------------------------------------------------- | ------------------- | ---------------------------------- |\n| `GET /api/speed?range=day`                                            | Today's speed tests | All tests from 00:00 - 23:59 today |\n| `GET /api/speed?range=week`                                           | This week's data    | Monday to Sunday current week      |\n| `GET /api/speed?range=month`                                          | This month's data   | 1st to last day of current month   |\n| `GET /api/speed?range=custom\u0026startDate=YYYY-MM-DD\u0026endDate=YYYY-MM-DD` | Custom date range   | User-selected period               |\n\n### **📊 Database Schema**\n\n```sql\nCREATE TABLE speed_tests (\n    id INTEGER PRIMARY KEY,\n    timestamp DATETIME NOT NULL,\n    provider VARCHAR(32) NOT NULL,     -- 'fast.com' or 'speedtest.net'\n    server VARCHAR(128),               -- Server location\n    download_mbps FLOAT NOT NULL,      -- Download speed\n    upload_mbps FLOAT NOT NULL,        -- Upload speed\n    latency_ms FLOAT NOT NULL,         -- Ping/latency\n    raw_json TEXT,                     -- Full test results\n    created_at DATETIME,\n    updated_at DATETIME\n);\n```\n\n---\n\n### **✨ Key Features**\n\n| Feature                     | Technology                     | Description                                           |\n| --------------------------- | ------------------------------ | ----------------------------------------------------- |\n| **🤖 Automated Collection** | Python + Asyncio               | Runs speed tests every 10 minutes automatically       |\n| **📊 Real-time Dashboard**  | React + TypeScript             | Interactive charts with live data updates             |\n| **🎨 Modern UI**            | TailwindCSS + Recharts         | Beautiful, responsive design with smooth animations   |\n| **⚡ Fast API**             | Node.js + Express              | RESTful API with optimized database queries           |\n| **📱 Time Filters**         | Date-fns + SQL                 | Smart filtering: Today, Week, Month, Custom ranges    |\n| **📈 Statistics Engine**    | Sequelize ORM                  | Calculates averages, maximums, minimums automatically |\n| **🗄️ Efficient Storage**    | SQLite + Indexing              | Lightweight database with indexed timestamp queries   |\n| **🔒 Production Ready**     | Docker + Environment Variables | Containerized setup with proper configuration         |\n\n---\n\n## **📦 Installation**\n\n### **1. Clone the Repository**\n\n```bash\ngit clone https://github.com/Pin3appl3ishan/internet-speed-monitor.git\ncd internet-speed-monitor\n```\n\n### **2. Python Collector**\n\n```bash\ncd collector\npip install -r requirements.txt\npython speed_tracker.py\n```\n\n### **3. Backend**\n\n```bash\ncd backend\nnpm install\nnpm run dev\n```\n\n### **4. Frontend**\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n---\n\n## **📊 Visualization**\n\nThe dashboard shows:\n\n- **Daily trend** (hourly speed points)\n- **Weekly/Monthly trend** (aggregated view)\n- **Stats**: Avg Download, Avg Upload, Avg Latency\n\n---\n\n## **🔮 Future Enhancements**\n\n- [ ] Real-time updates with WebSockets\n- [ ] Push notifications for speed drops\n- [ ] Multi-user dashboard\n- [ ] Cloud deployment (Render/Heroku + Vercel)\n\n---\n\n## **API Example Response**\n\n```json\n{\n  \"range\": \"week\",\n  \"average_download\": 18.7,\n  \"average_upload\": 5.2,\n  \"data\": [\n    {\n      \"timestamp\": \"2025-07-22 14:30\",\n      \"download\": 18.3,\n      \"upload\": 5.1,\n      \"latency\": 35\n    },\n    {\n      \"timestamp\": \"2025-07-22 14:40\",\n      \"download\": 16.7,\n      \"upload\": 4.8,\n      \"latency\": 37\n    }\n  ]\n}\n```\n\nContributions are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fishanshrestha14%2Finternet-speedmonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fishanshrestha14%2Finternet-speedmonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fishanshrestha14%2Finternet-speedmonitor/lists"}