Feat/add js repo to monorepo (#683)
* feat: move js repo into web monorepo * added readme * Update packages/core/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/transport-http/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/transport-web-bluetooth/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -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!
|
||||
Reference in New Issue
Block a user