Files
marco/PROJECT_STATUS.md
Râu Cao cfcaaea3ec
All checks were successful
CI / Lint (push) Successful in 49s
CI / Test (push) Successful in 57s
Update status doc
2026-03-18 17:42:50 +04:00

75 lines
3.4 KiB
Markdown

# Project Status: Marco
**Last Updated:** Wed Mar 18 2026
## Project Context
We are building **Marco**, a decentralized maps application using **Ember.js** (Octane/Polaris), **Vite**, and **OpenLayers**. The core feature is storing place bookmarks in **RemoteStorage.js**.
## What We Have Done
### 1. Map Integration
- **Vector Tiles:** Using **OpenFreeMap Liberty** style with a hybrid click handler (Visual Tiles + Overpass API fallback).
- **Smart Interaction:**
- **Hit Tolerance:** 10px buffer for easier mobile tapping.
- **Auto-Pan:** Selected pins automatically center in the visible area (respecting bottom sheets/sidebars).
- **Smart Zoom:** `zoomToBbox` fits complex geometries (ways/relations) with dynamic padding, only zooming out to fit.
- **Visuals:** Custom "Red Pin" overlay with drop animation. Selected OSM ways/relations show distinct blue outlines.
- **Geolocation:** Robust "Locate Me" with dynamic zoom and accuracy visualization.
### 2. RemoteStorage Module (`@remotestorage/module-places`)
- **Custom Module:** Handles `place` objects with Geohash-based partitioning (`<2-char>/<2-char>/<id>`).
- **Optimization:** Supports efficient spatial querying via prefix loading.
- **Lists Support:** Manages collection-based organization (e.g., "To Visit", "Favorites").
### 3. App Infrastructure
- **Services:**
- `storage.js`: Manages RemoteStorage, caching, and the new **Lists** feature (`to-go`, `to-do`).
- `osm.js`: Fetches/caches POIs from Overpass API (configurable endpoints).
- `settings.js`: Persists user preferences (e.g., API provider).
- **UI Components:**
- **Responsive Layout:** Sidebar transforms into a Bottom Sheet on mobile.
- **Place Details:** Rich info (Address, Socials, Opening Hours) with distinct "Actions" and "Meta" sections.
- **App Menu:** Comprehensive settings and about section, implemented as a secondary sidebar.
- **CI/CD:** Gitea Actions for automated testing and release drafting.
### 4. Routing & Architecture
- **URL-Driven:** `/search` (list) and `/place/:id` (details) routes.
- **Smart Navigation:**
- Direct hits redirect to details.
- Search results automatically resolve to existing **Bookmarks**.
- "Back" navigation returns to cached search results instantly.
### 5. Features
- **Search:** Typo-tolerant **Photon API** integration with location bias and debounce.
- **Creation & Editing:**
- "Crosshair" mode for precise location picking.
- Edit Title/Description for saved places.
- **Lists:** Users can add places to default lists ("To Go", "To Do") directly from the details view.
- **Socials:** Place details now include Email, Facebook, and Instagram links.
- **Data Sync:** Auto-refreshes OSM data (coords/tags) for saved places on view, preserving custom titles.
## Current State
- **Repo:** Runs via `pnpm start`.
- **Workflow:**
1. **Explore:** Pan/Zoom loads bookmarks from RemoteStorage.
2. **Search:** Query via Photon -> List or Direct Result.
3. **View:** Details pane (Sidebar/Bottom Sheet) shows rich info + social links.
4. **Action:**
- **Save:** Persist to RemoteStorage.
- **Organize:** Add to "To Go" / "To Do" lists.
- **Edit:** Custom Title/Description.
5. **Sync:** Background check updates OSM data if changed.
## Next Steps
1. **Testing:** Add automated tests for the new Lists logic and Geohash coverage.
2. **Performance:** Monitor with large datasets.
3. **Refinement:** Polish list UI and interactions.