{"id":21689540,"url":"https://github.com/akshatdalton/os-webserver","last_synced_at":"2026-06-17T21:01:44.006Z","repository":{"id":104726461,"uuid":"424935797","full_name":"akshatdalton/OS-WebServer","owner":"akshatdalton","description":"A simple multi-threaded webserver to illustrate the use of process scheduling and synchronisation and other OS concepts.","archived":false,"fork":false,"pushed_at":"2021-11-22T18:01:57.000Z","size":28506,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-20T12:53:13.438Z","etag":null,"topics":["algorithms","first-in-first-out","network-server","networking","operating-system","scheduling","synchronization","thread","thread-pool"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/akshatdalton.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":"2021-11-05T12:11:11.000Z","updated_at":"2021-11-22T18:01:59.000Z","dependencies_parsed_at":"2023-07-16T13:22:34.207Z","dependency_job_id":null,"html_url":"https://github.com/akshatdalton/OS-WebServer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akshatdalton/OS-WebServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshatdalton%2FOS-WebServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshatdalton%2FOS-WebServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshatdalton%2FOS-WebServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshatdalton%2FOS-WebServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akshatdalton","download_url":"https://codeload.github.com/akshatdalton/OS-WebServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshatdalton%2FOS-WebServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34465322,"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-06-17T02:00:05.408Z","response_time":127,"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":["algorithms","first-in-first-out","network-server","networking","operating-system","scheduling","synchronization","thread","thread-pool"],"created_at":"2024-11-25T17:26:41.503Z","updated_at":"2026-06-17T21:01:43.990Z","avatar_url":"https://github.com/akshatdalton.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HTMLFiddle\n\nA multithreaded online IDE for pair-programming built using Operating Systems concepts. \n\n# Instructions to Run\n\n## Running the server:\n\n1. Clone the repo.\n2. Run the `make` command.\n3. If you got no compilation errors then you can run `./web_server`.\n\n## Testing using ngrok:\n\n1. Run `./ngrok/ngrok http 18000`.\n2. Using the link obtained, head over to `\u003clink\u003e/mirror.html` to view the IDE.\n3. Enable autocompletion using `Ctrl+Space`.\n\n## Run unit tests:\n\n1. Run `python test_single_vs_multi.py` for comparison between single-threaded and multi-threaded server.\n2. Run `python test_multiple_reader.py` for simulating many readers.\n3. Run 'python write_test.py` for simulating many writers.\n4. Run `python read_write_test.py` for simulating cycles of readers and writers.\n\n# Exposed APIs:\n\n- `http://localhost:18000/` to view Reader-Writer.\n- `/reader?line_num={line_num}` api for reader to read line number: `line_num`.\n- `/writer?line_num={line_num}\u0026content={content}` for writer to edit the line number: `line_num` by `content`.\n- `/docs_writer?line_num={line_num}\u0026content={content}` same as above.\n- `/docs_reader` read all the content of the `data.txt` file.\n\n# Changes to make while editing the codebase\n\n1. Add the new file in `Makefile`, if any.\n2. Keep standard libraries in `*.h` header files.\n3. Use similar code format throughout the whole codebase (Use VS Code standard format support: `Ctrl + Shift + I`).\n4. Use meaningful variable names.\n5. Before pushing the code make sure your are on the upstream and avoid doing force push unless necessary.\n6. Add executable files (like `web_server`) in `.gitignore`.\n\n# Demo\n\n1. UI\n![UI](./demo/overall_UI.png)\n\n2. Autocomplete feature ans syntax highlighter\n![Ac](./demo/autocomplete.png)\n\n3. HTML execution output\n![op](./demo/output.png)\n\n\n## Contributors\n- [Akshat](https://github.com/akshatdalton)\n- [Tanmay Khabia](https://github.com/tkhabia)\n- [Dipanwita Guhathakurta](https://github.com/susiejojo)\n\nMade with ❤️️ as part of the course Algorithms and Operating Systems, Monsoon '21.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshatdalton%2Fos-webserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakshatdalton%2Fos-webserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshatdalton%2Fos-webserver/lists"}