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

3.4 KiB

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.