{"id":20287136,"url":"https://github.com/devcsrj/ispmon","last_synced_at":"2026-04-29T21:37:05.172Z","repository":{"id":51426239,"uuid":"207045183","full_name":"devcsrj/ispmon","owner":"devcsrj","description":"📈🔍Your persistent ISP bandwidth monitor","archived":false,"fork":false,"pushed_at":"2021-05-11T23:26:11.000Z","size":1206,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-14T08:24:16.310Z","etag":null,"topics":["bandwith","docker","graal-native","isp","monitoring-tool","vertx"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devcsrj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-08T01:19:02.000Z","updated_at":"2024-08-15T05:25:10.000Z","dependencies_parsed_at":"2022-09-25T01:21:54.501Z","dependency_job_id":null,"html_url":"https://github.com/devcsrj/ispmon","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcsrj%2Fispmon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcsrj%2Fispmon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcsrj%2Fispmon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcsrj%2Fispmon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devcsrj","download_url":"https://codeload.github.com/devcsrj/ispmon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241780497,"owners_count":20019061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bandwith","docker","graal-native","isp","monitoring-tool","vertx"],"created_at":"2024-11-14T14:38:26.735Z","updated_at":"2025-11-30T21:05:34.609Z","avatar_url":"https://github.com/devcsrj.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISPMON\n\n![GitHub](https://img.shields.io/github/license/devcsrj/ispmon)\n\nYour persistent ISP bandwidth monitor.\n\n![](img/home.png)\n\nAs a software engineer who relies on [managed dependencies](https://i.redd.it/tfugj4n3l6ez.png), the least of your \nconcerns SHOULD be the managed dependencies. This is not the case in the [country I am living in](https://www.rappler.com/technology/news/171680-philippines-akamai-broadband-adoption-internet-speed-rankings).\n\nI am currently subscribed to my [ISP's fiber connection offering](https://www.convergeict.com/fiber-x/). It promises \nno data cap, maxed at 25Mbps, but with a teeny tiny asterisk that says:\n\n\u003e 30% minimum speed at 80% service reliability.\n\nThen came that night, when our internet speed dropped down to 1Mbps. I could've tolerated it if it only \nhappened rarely. But it happened consistently at certain times of the day, and it made me realize that \nthey _might_ be throttling connections at **specified times of the day**.\n\nTo track that down (and soon nag about it), I started this project.\n\n## Running\n\nYou can download the jar from the [releases](https://github.com/devcsrj/ispmon/releases), and run it with:\n\n```shell script\n$ java -jar ispmon-1.0.0.jar\n```\n\nOr, if you're like me, who loves running applications on [Docker](https://www.docker.com):\n\n```shell script\n$ docker run -p 5000:5000 -t -d --name ispmon devcsrj/ispmon:1.0.0\n```\n\nConfiguration options below can be overridden with the `--env` argument. In addition, results \nare stored in a directory called `results`. To persists the results across container restarts, \nconfigure the volume. For example:\n\n```shell script\ndocker run -p 5000:5000 -t -d --volume /path/in/host:/opt/results --name ispmon devcsrj/ispmon:1.0.0\n```\n\n## Configuring\n\nThe application reads the following from the environment variables:\n\n* `ISPMON_INTERVAL=15` - (minutes) the interval at which, speed test should be done\n* `ISPMON_DURATION=30` - (seconds) the maximum time to conduct speed tests\n* `ISPMON_PORT=5000` - the port to run the web server\n* `TZ` - to set [the timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)\n\n---\n\n## Developing\n\n### Prerequisites\n\n- JDK 8\n\n**Tip**: Use [sdkman](https://sdkman.io/install).\n\n```shell script\n$ sdk install java 19.2.0-grl\n```\n\n### Backend\n\nTo run the server:\n\n```shell script\n$ ./gradlew run\n```\n\nIt will then start a server at port `5000`.\n\n### Frontend\n\nThe frontend resides under `src/main/frontend`. It also expects that the \nbackend is running at port [5000](src/main/frontend/webpack.config.js).\n\n```shell script\n$ cd src/main/frontend\n$ yarn run start\n```\n\nThis will start the webpack server at port `5001`.\n\n### Building\n\nTo build a `jar`:\n\n```shell script\n$ ./gradlew build\n```\n\nYou can then run this with `java -jar build/lib/ispmon-$version.jar`.\n\n---\n\n## FAQ\n\n* Have you tried switching to another ISP?\n\n    Well, there's another [ISP here](https://pldthome.com/fibr), but I'd argue it's not any better. At \n    work, I ran `ispmon` to see the results for comparison. I am staggered:\n\n![](img/work.png)\n\n* Did you really have to go this far?\n\n    I also needed an excuse to play with new shiny things. This is my first project that involved:\n    \n    - ~~The ultra-fast and lean Vertx~~\n    - The coroutine-powered [Ktor](https://ktor.io)\n    - The well-loved [React](https://reactjs.org)\n    - The smart bundler [webpack](https://webpack.js.org)\n    - ~~and the bleeding edge Graal Native Image~~\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcsrj%2Fispmon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevcsrj%2Fispmon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcsrj%2Fispmon/lists"}