{"id":23302122,"url":"https://github.com/pujansrt/dashboard","last_synced_at":"2025-07-19T08:08:46.156Z","repository":{"id":127199333,"uuid":"107005329","full_name":"pujansrt/dashboard","owner":"pujansrt","description":"Python and Websocket based Dashboard to display System Information. Implementation utilizes Vagrant and virtual machine.","archived":false,"fork":false,"pushed_at":"2024-05-23T09:36:22.000Z","size":2084,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-23T09:55:14.750Z","etag":null,"topics":["flask","puppet","python","vagrant","websockets"],"latest_commit_sha":null,"homepage":"","language":"Python","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/pujansrt.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-15T11:13:17.000Z","updated_at":"2024-05-23T09:36:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"626781ea-7ba5-4489-998b-f10117ea1c93","html_url":"https://github.com/pujansrt/dashboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pujansrt/dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pujansrt%2Fdashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pujansrt%2Fdashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pujansrt%2Fdashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pujansrt%2Fdashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pujansrt","download_url":"https://codeload.github.com/pujansrt/dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pujansrt%2Fdashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265904329,"owners_count":23846675,"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":["flask","puppet","python","vagrant","websockets"],"created_at":"2024-12-20T10:18:47.758Z","updated_at":"2025-07-19T08:08:46.115Z","avatar_url":"https://github.com/pujansrt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Introduction\n\n\u003cimg src=\"docs/00.gif\" width=\"600\"\u003e\n\nDashboard has two parts - \n\n1. Live Data ( CPU, Memory, Disk) - Live updates are served via websockets at regular intervals\n2. Static Data (Name, IP, OS etc) - This is fetched once.\n\n\n## Architecture\n\n\u003cimg src=\"docs/arch.png\" width=\"400\" align=\"right\" vspace=\"10\"\u003e\n\nSystem information computation is expensive. It becomes really cumbersome when large number of users fetch on-demand. \n\nTo avoid this problem, websocket is used to send updates from server to each users once there is change in the server resources. \n\nOnly one worker thread does computations which in turn pushes dynamic results to the connected users.\n\n\n### Components\n\nAll components of the whole architecture are as follows\n\n1. Users - HTML5 Browsers\n2. Nginx Server - reverse proxy for Flask Server\n3. Flask Server - Python webserver with webscoket capability\n4. Worker Thread - part of Flask server, it updates users via websockets\n\n### Communication Protocol\nHTTP and Websockets\n\n### Logging the events\nAccess and errors logs are handled at flask server. \n\n* Log Rotation Policy\n* File as well as console logs\n\n\nPlease see logging.conf and app.log for more details.\n\n## Run\n\n### Pre-requisite\nVagrant, Browser (HTML5), Terminal\n\n### How to run\n1. Download or Git clone Project from https://github.com/pujansrt/dashboard\n\n\t```\n\tgit clone https://github.com/pujansrt/dashboard.git\n\t```\n2. Inside the project (cd dashboard), issue the following command \n\n\t```\n\tvagrant up\n\tBringing machine 'default' up with 'virtualbox' provider...\n\t==\u003e default: Importing base box 'hashicorp/bionic64'...\n\t==\u003e default: Matching MAC address for NAT networking...\n\t==\u003e default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date...\n\t==\u003e default: Setting the name of the VM: dashboard_default_1716456758433_83578\n\t==\u003e default: Clearing any previously set network interfaces...\n\t==\u003e default: Preparing network interfaces based on configuration...\n    \tdefault: Adapter 1: nat\n\t==\u003e default: Forwarding ports...\n    \tdefault: 80 (guest) =\u003e 8000 (host) (adapter 1)\n    \tdefault: 22 (guest) =\u003e 2222 (host) (adapter 1)\n\t==\u003e default: Booting VM...\n\t```\n\twhile it may take several minutes to prepare, you may grab a cup of coffee or tea\n\t\n3. Launch Browser [http://localhost:8000](http://localhost:8000) it should launch dashboard as shown previsouly\n\n\n## Outcome\nAcquired knowledge in the following topics\n\n* Puppet DSL\n* Automation of applications\n* Vagrant\n* Flask SocketIO\n\n\n\u003c!-- ## Future Improvements --\u003e\n\n\n## References\n1. [https://www.vagrantup.com](https://www.vagrantup.com)\n2. [https://www.puppet.com](https://www.puppet.com)\n3. [http://flask.pocoo.org](http://flask.pocoo.org)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpujansrt%2Fdashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpujansrt%2Fdashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpujansrt%2Fdashboard/lists"}