{"id":13743323,"url":"https://github.com/ZeroX-DG/moon","last_synced_at":"2025-05-09T01:30:41.476Z","repository":{"id":37406366,"uuid":"286609819","full_name":"ZeroX-DG/moon","owner":"ZeroX-DG","description":":earth_americas: :moon: A hobby web browser developed from scratch","archived":false,"fork":false,"pushed_at":"2024-01-18T11:27:13.000Z","size":2856,"stargazers_count":382,"open_issues_count":13,"forks_count":18,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-03T05:02:12.054Z","etag":null,"topics":["browser","browser-engine","dom","hobby-browser","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/ZeroX-DG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2020-08-11T00:48:25.000Z","updated_at":"2024-07-26T12:36:19.000Z","dependencies_parsed_at":"2024-08-03T05:02:03.397Z","dependency_job_id":"1e49bfd8-29c8-4bc9-92e8-b09c218b6b02","html_url":"https://github.com/ZeroX-DG/moon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroX-DG%2Fmoon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroX-DG%2Fmoon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroX-DG%2Fmoon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroX-DG%2Fmoon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZeroX-DG","download_url":"https://codeload.github.com/ZeroX-DG/moon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224796336,"owners_count":17371475,"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":["browser","browser-engine","dom","hobby-browser","rust"],"created_at":"2024-08-03T05:00:44.581Z","updated_at":"2024-11-15T14:31:10.835Z","avatar_url":"https://github.com/ZeroX-DG.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"./resources/logo.png\" /\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eMoon\u003c/h1\u003e\n\u003cp align=\"center\"\u003eA hobby web browser developed from scratch\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT License\" /\u003e\n  \u003ca href=\"https://webuild.community\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/webuild-community/badge/master/svg/by.svg\" alt=\"By Vietnamese\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## What is this?\n\nThis is a web browser developed from scratch using Rust. To fit with the \"make from scratch\" spirit, the development of the browser avoids the use of external libraries as much as possible.\n\n## Wanna try it out?\n\nFirst, make sure you have all the right dependencies installed:\n\n```\nsudo apt install build-essential cmake pkg-config libssl-dev mold\n```\n\nThen it's just as simple as:\n\n1. Clone the repository.\n2. Run `cargo run` and wait for the code to compile \u0026 execute.\n\nCheck out the [Getting Started Guide](./documentation/getting-started.md) for more advanced stuff.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./documentation/screenshot.png\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./documentation/screenshot_compare.png\" /\u003e\n  \u003cem\u003eRendering comparison between Moon \u0026 Firefox\u003c/em\u003e\n\u003c/p\u003e\n\n## Features\n\n- **HTML:** Spec-compliant HTML tokenizer, parser \u0026 DOM tree builder.\n- **CSS:** Spec-compliant CSS tokenizer, parser \u0026 CSSOM tree builder.\n- **Style processing:** Style cascading, style value computation, selector matching \u0026 render tree construction.\n- **Layout:** Flow layout (Block \u0026 Inline).\n- **Rendering:** GPU rendering \u0026 text rendering.\n- **Networking:** Spec-compliant URL parser.\n- **User Interface:** GTK-based browser UI.\n\n## Blog posts\n\nI write about what I learn from this journey on my blog (order by latest):\n\n- **Browser from Scratch: Layout** - [Read more][5]\n- **Browser from Scratch: CSS parsing \u0026 processing** - [Read more][4]\n- **Browser from Scratch: HTML parsing** - [Read more][3]\n- **Browser from Scratch: DOM API** - [Read more][2]\n- **Browser from Scratch: Introduction** - [Read more][1]\n\n## Author\n\n- [Viet Hung Nguyen](https://github.com/ZeroX-DG)\n\n## License\n\n- [MIT](LICENSE)\n\n[1]: https://zerox-dg.github.io/blog/2020/05/29/Browser-from-Scratch-Introduction/\n[2]: https://zerox-dg.github.io/blog/2020/09/01/Browser-from-Scratch-DOM-API/\n[3]: https://zerox-dg.github.io/blog/2020/10/24/Browser-from-Scratch-HTML-parsing/\n[4]: https://zerox-dg.github.io/blog/2021/01/13/Browser-from-Scratch-CSS-parsing-processing/\n[5]: https://zerox-dg.github.io/blog/2021/09/26/Browser-from-Scratch-Layout/\n","funding_links":[],"categories":["Open Source Web Browsers/Browser Engines","Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZeroX-DG%2Fmoon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZeroX-DG%2Fmoon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZeroX-DG%2Fmoon/lists"}