A React Progressive Web App using a Garmin Decent Dive computer/watch
divemalta.app
Garmin Descent™ Mk1
Versatile GPS Dive Computer for Your Diving Adventures
- Premium full-featured dive computer with surface GPS in a sleek watch-style design; with bright 1.2” color display and TOPO mapping
- Built-in sensors include 3-axis compass, gyroscope and barometric altimeter as well as GPS and GLONASS capability that lets you mark your dive entry and exit points¹ for surface navigation
- Choose modes for single and multiple gas dives (including nitrox and trimix), gauge, apnea and closed circuit rebreather (CCR); plan your dives directly on the device
- Dive log lets you store and review data from up to 200 dives — and share online via Garmin Connect™ and its included mobile app
- Features Elevate™ wrist heart rate technology² with multisport activity profiles, performance metrics and smart notifications³
- Battery life: up to 19 days in watch mode, 10 days in smartwatch mode, 40 hours in dive mode and 20 hours in GPS mode
The App
This is a React Progressive Web App. It uses data created with a Garmin Descent™ Mk1. You can create compatable data (.gpx) with pretty much any smart device for free. Upload and make it more fun here
View, Edit & Share Geodata using React & Material UI
<noscript>You'll need a _lot_ more JavaScript to run this</noscript>
<div id="divemalta" />
Some features of the app are available free on GitHub public repositories. Some are not. eg: index.tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import {
Route,
Switch,
BrowserRouter as Router
} from 'react-router-dom';
import { Provider } from 'react-redux';
import { featuresStore } from './features/featuresStore';
import {
Grid, Container, createTheme,
ThemeProvider, CssBaseline,
} from "@mui/material";
import {
Shared,
TopMenu,
theme,
} from "./features/Shared";
console.warn(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`);
export const getFeaturesStore = () => { return featuresStore }
const root = ReactDOM.createRoot(
document.getElementById('gpx-react') as HTMLElement
)
...