Skip to content

Commit 8549350

Browse files
committed
feat: Adds the ability for the user to choose their intention
1 parent 31bd5dc commit 8549350

7 files changed

Lines changed: 374 additions & 57 deletions

File tree

AGENTS.md

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
- An open-source, web-based alternative to Randonautica that generates unique random real-world coordinates for exploration
66
- The user sets a starting point (via GPS or map click) and a search radius (500m to 5km)
7-
- The app generates an "attractor" point: the area of highest random-point density within the radius
8-
- Attractor coordinates can be opened directly in Google Maps
7+
- The user selects an Intention (one of 9 quantum generation strategies) before generating
8+
- The app generates a destination point based on Kernel Density Estimation applied to CSPRNG random points
9+
- Destination coordinates can be opened directly in Google Maps
910
- Optional overlay: parks, forests, and other public areas within the radius (polygon display)
10-
- Optional overlay: the 3 closest parking spots to the generated attractor (marker display)
11+
- Optional overlay: the 3 closest parking spots to the generated destination (marker display)
1112
- The app runs entirely client-side, no backend, no user accounts, no persistence
1213

1314
## Technical Details
@@ -38,10 +39,25 @@ vite.config.ts # Vite config (base path, plugins, HMR)
3839
## Core Algorithms
3940

4041
### Attractor Calculation (`quantumService.ts`)
41-
1. Generate 512 random GPS points within the radius using the browser's native CSPRNG (`crypto.getRandomValues`)
42-
2. Convert raw `Uint16Array` integers (0–65535) to polar coordinates (random radius + angle)
43-
3. Apply Silverman bandwidth estimation (KDE) over a 100×100 grid
44-
4. Return the grid cell with the highest Gaussian kernel density as the attractor
42+
1. Resolve the active `IntentionType` to its `IntentionConfig` (point count + KDE selector)
43+
2. Generate N random GPS points within the radius using the browser's native CSPRNG (`crypto.getRandomValues`), where N varies per intention (256–1024)
44+
3. Convert raw `Uint16Array` integers (0–65535) to polar coordinates (random radius + angle)
45+
4. Apply Silverman bandwidth estimation (KDE) over a 100×100 grid
46+
5. Select the result cell based on the intention's `kdeSelector`: `'max'` (highest density), `'min'` (lowest density), or a percentile fraction (0–1)
47+
48+
#### Intention Configs
49+
50+
| Intention | Point Count | KDE Selector |
51+
|---|---|---|
52+
| `explore` | 512 | 50th percentile |
53+
| `routine` | 256 | 75th percentile |
54+
| `synchronicity` | 1024 | max |
55+
| `anomaly` | 512 | 85th percentile |
56+
| `attractor` | 1024 | max |
57+
| `repeller` | 512 | min |
58+
| `planeshifting` | 256 | 25th percentile |
59+
| `trial` | 512 | 90th percentile |
60+
| `quest` | 768 | 60th percentile |
4561

4662
### Map Data (`mapDataService.ts`)
4763
- Queries the Overpass API (with fallback across 4 mirror instances) for:
@@ -58,6 +74,23 @@ vite.config.ts # Vite config (base path, plugins, HMR)
5874
- Green `#22c55e` (green-500): public area polygons and toggle button
5975
- Map tile: CartoDB dark_all
6076

77+
### Intention Colors
78+
Each intention has its own accent color used in the capsule button and modal:
79+
80+
| Intention | Color |
81+
|---|---|
82+
| Explore the Unknown | `#6366f1` (indigo) |
83+
| Break the Routine | `#f97316` (orange) |
84+
| Synchronicity | `#a855f7` (purple) |
85+
| The Anomaly | `#14b8a6` (teal) |
86+
| Attractor | `#8b5cf6` (violet) |
87+
| Repeller | `#ef4444` (red) |
88+
| Planeshifting | `#22d3ee` (cyan) |
89+
| The Trial | `#f59e0b` (amber) |
90+
| The Quest | `#84cc16` (lime) |
91+
92+
The intention selector is a compact capsule button in the control panel. Clicking it opens a bottom-sheet modal with a list of intentions, each with an icon, name, and an info button that shows a floating viewport-aware tooltip.
93+
6194
## Coding Standards
6295

6396
1. Use latest idiomatic React (hooks, `memo` for pure components, `useRef` for non-reactive state)

README.md

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ By leveraging your device's native Cryptographically Secure Random Number Genera
1111
**Features:**
1212
- Set your starting location via GPS or by clicking on the map.
1313
- Choose a search radius between 500m and 5km.
14+
- Select an Intention to tune the quantum generation strategy (9 modes available).
1415
- Generate unpredictable true-random destination points.
1516
- Toggle the display of parks, forests, and other public areas within your search radius.
16-
- Automatically identify the 3 closest parking spots to your generated attractor.
17-
- Open the coordinates directly in Google Maps.
17+
- Automatically identify the 3 closest parking spots to your generated destination.
18+
- Open the coordinates directly in Google Maps.
1819

1920
Built with React, Leaflet, and Tailwind CSS.
2021

2122

22-
## 🧠 About the Theory
23+
## About the Theory
2324

2425
OpenRando is inspired by the **Fatum Project**, a research initiative exploring "probability blind-spots" (places in the physical world that fall outside our daily deterministic routines). Read more about the theory [here](https://github.com/anonyhoney/fatum-en/blob/master/docs/fatum_theory.txt).
2526

@@ -28,18 +29,13 @@ OpenRando is inspired by the **Fatum Project**, a research initiative exploring
2829
- **Reality-Tunnels**: The mental and causal loops that limit our perspective and actions.
2930
- **Blind-Spots**: Locations nearby that you would never visit because no logic or habit would ever lead you there.
3031

31-
### 🛠️ Hardware Entropy vs. QRNG
32+
### Hardware Entropy vs. QRNG
3233

3334
While the original Fatum project often relies on external Quantum Random Number Generator (QRNG) servers (like ANU), OpenRando is designed for privacy, speed, and independence.
3435

3536
Instead of polling remote APIs, this application utilizes your device's native Cryptographically Secure Pseudo-Random Number Generator (CSPRNG). This algorithm generates randomness by harvesting local entropy from the system's hardware noise and environmental events.
3637

3738
This ensures that your exploration remains entirely local and private, while still providing the level of unpredictability needed to "break" deterministic outcomes.
3839

39-
4040
## 🤝 Contributing
41-
OpenRando is an open-source project and contributions are more than welcome! Whether you want to fix a bug or suggest a feature, feel free to open an Issue or submit a Pull Request.
42-
43-
44-
## 📝 License
45-
OpenRando is licensed under the MIT License.
41+
OpenRando is an open-source project and contributions are more than welcome! Whether you want to fix a bug or suggest a feature, feel free to open an Issue or submit a Pull Request.

screenshot/OpenRando.jpg

-9.73 KB
Loading

screenshot/OpenRando.psd

98.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)