{"id":32623123,"url":"https://github.com/jotsr/pita-template","last_synced_at":"2026-05-06T04:32:49.164Z","repository":{"id":168583056,"uuid":"640917907","full_name":"JOTSR/pita-template","owner":"JOTSR","description":"Template for Pita projects, simpliest way to develop secure and powerful webapps for redpitaya.","archived":false,"fork":false,"pushed_at":"2023-06-20T10:43:05.000Z","size":2312,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-30T19:55:40.687Z","etag":null,"topics":["cargo","deno","redpitaya","rust","template","typescript"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/JOTSR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-15T11:55:55.000Z","updated_at":"2023-05-19T15:18:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"bef72bc7-7e5c-4cac-9c80-e43e11855e94","html_url":"https://github.com/JOTSR/pita-template","commit_stats":null,"previous_names":["jotsr/pita-template"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/JOTSR/pita-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JOTSR%2Fpita-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JOTSR%2Fpita-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JOTSR%2Fpita-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JOTSR%2Fpita-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JOTSR","download_url":"https://codeload.github.com/JOTSR/pita-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JOTSR%2Fpita-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32678616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["cargo","deno","redpitaya","rust","template","typescript"],"created_at":"2025-10-30T19:54:01.609Z","updated_at":"2026-05-06T04:32:49.154Z","avatar_url":"https://github.com/JOTSR.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./www/info/favicon.png\" alt=\"logo\" style=\"width: 150px; height: 150px\"/\u003e\n    \u003ch1\u003ePita template\u003c/h1\u003e\n    \u003cp\u003eSimpliest way to develop secure and powerful webapps for redpitaya.\u003c/p\u003e\n\u003c/div\u003e\n\n![GitHub](https://img.shields.io/github/license/JOTSR/pita-template?style=flat-square)\n![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/JOTSR/pita-template?style=flat-square)\n\nSimpliest way to develop secure and powerful app for redpitaya.\n\nPita 🫓 template to scaffold and manage webapp for\n[redpitaya](https://redpitaya.com/). Pita allows you to code, build and\nimplement your webapp with a robust and secure environement. It handle all your\nworkflow, from tooling installation to testing, benching and publishing.\n\nPita project resides in:\n|[pita cli](https://deno.land/x/pita)|[pita api](https://deno.land/x/pita_api)|[pita template](https://github.com/JOTSR/pita-template)|\n|:------:|:-----:|:-----:|\n|[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/JOTSR/pita-cli?style=flat-square)](https://github.com/JOTSR/pita-cli)|[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/JOTSR/pita-api?style=flat-square)](https://github.com/JOTSR/pita-api)|[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/JOTSR/pita-template?style=flat-square)](https://github.com/JOTSR/pita-template)|\n||[![deno doc](https://img.shields.io/static/v1?logo=deno\u0026label=deno\u0026message=doc\u0026color=blue\u0026style=flat-square)](https://deno.land/x/pita_api/mod.ts)||\n\nProject are customizable, by default:\n\n- frontend is in typescript/tsx\n- backend is in rust\n- fpga is in verilog\n\nAll app is builded in www/ and sended to repitaya board.\n\n## Getting started\n\nUse pita cli or tasks described in [deno.jsonc](./deno.jsonc)\n\n### With [Pita cli](https://github.com/JOTSR/pita-cli):\n\n1. Only once, ensure tools and workflow configuration.\n   ```sh\n   pita requirements --check\n   ```\n2. Init a new project.\n   ```sh\n   pita init\n   ```\n3. Build sources and implement it on the board.\n   ```sh\n   pita run\n   ```\n\n### Without Pita cli\n\n1. Check tools.\n   1. Required: deno, rustup, vivado, ssh, scp.\n   2. Recommanded: vscode, git.\n2. Clone this repositor.\n3. Edit [.pita/project.json](.pita/project.json) with your host configuration\n   and a new valid uuid.\n4. Build sources.\n   ```sh\n   deno task build\n   ```\n5. Connect to your board and enable write access.\n   ```sh\n   root@rp-XXXX: rw\n   ```\n6. Optionnaly copy your ssh credentials to avoid password.\n7. Implement build on board.\n   ```sh\n   deno task implement\n   ```\n8. Open redpitaya app menu on your browser and test your webapp.\n\n## Structure\n\n\u003cpre\u003e\n.\n├── \u003cspan style=\"color: royalblue\"\u003e🔵 backend\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(interface between client and redpitaya fpga/cpu)\u003c/span\u003e\n├── \u003cspan style=\"color: goldenrod\"\u003e🟡 deno.jsonc\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(tasks)\u003c/span\u003e\n├── \u003cspan style=\"color: royalblue\"\u003e🔵 fpga\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(???? bitstream - fpga project structure)\u003c/span\u003e\n├── \u003cspan style=\"color: royalblue\"\u003e🔵 frontend\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(client-size application)\u003c/span\u003e\n│   ├── \u003cspan style=\"color: tomato\"\u003e🔴 app.tsx\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(app entry-point)\u003c/span\u003e\n│   ├── \u003cspan style=\"color: royalblue\"\u003e🔵 components\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(component lib for building your own panels)\u003c/span\u003e\n│   └── \u003cspan style=\"color: royalblue\"\u003e🔵 panels\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(control panels to monitor and pilot board IOs and state)\u003c/span\u003e\n├── \u003cspan style=\"color: goldenrod\"\u003e🟡 import_map.json\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(js path resolution)\u003c/span\u003e\n└── \u003cspan style=\"color: royalblue\"\u003e🔵 www\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(dist app folder)\u003c/span\u003e\n    ├── \u003cspan style=\"color: royalblue\"\u003e🔵 bin\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(temp c++ backend interface)\u003c/span\u003e\n    ├── \u003cspan style=\"color: goldenrod\"\u003e🟡 fpga.*\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(fpga bitstream loading)\u003c/span\u003e\n    ├── \u003cspan style=\"color: tomato\"\u003e🔴 index.html\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(server-side app entry point)\u003c/span\u003e\n    ├── \u003cspan style=\"color: royalblue\"\u003e🔵 info\u003c/span\u003e\n    │   ├── \u003cspan style=\"color: forestgreen\"\u003e🟢 favicon.png\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(browser icon)\u003c/span\u003e\n    │   ├── \u003cspan style=\"color: forestgreen\"\u003e🟢 icon.png\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(redpitaya menu icon)\u003c/span\u003e\n    │   └── \u003cspan style=\"color: goldenrod\"\u003e🟡 info.json\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(app info, do not manually edit version and revision)\u003c/span\u003e\n    └── \u003cspan style=\"color: royalblue\"\u003e🔵 src\u003c/span\u003e \u003cspan style=\"color: grey\"\u003e(build assets, do not edit)\u003c/span\u003e\n\n\u003cspan style=\"color: royalblue\"\u003e🔵 directory\u003c/span\u003e\n\u003cspan style=\"color: tomato\"\u003e🔴 entrypoint\u003c/span\u003e\n\u003cspan style=\"color: forestgreen\"\u003e🟢 assets\u003c/span\u003e\n\u003cspan style=\"color: goldenrod\"\u003e🟡 config\u003c/span\u003e\n\u003c/pre\u003e\n\n## Operating diagrams\n\n```mermaid\n---\ntitle: Client side web app structure links\n---\nflowchart TB\n    subgraph client [Client browser]\n        direction TB\n        api[Pita API]\n        subgraph panels [Panels/Workers]\n            direction LR\n            panel1[Panel example 1]\n            panel2[Panel example 2]\n            webwk1[Worker example - specific code]\n        end\n\n        api -- Readable stream --\u003e panels\n        panels -- Writable stream --\u003e api\n    end\n    subgraph rp [Redpitaya board]\n        direction TB\n        server[NGNIX Server]\n    end\n\n    api -- HTTP controller init request --\u003e server\n    api \u003c-- Websocket --\u003e server\n```\n\n```mermaid\n---\ntitle: Server side web app structure links\n---\nflowchart TB\n    subgraph client [Client browser]\n        direction TB\n        api[Pita API]\n    end\n    subgraph rp [Redpitaya board]\n        direction TB\n        subgraph cpu [CPU]\n            server[NGNIX Server]\n            controller[Controller]\n            sdk[Redpitaya SDK]\n            subgraph workers [Workers]\n                wk1[Specific code - ex. Kalman]\n                wk2[Specific code - ex. langevin]\n            end\n\n            server -- Events --\u003e controller\n            controller -- Messages --\u003e server\n            controller \u003c--\u003e sdk\n            workers \u003c-- Datas --\u003e controller\n        end\n        subgraph fpga [FPGA]\n            fft[FFT IP CORE]\n            firmware[Redpitaya FPGA Firmware]\n            custom[Custom HDL]\n        end\n        subgraph IOs [IOs]\n            leds[Led 0:7]\n            digital[Digital 0:16]\n            analog[Analog 0:7]\n            dac[DAC 0:1]\n            adc[ADC 0:1]\n        end\n        ram[RAM]\n\n        sdk \u003c--\u003e ram\n        IOs \u003c--\u003e ram\n        fpga \u003c--\u003e ram\n    end\n\n    api -- HTTP controller init request --\u003e server\n    api \u003c-- Websocket --\u003e server\n```\n\n```mermaid\n---\ntitle: Example of led switch panel communication\n---\nsequenceDiagram\n    participant Panel as Led 7 Switch Panel\n    participant Pita as Pita API\n    participant Server as NGNIX Server\n    participant Controller as Controller\n    participant Led as Led 7\n\n    Pita-\u003e\u003eServer: HTTP request to register controller\n    note right of Pita: Websocket only below\n    loop\n        Server-)Pita: Signals and Parameters\n    end\n    Panel-\u003e\u003ePanel: Switch On\n    Panel-)Pita: Write state on led 7\n    Pita-)Server: Parameters for led state\n    Server-\u003e\u003eController: Trigger parameters event\n    Controller-\u003e\u003eLed: Write hight state on led 7\n```\n\n## Contributing\n\nRead [CONTRIBUTING](./CONTRIBUTING.md) and start a codespace or clone this\nrepository.\n\nFolow conventionnal commit, document your code and, use deno or rust style\ncoventions on the corresponding directories.\n\nLink your PR with the corresponding issue if it exists.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjotsr%2Fpita-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjotsr%2Fpita-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjotsr%2Fpita-template/lists"}