{"id":13428820,"url":"https://github.com/kwebio/kweb-core","last_synced_at":"2025-03-16T02:30:38.489Z","repository":{"id":15525528,"uuid":"78316423","full_name":"kwebio/kweb-core","owner":"kwebio","description":"A Kotlin web framework","archived":true,"fork":false,"pushed_at":"2024-08-03T14:55:08.000Z","size":32206,"stargazers_count":967,"open_issues_count":12,"forks_count":57,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-11T04:57:28.803Z","etag":null,"topics":["dom","html","kotlin","ktor","web-framework","web-performance"],"latest_commit_sha":null,"homepage":"https://docs.kweb.io/book","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kwebio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-01-08T02:18:02.000Z","updated_at":"2025-02-16T09:28:52.000Z","dependencies_parsed_at":"2023-02-19T10:45:43.058Z","dependency_job_id":"a88d65b5-fb76-4679-a568-471b48b8e3d7","html_url":"https://github.com/kwebio/kweb-core","commit_stats":null,"previous_names":[],"tags_count":250,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwebio%2Fkweb-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwebio%2Fkweb-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwebio%2Fkweb-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwebio%2Fkweb-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kwebio","download_url":"https://codeload.github.com/kwebio/kweb-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243815603,"owners_count":20352195,"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":["dom","html","kotlin","ktor","web-framework","web-performance"],"created_at":"2024-07-31T01:01:05.971Z","updated_at":"2025-03-16T02:30:37.759Z","avatar_url":"https://github.com/kwebio.png","language":"Kotlin","funding_links":[],"categories":["Libraries","Ktor Projects","Kotlin","开发框架"],"sub_categories":["Socials","Web框架"],"readme":"# Kweb - A Kotlin web framework\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/kwebio/kweb-core/actions/workflows/build.yml\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/kwebio/kweb-core/build.yml?branch=master\u0026label=tests\u0026style=flat-square\u0026logo=github%20actions\" alt=\"continuous integration status\" \u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://matrix.to/#/#kweb:matrix.org\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/chat-matrix-blue?style=flat-square\u0026logo=matrix\u0026color=0B9CD6\" alt=\"matrix\" \u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://docs.kweb.io/book/gettingstarted.html\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/maven-central/v/io.kweb/kweb-core?style=flat-square\u0026logo=maven\u0026label=kweb-core\u0026color=374991\" \u003e\r\n  \u003ca href=\"https://github.com/kwebio/kweb-core/blob/master/LICENSE\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/github/license/kwebio/kweb-core?style=flat-square\u0026logo=gnu\u0026color=3DA751\" \u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://twitter.com/kwebio\"\u003e\r\n    \u003cimg alt=\"Twitter Follow\" src=\"https://img.shields.io/twitter/follow/kwebio?logo=twitter\u0026color=1DA1F2\u0026style=flat-square\u0026label=%40kwebio\" \u003e\r\n  \u003c/a\u003e\r\n\u003c/div\u003e\r\n\r\n## Notice of Project Status (June 2024)\r\n\r\nDue primarily to recent [changes](https://www.reddit.com/r/java/comments/1dkgh85/psa_maven_central_publishing_requires_token_now/) in Sonatype's deployment requirements, and persistent other [headaches](https://www.reddit.com/r/Kotlin/comments/y042g1/rant_gradle_is_an_embarrassment_to_the_javakotlin/) with JVM ecosystem tooling, I'm no longer able to actively support Kweb. \r\n\r\nThe last straw was Sonatype breaking my automatic deployment process by changing how it's authenticated, and [apparently](https://help.sonatype.com/en/user-tokens.html) requiring a paid upgrade to their Pro service to fix it. Over the past two years, most of the time I've spent on Kweb has been dealing with tooling regressions rather than improving the software.\r\n\r\nThis decision wasn't easy, but it’s become untenable for me to continue maintaining the framework given these challenges.\r\n\r\nIf you are interested in taking over the project or contributing to its development, please feel free to fork the repository. If you need to contact me I'm @sanity on [X](https://x.com/sanity) and [Reddit](https://reddit.com/u/sanity).\r\n\r\n## Quick Start\r\n\r\nRead the [Introduction](https://docs.kweb.io/book/intro.html) or \r\n[Getting Started](https://docs.kweb.io/book/gettingstarted.html) from \r\nthe [Kweb User Manual](https://docs.kweb.io/book/).\r\n\r\n## Why another web framework?\r\n\r\nKweb is designed to make it easy for developers to create modern websites without having to worry about the complexities of communication between the server and the browser. With a unified codebase, you can focus on creating an intuitive and user-friendly interface, rather than spending time on technical details. By streamlining the development process, Kweb makes it easier to build functional and beautiful websites that meet the needs of your users.\r\n\r\n## How does it work?\r\n\r\nKweb is a remote interface for a web browser's DOM (Document Object Model). With Kweb, you can create and manipulate DOM elements, and listen for and handle events, all using an intuitive Kotlin DSL that mirrors the structure of the HTML being created. Kweb is built on the Ktor framework, which handles HTTP, HTTPS, and WebSocket transport, and is optimized to minimize latency and resource usage on both the server and browser.\r\n\r\n### Note on Memory Leak Issue\r\n\r\nWe have identified a memory leak issue that may affect users when using the `InputElement` class, we're working on a [fix](https://github.com/kwebio/kweb-core/pull/611) but can't make any promises if/when it will be completed. We recommend that you run a memory profiler to see if you're affected.\r\n\r\n## Example\r\n  \r\n```kotlin\r\nimport kweb.*\r\nimport kweb.InputType.text\r\n\r\nfun main() {\r\n    Kweb(port = 16097) {\r\n        doc.body {\r\n            val name = kvar(\"\")\r\n            div {\r\n                h1().text(\"Enter Your Name\")\r\n                input(type = text).value = name\r\n            }\r\n            div {\r\n                span().text(name.map { \"Hello, $it\" })\r\n            }\r\n        }\r\n    }\r\n}\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwebio%2Fkweb-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkwebio%2Fkweb-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwebio%2Fkweb-core/lists"}