Commit Graph

30 Commits

Author SHA1 Message Date
geoffsee
b4c80f3e01 Refactor AIS server to use Axum framework with shared stream manager and state handling. Fix metadata key mismatch in frontend vessel mapper. 2025-07-21 21:11:06 -04:00
geoffsee
0a0c15a47e Implement AIS Test Map application with WebSocket-based vessel tracking and Mapbox integration. 2025-07-21 21:11:06 -04:00
geoffsee
2383684acb Add key event handlers for search and result selection in App.tsx 2025-07-21 21:11:06 -04:00
geoffsee
6fadc296e4 Update search button text to "Search..." for better clarity. 2025-07-21 21:11:06 -04:00
geoffsee
c0f52e0df8 update names in layer selector 2025-07-21 21:11:06 -04:00
geoffsee
82b99b5eab **Introduce Neumorphic UI design with new themes and styles**
- Added NeumorphicTheme implementation for light and dark modes.
- Refactored `LayerSelector` and `MapNext` components to use the neumorphic style and color utilities.
- Updated `menu.rs` with neumorphic-inspired button and background styling.
- Enhanced GPS feed and vessel popups with neumorphic visuals, improving clarity and aesthetics.
- Temporarily disabled base-map dependency in `yachtpit` for isolation testing.
2025-07-21 21:11:06 -04:00
geoffsee
7528b2117b WIP: Enable dynamic AIS stream handling based on user location and map focus.
- Prevent AIS stream from starting immediately; start upon user interaction.
- Add `ais_stream_started` state for WebSocket management.
- Extend `useRealAISProvider` with `userLocationLoaded` and `mapFocused` to control stream.
- Update frontend components to handle geolocation and map focus.
- Exclude test files from compilation

Introduce WebSocket integration for AIS services

- Added WebSocket-based `useRealAISProvider` React hook for real-time AIS vessel data.
- Created various tests including unit, integration, and browser tests to validate WebSocket functionality.
- Added `ws` dependency to enable WebSocket communication.
- Implemented vessel data mapping and bounding box handling for dynamic updates.
2025-07-21 21:11:06 -04:00
Geoff Seemueller
e029ef48fc Gpyes integration (#11)
* Introduce core modules: device management, bus communication, and discovery protocol. Adds system device interface, virtual hardware bus, and device discovery logic. Includes tests for all components.

* improve map
- Fix typos in variable and function names (`vessle` to `vessel`).
- Add `update_vessel_data_with_gps` function to enable GPS integration for vessel data updates.
- Integrate real GPS data into vessel systems and UI components (speed, heading, etc.).
- Initialize speed gauge display at 0 kts.
- Include `useEffect` in `MapNext` to log and potentially handle `vesselPosition` changes.

**Add compass heading update system using GPS heading data.**

- Remove `UserLocationMarker` component and related code from `MapNext.tsx`
- Simplify logic for layer selection and navigation within `App.tsx`
- Replace map style 'Bathymetry' with 'OSM' in layer options

improve map

* update image

---------

Co-authored-by: geoffsee <>
2025-07-20 15:51:33 -04:00
Geoff Seemueller
602bc5d4b8 Integrate browser geolocation API (#9)
* Add GPS service and nautical base city data

- Implement `GpsService` with methods for position updates and enabling/disabling GPS.
- Introduce test data for nautical base cities with key attributes like population, coordinates, and images.
- Update dependencies in `bun.lock` with required packages such as `geojson`.

* give map a custom style

* shift towards rust exclusivity

* `build.rs` streamlines map build. Added an axum server with the map assets embedded.

* update readmes

* base-map api retrieves geolocation from the navigator of the browser

* make map standalone wry that pulls assets from the server to simulate behavior in bevy

* wip wasm

* wasm build fixed

* fix path ref to assets

---------

Co-authored-by: geoffsee <>
2025-07-16 17:44:25 -04:00
Geoff Seemueller
92e5cfb21c bridge bevy and react-map-gl to exchange gps (#6)
* isolate ipc pattern

* shuffle logic in main for readability, remove unused webview message observer

* renders react map

---------

Co-authored-by: geoffsee <>
2025-07-08 17:44:37 -04:00
Geoff Seemueller
44081ad73d populate webview with react-map-gl (#5)
* webview displays in gps map with wry, happy 4th, boom boom

* gps-map is webview with html

* Add initial setup for `base-map` package

- Include `.gitignore` for package-specific files and logs.
- Implement a basic interactive Mapbox map with Chakra UI layout.
- Add token storage and retrieval mechanism using `js-cookie`.
- Initialize `bun.lock` with dependencies.

* "Replace static GPS map with dynamically built base-map package integration and update related paths and scripts"

* fix wasm32 builds

---------

Co-authored-by: geoffsee <>
2025-07-05 09:49:34 -04:00
Geoff Seemueller
73ee3add8d webview displays in gps map with wry, happy 4th, boom boom (#4)
Co-authored-by: geoffsee <>
2025-07-04 21:11:38 -04:00
geoffsee
71efeb4c46 temp revert gps map init logic 2025-07-04 06:24:11 -04:00
geoffsee
496d4b550a add map foundation 2025-07-03 15:00:06 -04:00
geoffsee
cad210c991 Add RadarDataLinkProvider with multi-source radar data support 2025-07-03 14:31:27 -04:00
geoffsee
0bbfe5f52f Add GPS and AIS data link providers with support for multiple data sources 2025-07-03 14:12:52 -04:00
geoffsee
f6f3d1a512 Add conditional compilation for non-WASM targets in AIS system 2025-07-03 13:44:34 -04:00
geoffsee
a5a87a86fd Add datalink-provider crate for real-world AIS data handling
- Introduced a new crate, `datalink-provider`, to support real AIS data sources (serial, TCP/UDP, file replay).
- Integrated it into the workspace and used it in the `AIS` system, replacing the simulation datalink.
- Updated dependencies and lock file.
2025-07-03 13:02:14 -04:00
geoffsee
b6f06b5e6c compiles, no display 2025-07-03 12:41:26 -04:00
geoffsee
7a23e55894 Update README.md files for components, systems, and yachtpit crates with detailed module descriptions, usage examples, and architecture overviews. 2025-07-03 12:11:31 -04:00
geoffsee
3f694f4494 Modularized existing vessel systems into separate modules (AIS, GPS, Radar) and restructured the project for improved maintainability. Updated references and documentation accordingly. 2025-07-03 11:58:55 -04:00
geoffsee
f0935f2b54 abstract vessel/systems 2025-07-03 11:30:39 -04:00
geoffsee
5711d84698 - Update UI components to use transparent backgrounds instead of solid colors.
- Standardize text formatting and color usage across instrument clusters and gauges.
- Add new `BACKGROUND_COLOR_TRANSPARENT` definition in theme constants.
- Minor cleanup and adjustments for consistency in UI layouts.
2025-07-02 23:11:48 -04:00
geoffsee
1abe0047fc wasm size optimizations 2025-07-02 20:14:37 -04:00
geoffsee
7d2715e3cb yachtpit release profile optimized for performance 2025-07-02 20:01:37 -04:00
geoffsee
6f94c38080 make buttons functional 2025-07-02 19:49:50 -04:00
geoffsee
f5de8e943b Refactor instrument cluster components into individual modules for improved maintainability and reusability. 2025-07-02 09:41:28 -04:00
geoffsee
291b73fb06 Add READMEs for components, systems, and yachtpit crates; update project overview in root README. 2025-07-02 09:22:07 -04:00
Geoff Seemueller
2cf78e861e Modularize (#1)
* configure workspaces

* Modularize domain logic by creating a new `models` crate.

* Moved `LoadingPlugin` and `MenuPlugin` from `core` to a new `ui` module. Updated imports accordingly.

* add theme for instruments

* trunk serve works, remove audio and textures

* remove loading indicator and assets

* rename models to systems

* seperate systems and components from models

* Refactor instrument cluster to leverage reusable composition utilities.

---------

Co-authored-by: geoffsee <>
2025-07-02 08:51:34 -04:00
Geoff Seemueller
456fd31684 Modularize (#1)
* configure workspaces

* Modularize domain logic by creating a new `models` crate.

* Moved `LoadingPlugin` and `MenuPlugin` from `core` to a new `ui` module. Updated imports accordingly.

* add theme for instruments

* trunk serve works, remove audio and textures

* remove loading indicator and assets

* rename models to systems

* seperate systems and components from models

* Refactor instrument cluster to leverage reusable composition utilities.

---------

Co-authored-by: geoffsee <>
2025-07-01 22:22:40 -04:00