Spriglet is a collaborative tabletop device ecosystem for games and other activities requiring shared counting or tracking. Each device has a display and input (e.g., button), and devices form a local mesh network to synchronize state. Players can join or leave at any time without disrupting the shared state.
- Local mesh networking between devices.
- Shared game or tracking state using CRDTs (PN-Counters and structured JSON objects).
- Simple, playful interface with a display and input for each device.
- Support for multiple games or collaborative tracking use-cases.
- Future Android app as a provisioner or client for additional functionality.
- Hardware: ESP32 (display + button) for prototyping.
- Networking: Bluetooth Mesh (BLE Mesh, Bluetooth SIG standard) for peer-to-peer communication.
- Data Synchronization: Conflict-free Replicated Data Types (CRDTs) for eventual consistency, supporting increments and decrements.
- UI/UX: Friendly, minimalistic displays; color coding optional for multiple players/devices.
- Each player statistic is represented by a PN-Counter (Positive-Negative Counter) to allow both increments and decrements.
- Structured game state represented as a JSON-like object with per-device sub-counters.
- Merge rule: take element-wise maximum of all replica counters to guarantee convergence.
- Example for a single player:
{
"points": { "P": { "d1": 3 }, "N": { "d2": 1 } },
"lives": { "P": { "d1": 5 }, "N": { "d2": 2 } }
}- Name: Spriglet
- Logo Concept: Small sprout with three rounded leaves, representing multiple players/devices. Soft pastel colors (green + yellow).
- Typography: Rounded sans-serif font (e.g., Nunito, Quicksand, Poppins) for friendliness and readability.
- Tagline: "Grow your game, together."
- Ease of Use: Minimal learning curve; players interact directly with devices.
- Resilience: Devices join/leave without disrupting the mesh; CRDT ensures convergence.
- Flexibility: Supports multiple types of games or collaborative counting tasks.
- Playfulness: Friendly, whimsical aesthetic to engage users.
+-------------------+ +-------------------+ +-------------------+
| ESP32 Device | | ESP32 Device | | ESP32 Device |
| + Display/Button | <----> | + Display/Button | <----> | + Display/Button |
| + CRDT State | | + CRDT State | | + CRDT State |
+-------------------+ +-------------------+ +-------------------+
^ |
| |
+------------------- Android App ----------------------------+
(Provisioner, future client via BLE Mesh)
- Prototype a single device with display, button, and BLE Mesh connectivity.
- Implement PN-Counter CRDT logic for shared state.
- Test multi-device mesh synchronization and convergence.
- Design friendly UI and branding elements for devices and future app.
- Plan for cross-language usability and potential Android app integration.