Giter Site home page Giter Site logo

meshaddicts / meshinfo Goto Github PK

View Code? Open in Web Editor NEW
30.0 3.0 7.0 16.03 MB

Realtime web UI to run against a Meshtastic regional or private mesh network.

Home Page: https://svm1.meshinfo.network

Python 38.35% Dockerfile 0.52% CSS 0.06% JavaScript 0.48% Jinja 39.81% Shell 0.34% HTML 2.98% TypeScript 17.46%
lora m mesh mesh-networks meshtastic meshtastic-python webapp

meshinfo's People

Contributors

armooo avatar daviesgeek avatar kevinelliott avatar quimnut avatar stefanthoss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

meshinfo's Issues

Refactor main.py

The main.py has bloated significantly, which was expected since this first started as an exploration but as become a real project since. We need to refactor it so that things are more modular and potentially testable.

Move Caddyfile to Caddyfile.sample

Need to make this more friendly for users.

  • move Caddyfile to Caddyfile.sample
  • add Caddyfile to .gitignore
  • update README.md with cp Caddyfile.sample Caddyfile and instructions to edit during setup steps

Add MapBox option

Add the option to use MapBox. This might be challenging to maintain two map implementations, but the value is that the host can benefit from more premium map features if willing to pay for MapBox (though the free tier offers a ton of value, especially for small sites, which these Meshtastic mesh sites should be).

@daviesgeek I will coordinate with you when this becomes a need in the React app (and can help a lot).

Move config into json or yaml

Right now config is defined in config.py as a dict, but realistically this is not ideal.

We probably need something that combines a standard JSON/YAML plus some additional dynamic massaging.

Feature: Backups

Initial capability to backup data.

  1. On some (configurable in config.json) interval, backup all the JSON data (eventually include DB(s))
  2. Optionally allow for backing up of the statically rendered HTML too

Feature: Nets

This is probably more along the lines of a BBS, but the ability to send out a message to which people must DM a check-in would be great for building a network map

Add consistent images for each hardware type

Some of the pages will use the hardware info of the nodes in order to display an image of the hardware. Preferably these should all go in public/images/hardware and be named based on their corresponding hardware integer ID (defined at https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.HardwareModel), thus a Heltec V3 is 43.png.

The images should have the following requirements:

  • consistent sizing
  • named NUM.png
  • put in public/images/hardware/
  • consistent in style as much as possible (though I recognize this is not perfect)
  • alpha for the background if possible, otherwise white

Feature: Dynamic Mesh Name Styling

This is "neat"

image

but it doesn't work well for anyone running their own instance.

We need to dynamically style this based on the Mesh Name defined in the config.json.

Move save() to async

Right now the save() functionality (which persists to JSON files and/or renders HTML files) is blocking and will interrupt the MQTT queue/stream, and also will block API requests. We need to make this an async operation.

We will likely need to make not only the method call async, but also do a .copy() on the objects so that other operations do not modify the contents of the references while it iterates.

MQTT client id to be semi-dynamic

Current default client_id is meshinfo, which is totally fine if only a single client with this ID will connect to a MQTT server. If it collides with another, it disconnects that client. Therefore, we should make client_id in the Config be renamed to client_id_prefix and then have it generate a dynamic (or saved) suffix, perhaps a UUID (one with the timestamp decodable perhaps).

Feature: Add Redis for caching

We will want a redis component to cache some fragments and/or even pages to improve general performance, eventually. The API and the main loop would make the most use of this, but the bot might as well.

App Icons

We need to create some kind of an app icon for MeshInfo. And then we need to put it in place for:

  • public/favicon.ico
  • public/apple-touch-icon.png
  • public/apple-touch-icon-precomposed.png

Totally fine to put something quick and random as a temporary stopgap.

Add first pass of tests

We need some tests, it's only right for us to do this when there's more than 1 dev. First dev to implement some tests gets 3 cookies.

Feature: Initial API endpoints

Now that we are looking to start moving to the SPA using React, we want to expose the data via an API. This API could also be used by the community of users that a MeshInfo is serving, perhaps to help power other projects.

Initial batch of endpoints considered are:

  • /v1/nodes - Paginated array of all known nodes (or with some params, a filtered array of nodes)
  • /v1/nodes/:id - Gets a node info (intelligently between hex and int ids)
  • /v1/nodes/:id/texts
  • /v1/nodes/:id/telemetry
  • /v1/nodes/:id/traceroutes
  • /v1/server/config - The server's configuration (useful for showing server details on UI)
  • /v1/telemetry - Paginated array of telemetry (filterable)
  • /v1/traceroutes - Paginated array of traceroutes (filterable)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.