1 changed files with 158 additions and 0 deletions
@ -0,0 +1,158 @@ |
|||||
|
# Meshtastic Web Monorepo |
||||
|
|
||||
|
[](https://github.com/meshtastic/web/actions/workflows/ci.yml) |
||||
|
[](https://github.com/meshtastic/js/actions/workflows/ci.yml) |
||||
|
[](https://cla-assistant.io/meshtastic/web) |
||||
|
[](https://opencollective.com/meshtastic/) |
||||
|
[](https://vercel.com?utm_source=meshtastic&utm_campaign=oss) |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This monorepo consolidates the official [Meshtastic](https://meshtastic.org) web |
||||
|
interface and its supporting JavaScript libraries. It aims to provide a unified |
||||
|
development experience for interacting with Meshtastic devices. |
||||
|
|
||||
|
### Projects within this Monorepo (`packages/`) |
||||
|
|
||||
|
All projects are located within the `packages/` directory: |
||||
|
|
||||
|
- **`packages/web` (Meshtastic Web Client):** The official web interface, |
||||
|
designed to be hosted or served directly from a Meshtastic node. |
||||
|
- **[Hosted version](https://client.meshtastic.org)** |
||||
|
- **`packages/core`:** Core functionality for Meshtastic JS. |
||||
|
- **`packages/transport-deno`:** TCP Transport for the Deno runtime. |
||||
|
- **`packages/transport-http`:** HTTP Transport. |
||||
|
- **`packages/transport-web-bluetooth`:** Web Bluetooth Transport. |
||||
|
- **`packages/transport-web-serial`:** Web Serial Transport. |
||||
|
|
||||
|
All `Meshtastic JS` packages (core and transports) are published to |
||||
|
[JSR](https://jsr.io/@meshtastic). |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Stats |
||||
|
|
||||
|
| Project | Repobeats | |
||||
|
| :-------------------- | :-------------------------------------------------------------------------------------------------------------------- | |
||||
|
| Meshtastic Web Client |  | |
||||
|
| Meshtastic JS |  | |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Tech Stack |
||||
|
|
||||
|
This monorepo leverages the following technologies: |
||||
|
|
||||
|
- **Runtime:** Deno |
||||
|
- **Web Client:** React.js |
||||
|
- **Styling:** Tailwind CSS |
||||
|
- **Bundling:** Vite |
||||
|
- **Language:** TypeScript |
||||
|
- **Testing:** Vitest, React Testing Library |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Getting Started |
||||
|
|
||||
|
### Prerequisites |
||||
|
|
||||
|
You'll need to have [Deno](https://deno.com/) installed to work with this |
||||
|
monorepo. Follow the installation instructions on their home page. |
||||
|
|
||||
|
### Development Setup |
||||
|
|
||||
|
1. **Clone the repository:** |
||||
|
```bash |
||||
|
git clone [https://github.com/meshtastic/meshtastic-web.git](https://github.com/meshtastic/meshtastic-web.git) |
||||
|
cd meshtastic-web |
||||
|
``` |
||||
|
2. **Install dependencies for all packages:** |
||||
|
```bash |
||||
|
deno i |
||||
|
``` |
||||
|
This command installs all necessary dependencies for all packages within the |
||||
|
monorepo. |
||||
|
|
||||
|
### Running Projects |
||||
|
|
||||
|
#### Meshtastic Web Client |
||||
|
|
||||
|
To start the development server for the web client: |
||||
|
|
||||
|
```bash |
||||
|
deno task dev --filter packages/web |
||||
|
``` |
||||
|
|
||||
|
This will typically run the web client on http://localhost:3000 and requires a |
||||
|
Chromium browser |
||||
|
|
||||
|
## Meshtastic JS Packages |
||||
|
|
||||
|
While the js packages are primarily libraries, you can run their tests or |
||||
|
specific development scripts if defined within their deno.json files. For |
||||
|
example, to run tests for a specific package: |
||||
|
|
||||
|
```bash |
||||
|
deno test packages/core |
||||
|
``` |
||||
|
|
||||
|
### Building All Projects |
||||
|
|
||||
|
To build all projects in this monorepo: |
||||
|
|
||||
|
```bash |
||||
|
deno task build --filter . |
||||
|
``` |
||||
|
|
||||
|
This will build both the web client and all JS packages. |
||||
|
|
||||
|
### Feedback |
||||
|
|
||||
|
If you encounter any issues with nightly builds, please report them in our |
||||
|
[issues tracker](https://github.com/meshtastic/web/issues). Your feedback helps |
||||
|
improve the stability of future releases |
||||
|
|
||||
|
### Why Deno? |
||||
|
|
||||
|
Meshtastic Web uses Deno as its development platform for several compelling |
||||
|
reasons: |
||||
|
|
||||
|
- **Built-in Security**: Deno's security-first approach requires explicit |
||||
|
permissions for file, network, and environment access, reducing vulnerability |
||||
|
risks. |
||||
|
- **TypeScript Support**: Native TypeScript support without additional |
||||
|
configuration, enhancing code quality and developer experience. |
||||
|
- **Modern JavaScript**: First-class support for ESM imports, top-level await, |
||||
|
and other modern JavaScript features. |
||||
|
- **Simplified Tooling**: Built-in formatter, linter, test runner, and bundler |
||||
|
eliminate the need for multiple third-party tools. |
||||
|
- **Reproducible Builds**: Lockfile ensures consistent builds across all |
||||
|
environments. |
||||
|
- **Web Standard APIs**: Uses browser-compatible APIs, making code more portable |
||||
|
between server and client environments. |
||||
|
|
||||
|
### Contributing |
||||
|
|
||||
|
We welcome contributions! Here’s how the deployment flow works for pull |
||||
|
requests: |
||||
|
|
||||
|
- **Preview Deployments:**\ |
||||
|
Every pull request automatically generates a preview deployment on Vercel. |
||||
|
This allows you and reviewers to easily preview changes before merging. |
||||
|
|
||||
|
- **Staging Environment (`client-test`):**\ |
||||
|
Once your PR is merged, your changes will be available on our staging site: |
||||
|
[client-test.meshtastic.org](https://client-test.meshtastic.org/).\ |
||||
|
This environment supports rapid feature iteration and testing without |
||||
|
impacting the production site. |
||||
|
|
||||
|
- **Production Releases:**\ |
||||
|
At regular intervals, stable and fully tested releases are promoted to our |
||||
|
production site: [client.meshtastic.org](https://client.meshtastic.org/).\ |
||||
|
This is the primary interface used by the public to connect with their |
||||
|
Meshtastic nodes. |
||||
|
|
||||
|
Please review our |
||||
|
[Contribution Guidelines](https://github.com/meshtastic/web/blob/main/CONTRIBUTING.md) |
||||
|
before submitting a pull request. We appreciate your help in making the project |
||||
|
better! |
||||
Loading…
Reference in new issue