{"id":13647758,"url":"https://github.com/pepsighan/papito","last_synced_at":"2025-04-22T02:32:47.619Z","repository":{"id":57652711,"uuid":"125607112","full_name":"pepsighan/papito","owner":"pepsighan","description":"A Beginner Friendly Rusty WASM Framework","archived":true,"fork":false,"pushed_at":"2018-08-29T04:03:23.000Z","size":161,"stargazers_count":51,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T07:41:51.878Z","etag":null,"topics":["frontend","nightly","rust","wasm","web"],"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/pepsighan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-17T07:35:08.000Z","updated_at":"2025-02-07T10:36:20.000Z","dependencies_parsed_at":"2022-08-25T20:20:44.886Z","dependency_job_id":null,"html_url":"https://github.com/pepsighan/papito","commit_stats":null,"previous_names":["csharad/papito"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepsighan%2Fpapito","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepsighan%2Fpapito/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepsighan%2Fpapito/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepsighan%2Fpapito/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pepsighan","download_url":"https://codeload.github.com/pepsighan/papito/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250163788,"owners_count":21385315,"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":["frontend","nightly","rust","wasm","web"],"created_at":"2024-08-02T01:03:45.655Z","updated_at":"2025-04-22T02:32:47.367Z","avatar_url":"https://github.com/pepsighan.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Papito (पपितो) = Papaya\n## Deprecated : No Longer Maintained\n\n[![Build Status](https://travis-ci.org/csharad/papito.svg?branch=master)](https://travis-ci.org/csharad/papito)\n\nA Vue \u0026 React inspired Frontend Web Framework in Rust for the WASM platform. Developed by a beginner for beginners.\n\n### Goals\n\n+ Beginner Friendly. Draws cues from Vue and React.\n+ Pure Rust web apps.\n+ Cargo only (without webpack). Should provide optional tools that mimic loaders such as `file-loader`, `style-loader`, `url-loader`.\n\nIt is still under active development. So tread carefully.\n\n### Demo\n\n```rust\n#![feature(proc_macro, conservative_impl_trait)]\n\n#[macro_use]\nextern crate papito_codegen;\n#[macro_use]\nextern crate papito_dom;\nextern crate papito;\n#[macro_use]\nextern crate stdweb;\n\nuse papito_codegen::{component, render, events, event};\nuse papito::prelude::{Render, Lifecycle};\nuse papito_dom::prelude::VNode;\nuse papito::App;\nuse stdweb::web::event::ClickEvent;\n\n#[derive(Lifecycle)]\n#[component]\nstruct Div;\n\n#[render]\nimpl Render for Div {\n    fn render(\u0026self) -\u003e VNode {\n        h!(\"div\", { \"style\" =\u003e \"background-color: #fafafa; color: #666;\" },\n            h!([\n                h!(\"This is the front page of web.\"),\n                h!(comp Button, { style =\u003e \"background-color: black; color: white;\".to_string() })\n            ]))\n    }\n}\n\n#[component]\nstruct Button {\n    #[prop]\n    style: String,\n    click: bool\n}\n\n#[events]\nimpl Button {\n    #[event]\n    fn on_click(\u0026mut self, _: ClickEvent) {\n        let inv = !self.click;\n        self.set_click(inv);\n    }\n}\n\nimpl Lifecycle for Button {\n    fn created(\u0026mut self) {\n        console!(log, \u0026format!(\"Initial click value: {}\", self.click));\n    }\n\n    fn updated(\u0026mut self) {\n        console!(log, \u0026format!(\"You clicked the button: {}\", self.click));\n    }\n}\n\n#[render]\nimpl Render for Button {\n    fn render(\u0026self) -\u003e VNode {\n        let click = self.inner.borrow().click;\n        let style = self.inner.borrow().style.clone();\n        h!([\n            h!(\"h1\", h!(\"Hello World!\")),\n            h!(\"button\", { \"style\" =\u003e style }, [ self.on_click() ], h!(\"Click\")),\n            h!(\"h3\", h!(if click { \"You clicked\" } else { \"You unclicked\" }))\n        ])\n    }\n}\n\nfn main() {\n    App::new::\u003cDiv\u003e().render(\"app\");\n}\n```\n\n### Features Supported\n\n* [x] Component props\n* [ ] Component Events\n* [x] DOM Events\n* [x] Reactive states\n* [x] Component Lifecycle (only some)\n* [x] Server Renderer\n* [x] Hyperscript macro h!\n* [ ] Vue-like template syntax\n* [ ] Context API?","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpepsighan%2Fpapito","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpepsighan%2Fpapito","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpepsighan%2Fpapito/lists"}