{"id":38951152,"url":"https://github.com/tuler/deroll","last_synced_at":"2026-03-11T17:03:25.374Z","repository":{"id":191286497,"uuid":"684339330","full_name":"tuler/deroll","owner":"tuler","description":"TypeScript framework for Cartesi applications","archived":false,"fork":false,"pushed_at":"2025-07-25T21:12:54.000Z","size":1671,"stargazers_count":17,"open_issues_count":8,"forks_count":14,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-26T03:45:52.506Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://deroll.vercel.app","language":"TypeScript","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/tuler.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,"zenodo":null}},"created_at":"2023-08-29T00:01:54.000Z","updated_at":"2025-05-27T09:33:11.000Z","dependencies_parsed_at":"2024-04-16T18:02:13.688Z","dependency_job_id":"12200103-76ff-4a63-8910-b66f79f8de99","html_url":"https://github.com/tuler/deroll","commit_stats":null,"previous_names":["tuler/deroll"],"tags_count":84,"template":false,"template_full_name":null,"purl":"pkg:github/tuler/deroll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuler%2Fderoll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuler%2Fderoll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuler%2Fderoll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuler%2Fderoll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuler","download_url":"https://codeload.github.com/tuler/deroll/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuler%2Fderoll/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-17T16:09:40.228Z","updated_at":"2026-01-17T16:09:40.961Z","avatar_url":"https://github.com/tuler.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# deroll\n\nDeroll, a TypeScript framework, facilitates the development of decentralized applications (dApps) on the [Cartesi](https://cartesi.io) blockchain technology. With a focus on simplicity, Deroll offers a toolkit and conventions to streamline your development workflow. Easily onboard using Node.js and Deroll to start building your Cartesi application with ease.\n\n## Quick Start\n\n### Prerequisites\n\nEnsure you have Node.js and Yarn installed; you can download them from [nodejs.org](https://nodejs.org/) and [yarnpkg.com](https://yarnpkg.com/). Additionally, it's necessary to install [Cartesi CLI](https://docs.cartesi.io/).\n\n### Creating a project\n\n```shell\nnpm init @deroll/app\n```\n\nor\n\n```shell\npnpm create @deroll/app\n```\n\nor\n\n```shell\nyarn create @deroll/app\n```\n\n### Simple example\n\nOpen the file `src/index.ts` and copy and paste the following code:\n\n```ts\n// Import necessary modules\nimport { createApp } from \"@deroll/app\";\n\n// Create the application\nconst app = createApp({\n    url: process.env.ROLLUP_HTTP_SERVER_URL || \"http://127.0.0.1:5004\",\n});\n\n// Handle input encoded in hex\napp.addAdvanceHandler(async ({ payload }) =\u003e {\n    // read payload as string\n    const str = hexToString(payload);\n\n    // create a notice with the string in uppercase\n    await app.createNotice({ payload: stringToHex(str.toUpperCase()) });\n});\n\n// Start the application\napp.start().catch((e) =\u003e {\n    console.error(e);\n    process.exit(1);\n});\n```\n\n### Build and run your dApp\n\n```shell\ncartesi build\ncartesi run\n```\n\nExpected output:\n\n```shell\nprompt-1     | Anvil running at http://localhost:8545\nprompt-1     | GraphQL running at http://localhost:8080/graphql\nprompt-1     | Inspect running at http://localhost:8080/inspect/\nprompt-1     | Explorer running at http://localhost:8080/explorer/\nprompt-1     | Bundler running at http://localhost:8080/bundler/rpc\nprompt-1     | Paymaster running at http://localhost:8080/paymaster/\nprompt-1     | Press Ctrl+C to stop the node\n```\n\n### Send a message\n\nOpen a new terminal and run:\n\n```shell\ncartesi send\n```\n\n1. Choose `Send generic input to the application.`\n2. After choose `Foundry`\n3. Select the defaults:\n    1. Select the RPC URL `http://127.0.0.1:8545`\n    2. Select Mnemonic\n    3. Account, DApp address\n4. Select `Input String encoding` and in the input type `Hello world!` and hit enter.\n\nExpected output:\n\n```shell\ncartesi send\n? Select send sub-command Send generic input to the application.\n? Chain Foundry\n? RPC URL http://127.0.0.1:8545\n? Wallet Mnemonic\n? Mnemonic test test test test test test test test test test test junk\n? Account 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 9999.969240390387558666 ETH\n? DApp address 0x70ac08179605AF2D9e75782b8DEcDD3c22aA4D0C\n? Input String encoding\n? Input (as string) Hello world!\n✔ Input sent: 0xebd90fe6fd50245dfa30f33e2d68236a73b25e2351106484cfa9d815e401939d\n```\n\nExpected output in the `cartesi run` terminal:\n\n```shell\nprompt-1     | Anvil running at http://localhost:8545\nprompt-1     | GraphQL running at http://localhost:8080/graphql\nprompt-1     | Inspect running at http://localhost:8080/inspect/\nprompt-1     | Explorer running at http://localhost:8080/explorer/\nprompt-1     | Bundler running at http://localhost:8080/bundler/rpc\nprompt-1     | Paymaster running at http://localhost:8080/paymaster/\nprompt-1     | Press Ctrl+C to stop the node\nvalidator-1  | [INFO  rollup_http_server::http_service] Received new request of type ADVANCE\nvalidator-1  | [INFO  actix_web::middleware::logger] 127.0.0.1 \"POST /finish HTTP/1.1\" 200 224 \"-\" \"undici\" 0.000960\nvalidator-1  | Hello world!\n```\n\nNow you're ready to start building your Cartesi application with cartesi and deroll!\n\n## Build from source\n\n### Requirements\n\n-   Corepack (with pnpm) or pnpm v9 (9.7.1 recommended)\n-   Node 20 or greater (LTS)\n\n### Installation\n\nCorepack is a package manager that allows you to install packages from different package managers.\nIt is recommended to use it to install deroll because it come with nodejs.\nBut you can use pnpm if you want. To install corepack follow the instructions [here](https://pnpm.io/installation).\n\n```sh\ncorepack install\ncorepack pnpm install\n```\n\n### Build\n\n```sh\npnpm i\npnpm run build\n```\n\n## How to contribute\n\nTry to follow deroll conventions and patterns, open a ticket to discuss ideas, or open a PR.\n\n## License\n\nThis code is licensed under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuler%2Fderoll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuler%2Fderoll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuler%2Fderoll/lists"}