{"id":19204818,"url":"https://github.com/meshtastic/web","last_synced_at":"2025-05-15T18:04:12.181Z","repository":{"id":42664965,"uuid":"393190287","full_name":"meshtastic/web","owner":"meshtastic","description":"Meshtastic Web Client","archived":false,"fork":false,"pushed_at":"2025-02-17T01:05:50.000Z","size":3807,"stargazers_count":317,"open_issues_count":64,"forks_count":131,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-02-18T03:42:41.751Z","etag":null,"topics":["meshtastic"],"latest_commit_sha":null,"homepage":"https://client.meshtastic.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meshtastic.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}},"created_at":"2021-08-05T23:04:39.000Z","updated_at":"2025-02-17T15:42:59.000Z","dependencies_parsed_at":"2023-12-18T20:12:54.894Z","dependency_job_id":"c1d61585-c31a-449a-91af-0e7de55ca924","html_url":"https://github.com/meshtastic/web","commit_stats":{"total_commits":662,"total_committers":41,"mean_commits":"16.146341463414632","dds":"0.38519637462235645","last_synced_commit":"88e06a1beafa203e9be0539f97c1c250d726356e"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meshtastic","download_url":"https://codeload.github.com/meshtastic/web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299766,"owners_count":20916183,"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":["meshtastic"],"created_at":"2024-11-09T13:09:48.865Z","updated_at":"2025-05-15T18:04:12.174Z","avatar_url":"https://github.com/meshtastic.png","language":"TypeScript","funding_links":["https://opencollective.com/meshtastic/"],"categories":["TypeScript"],"sub_categories":[],"readme":"# Meshtastic Web\n\n\u003c!--Project specific badges here--\u003e\n\n[![CI](https://img.shields.io/github/actions/workflow/status/meshtastic/web/ci.yml?branch=master\u0026label=actions\u0026logo=github\u0026color=yellow)](https://github.com/meshtastic/web/actions/workflows/ci.yml)\n[![CLA assistant](https://cla-assistant.io/readme/badge/meshtastic/web)](https://cla-assistant.io/meshtastic/web)\n[![Fiscal Contributors](https://opencollective.com/meshtastic/tiers/badge.svg?label=Fiscal%20Contributors\u0026color=deeppink)](https://opencollective.com/meshtastic/)\n[![Vercel](https://img.shields.io/static/v1?label=Powered%20by\u0026message=Vercel\u0026style=flat\u0026logo=vercel\u0026color=000000)](https://vercel.com?utm_source=meshtastic\u0026utm_campaign=oss)\n\n## Overview\n\nOfficial [Meshtastic](https://meshtastic.org) web interface, that can be hosted\nor served from a node\n\n**[Hosted version](https://client.meshtastic.org)**\n\n## Stats\n\n![Alt](https://repobeats.axiom.co/api/embed/e5b062db986cb005d83e81724c00cb2b9cce8e4c.svg \"Repobeats analytics image\")\n\n## Progress Web App Support (PWA)\n\nMeshtastic Web Client now includes Progressive Web App (PWA) functionality,\nallowing users to:\n\n- Install the app on desktop and mobile devices\n- Access the interface offline\n- Receive updates automatically\n- Experience faster load times with caching\n\nTo install as a PWA:\n\n- On desktop: Look for the install icon in your browser's address bar\n- On mobile: Use \"Add to Home Screen\" option in your browser menu\n\nPWA functionality works with both the hosted version and self-hosted instances.\n\n## Self-host\n\nThe client can be self hosted using the precompiled container images with an OCI\ncompatible runtime such as [Docker](https://www.docker.com/) or\n[Podman](https://podman.io/). The base image used is\n[Nginx 1.27](https://hub.docker.com/_/nginx)\n\n```bash\n# With Docker\ndocker run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web\n\n#With Podman\npodman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web\n```\n\n## Release Schedule\n\nOur release process follows these guidelines:\n\n- **Versioning:** We use Semantic Versioning (`Major.Minor.Patch`).\n- **Stable Releases:** Published around the beginning of each month (e.g.,\n  `v2.3.4`).\n- **Pre-releases:** A pre-release is typically issued mid-month for testing and\n  early adoption.\n- **Nightly Builds:** An experimental Docker image containing the latest\n  cutting-edge features and fixes is automatically built nightly from the\n  `master` branch.\n\n### Nightly Builds\n\n```bash\n# With Docker\ndocker run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web:nightly\n#With Podman\npodman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web:nightly\n```\n\n\u003e [!WARNING]\n\u003e\n\u003e - Nightly builds represent the latest development state and may contain\n\u003e   breaking changes\n\u003e - These builds undergo automated testing but may be less stable than tagged\n\u003e   release versions\n\u003e - Not recommended for production environments unless you are actively testing\n\u003e   new features\n\u003e - No guarantee of backward compatibility between nightly builds\n\n#### Version Information\n\nEach nightly build is tagged with:\n\n- The nightly tag for the latest build\n- A specific SHA for build reproducibility\n\n### Feedback\n\nIf you encounter any issues with nightly builds, please report them in our\n[issues tracker](https://github.com/meshtastic/web/issues). Your feedback helps\nimprove the stability of future releases\n\n## Development \u0026 Building\n\nYou'll need to download the package manager used with this repo. You can install\nit by visiting [deno.com](https://deno.com/) and following the installation\ninstructions listed on the home page.\n\n### Development\n\nInstall the dependencies.\n\n```bash\ndeno i\n```\n\nStart the development server:\n\n```bash\ndeno task dev\n```\n\n### Building and Packaging\n\nBuild the project:\n\n```bash\ndeno task build\n```\n\nGZip the output:\n\n```bash\ndeno task package\n```\n\n### Why Deno?\n\nMeshtastic Web uses Deno as its development platform for several compelling\nreasons:\n\n- **Built-in Security**: Deno's security-first approach requires explicit\n  permissions for file, network, and environment access, reducing vulnerability\n  risks.\n- **TypeScript Support**: Native TypeScript support without additional\n  configuration, enhancing code quality and developer experience.\n- **Modern JavaScript**: First-class support for ESM imports, top-level await,\n  and other modern JavaScript features.\n- **Simplified Tooling**: Built-in formatter, linter, test runner, and bundler\n  eliminate the need for multiple third-party tools.\n- **Reproducible Builds**: Lockfile ensures consistent builds across all\n  environments.\n- **Web Standard APIs**: Uses browser-compatible APIs, making code more portable\n  between server and client environments.\n\n### Contributing\n\nWe welcome contributions! Here’s how the deployment flow works for pull\nrequests:\n\n- **Preview Deployments:**\\\n  Every pull request automatically generates a preview deployment on Vercel.\n  This allows you and reviewers to easily preview changes before merging.\n\n- **Staging Environment (`client-test`):**\\\n  Once your PR is merged, your changes will be available on our staging site:\n  [client-test.meshtastic.org](https://client-test.meshtastic.org/).\\\n  This environment supports rapid feature iteration and testing without\n  impacting the production site.\n\n- **Production Releases:**\\\n  At regular intervals, stable and fully tested releases are promoted to our\n  production site: [client.meshtastic.org](https://client.meshtastic.org/).\\\n  This is the primary interface used by the public to connect with their\n  Meshtastic nodes.\n\nPlease review our\n[Contribution Guidelines](https://github.com/meshtastic/web/blob/master/CONTRIBUTING.md)\nbefore submitting a pull request. We appreciate your help in making the project\nbetter!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeshtastic%2Fweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fweb/lists"}