You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -19,7 +20,8 @@ Official [Meshtastic](https://meshtastic.org) web interface, that can be hosted
19
20
20
21
## Progress Web App Support (PWA)
21
22
22
-
Meshtastic Web Client now includes Progressive Web App (PWA) functionality, allowing users to:
23
+
Meshtastic Web Client now includes Progressive Web App (PWA) functionality,
24
+
allowing users to:
23
25
24
26
- Install the app on desktop and mobile devices
25
27
- Access the interface offline
@@ -35,8 +37,10 @@ PWA functionality works with both the hosted version and self-hosted instances.
35
37
36
38
## Self-host
37
39
38
-
The client can be self hosted using the precompiled container images with an OCI compatible runtime such as [Docker](https://www.docker.com/) or [Podman](https://podman.io/).
39
-
The base image used is [Nginx 1.27](https://hub.docker.com/_/nginx)
40
+
The client can be self hosted using the precompiled container images with an OCI
41
+
compatible runtime such as [Docker](https://www.docker.com/) or
42
+
[Podman](https://podman.io/). The base image used is
podman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web
47
51
```
48
52
49
-
## Nightly releases
53
+
## Nightly releases
50
54
51
-
Our nightly releases provide the latest development builds with cutting-edge features and fixes. These builds are automatically generated from the latest main branch every night and are available for testing and early adoption.
55
+
Our nightly releases provide the latest development builds with cutting-edge
56
+
features and fixes. These builds are automatically generated from the latest
57
+
main branch every night and are available for testing and early adoption.
podman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web:nightly
58
64
```
59
65
60
-
> [!WARNING]
61
-
> - Nightly builds represent the latest development state and may contain breaking changes
62
-
> - These builds undergo automated testing but may be less stable than tagged release versions
63
-
> - Not recommended for production environments unless you are actively testing new features
66
+
> [!WARNING]
67
+
>
68
+
> - Nightly builds represent the latest development state and may contain
69
+
> breaking changes
70
+
> - These builds undergo automated testing but may be less stable than tagged
71
+
> release versions
72
+
> - Not recommended for production environments unless you are actively testing
73
+
> new features
64
74
> - No guarantee of backward compatibility between nightly builds
65
75
66
76
### Version Information
77
+
67
78
Each nightly build is tagged with:
68
79
69
80
- The nightly tag for the latest build
70
81
- A specific SHA for build reproducibility
71
82
72
83
### Feedback
73
-
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
84
+
85
+
If you encounter any issues with nightly builds, please report them in our
86
+
[issues tracker](https://github.com/meshtastic/web/issues). Your feedback helps
87
+
improve the stability of future releases
74
88
75
89
## Development & Building
76
-
You'll need to download the package manager used with this repo. You can install it by visiting [Bun.sh](https://bun.sh/) and following the installation instructions.
77
90
78
-
### Debugging
91
+
You'll need to download the package manager used with this repo. You can install
92
+
it by visiting [deno.com](https://deno.com/) and following the installation
93
+
instructions listed on the home page.
94
+
95
+
### Development
96
+
97
+
Install the dependencies.
98
+
99
+
```bash
100
+
deno i
101
+
```
102
+
103
+
Start the development server:
104
+
105
+
```bash
106
+
deno task dev
107
+
```
108
+
109
+
### Building and Packaging
110
+
111
+
Build the project:
112
+
113
+
```bash
114
+
deno task build
115
+
```
116
+
117
+
GZip the output:
118
+
119
+
```bash
120
+
deno task package
121
+
```
122
+
123
+
### Why Deno?
124
+
125
+
Meshtastic Web uses Deno as its development platform for several compelling
permissions for file, network, and environment access, reducing vulnerability
130
+
risks.
131
+
-**TypeScript Support**: Native TypeScript support without additional
132
+
configuration, enhancing code quality and developer experience.
133
+
-**Modern JavaScript**: First-class support for ESM imports, top-level await,
134
+
and other modern JavaScript features.
135
+
-**Simplified Tooling**: Built-in formatter, linter, test runner, and bundler
136
+
eliminate the need for multiple third-party tools.
137
+
-**Reproducible Builds**: Lockfile ensures consistent builds across all
138
+
environments.
139
+
-**Web Standard APIs**: Uses browser-compatible APIs, making code more portable
140
+
between server and client environments.
141
+
142
+
### Debugging
79
143
80
144
#### Debugging with React Scan
81
-
Meshtastic Web Client has included the library [React Scan](https://github.com/aidenybai/react-scan) to help you identify and resolve render performance issues during development.
82
145
83
-
React's comparison-by-reference approach to props makes it easy to inadvertently cause unnecessary re-renders, especially with:
146
+
Meshtastic Web Client has included the library
147
+
[React Scan](https://github.com/aidenybai/react-scan) to help you identify and
148
+
resolve render performance issues during development.
149
+
150
+
React's comparison-by-reference approach to props makes it easy to inadvertently
151
+
cause unnecessary re-renders, especially with:
84
152
85
153
- Inline function callbacks (`onClick={() => handleClick()}`)
86
154
- Object literals (`style={{ color: "purple" }}`)
87
155
- Array literals (`items={[1, 2, 3]}`)
88
156
89
-
These are recreated on every render, causing child components to re-render even when nothing has actually changed.
157
+
These are recreated on every render, causing child components to re-render even
0 commit comments