{"id":20373271,"url":"https://github.com/tntmeijs/plain","last_synced_at":"2026-06-01T03:31:57.653Z","repository":{"id":61928950,"uuid":"546811017","full_name":"tntmeijs/plain","owner":"tntmeijs","description":"A simple webbrowser built completely from scratch.","archived":false,"fork":false,"pushed_at":"2023-08-06T10:20:43.000Z","size":268,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-09T15:22:26.089Z","etag":null,"topics":["computer-graphics","cpp","network-programming","vulkan","webbrowser","winsock"],"latest_commit_sha":null,"homepage":"","language":"C++","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/tntmeijs.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":"2022-10-06T17:27:37.000Z","updated_at":"2024-05-24T02:46:20.000Z","dependencies_parsed_at":"2025-01-15T05:44:31.455Z","dependency_job_id":"0a0dfc87-b7c1-4814-8f11-184a38624b13","html_url":"https://github.com/tntmeijs/plain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tntmeijs/plain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tntmeijs%2Fplain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tntmeijs%2Fplain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tntmeijs%2Fplain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tntmeijs%2Fplain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tntmeijs","download_url":"https://codeload.github.com/tntmeijs/plain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tntmeijs%2Fplain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33759178,"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-01T02:00:06.963Z","response_time":115,"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":["computer-graphics","cpp","network-programming","vulkan","webbrowser","winsock"],"created_at":"2024-11-15T01:17:31.852Z","updated_at":"2026-06-01T03:31:57.636Z","avatar_url":"https://github.com/tntmeijs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plain\nWelcome to the Plain project!\n\nPlain is an educational project to learn more about how webbrowsers work.\nEveryone has used webbrowsers, yet only a small number of people *really* know how they work.\n\nMultiple decades worth of research have gone into the likes of [Google Chrome](https://www.google.com/chrome/), [Mozilla FireFox](https://www.mozilla.org/en-US/firefox/), or [Microsoft Edge](https://www.microsoft.com/en-us/edge).\nPlain will realistically never even come close to the commercial webbrowsers.\n\nHowever, you will be able to navigate the web using Plain!\n\n# Third-party libraries and SDKs\nWriting a webbrowser from scratch is a lot of work.\nTo avoid spending a lot of time writing literally *everything* from scratch, Plain depends on a few third-party libraries and SDKs:\n- [Vulkan](https://www.vulkan.org/): Next-generation API for 3D graphics and computing (could be seen as a \"successor\" to [OpenGL](https://www.opengl.org/)).\n- [Spdlog](https://github.com/gabime/spdlog) ([MIT](https://github.com/gabime/spdlog/blob/v1.x/LICENSE)): Very fast, header-only/compiled, C++ logging library.\n- [GLM](https://github.com/g-truc/glm) ([MIT](https://github.com/g-truc/glm/blob/master/copying.txt)): Header only C++ mathematics library.\n- [GLFW](https://github.com/glfw/glfw) ([Zlib](https://github.com/glfw/glfw/blob/master/LICENSE.md)): A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.\n\nThis project would not have been possible without the help of these awesome libraries. ♥\n\n# Development log\n## 30\u003csup\u003eth\u003c/sup\u003e of July 2023\n- After a busy period at work, I finally found some time again to pick up this project.\n- Put together Vulkan boilerplate code to render a triangle to the screen.\n  ![hello vulkan triangle](media/20230730_hello_vulkan_triangle.png)\n\n## 1\u003csup\u003est\u003c/sup\u003e of January 2023\n- Added queue family discovery.\n- Added logical device creation.\n\n## 20\u003csup\u003eth\u003c/sup\u003e of December 2022\n- Added physical device (GPU) selection.\n\n## 11\u003csup\u003eth\u003c/sup\u003e of December 2022\n- Added Vulkan instance creation.\n- Added Vulkan extension and validation layer configuration.\n\n## 23\u003csup\u003erd\u003c/sup\u003e of October 2022\n- Created graphics project.\n- Added window creation.\n  ![window creation](media/20221023_window_creation.png)\n\n## 22\u003csup\u003end\u003c/sup\u003e of October 2022\n- Implemented very basic HTTP/1.1 protocol.\n- Added logging to make it easier to debug the application.\n- Managed to receive a valid response from a website.\n  ![valid HTTP/1.1 response](media/20221022_valid_http_1_1_response.png)\n\n## 8\u003csup\u003eth\u003c/sup\u003e of October 2022\n- Created TCP socket abstraction layer for [WinSock](https://en.wikipedia.org/wiki/Winsock).\n\n## 6\u003csup\u003eth\u003c/sup\u003e of October 2022\n- Started working on Plain.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftntmeijs%2Fplain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftntmeijs%2Fplain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftntmeijs%2Fplain/lists"}