Frontend Monorepo Design
The frontend is set up as a monorepo workspace managed via pnpm and built using turborepo. It separates applications from shared modular libraries (packages) to promote code reuse.
๐ Frontend Layoutโ
Located under frontend/:
frontend/
โโโ apps/
โ โโโ stacgis/ # Main client application (React + Vite)
โโโ packages/
โ โโโ map/ # Shared map viewer and drawing components
โ โโโ ui/ # Modular design UI kits (Button, Modal, etc.)
โ โโโ charts/ # Common data charting utilities
โ โโโ language/ # Internationalization setup (i18n)
โ โโโ accessibility/ # Accessibility helper scripts
โ โโโ cookie-consent/ # Consent banner shared components
โโโ package.json # Monorepo configuration
โโโ pnpm-workspace.yaml # Defines workspace paths
โโโ turbo.json # Turborepo execution pipeline cache configuration
1. Applications (apps/)โ
- stac-gis (
apps/stacgis): The primary interface. It features dashboard metrics, GIS mapping toolbars, an admin panel for data management (collections, vectors, users, knowledge base), and an integrated Chat Widget that communicates with the Backend AI agent loop.
2. Shared Packages (packages/)โ
To prevent code duplication, shared components are published as local packages and imported like normal npm modules:
UI Kit (packages/ui)โ
A custom component library implementing the visual design system:
import { Button, Card } from '@stacgis/ui';
Map Engine (packages/map)โ
Wraps Leaflet and Mapbox GL JS map configurations. It exports components like MapContainer, DrawingToolbar, and coordinate transformation functions.
import { MapContainer, DrawingTools } from '@stacgis/map';
This ensures every application built on the monorepo renders identical maps and shares the same drawing logic.