CariGPX: High-Performance GPX Track Sharing Platform
golangnuxtvuetypescriptgeospatialapi-design

CariGPX

CariGPX is a modern web application designed for outdoor enthusiasts—hikers, cyclists, and runners—to upload, visualize, and share their GPS tracks. Unlike standard tracking apps, CariGPX focuses on data ownership, privacy controls, and high-performance rendering of geospatial data.

The system is architected as a decoupled full-stack solution, leveraging the raw performance of Go for heavy data processing and the reactivity of Nuxt 3 for a seamless user interface.

🛠 Tech Stack

Backend (API)

  • Language: Go (Golang)
  • Routing: chi router for lightweight, idiomatic HTTP handling.
  • Auth: JWT (JSON Web Tokens) with a 7-day expiry window.
  • Data Processing: Custom GPX parsing and GeoJSON conversion.

Frontend (Client)

  • Framework: Nuxt 3 (Vue 3 + TypeScript).
  • Styling: Tailwind CSS (Headless UI components).
  • Visualization: Leaflet for track rendering and interactive elevation charts.

🚀 Key Features

1. Advanced Track Management & Privacy

A core requirement was granular privacy control. Users can set their tracks to three distinct visibility levels:

  • Public: Indexed in the global catalog and sitemap for SEO.
  • Unlisted: Accessible only via a unique shared link (UUID/Token).
  • Private: Visible exclusively to the owner.

2. Instant Visualization

The platform features a "Parse-First" approach. The frontend creates an immediate client-side visualization of the GPX file before final storage, providing instant feedback on elevation, distance, and moving time.

  • Endpoint: POST /api/parse handles statistical analysis without requiring database persistence.

3. Explore & Discovery

The Explore page allows users to browse public tracks using advanced filtering:

  • Filter by Activity Type (Hiking, Cycling).
  • Sort by Elevation Gain, Distance, or Recency.
  • Geospatial search by location (Provinces/Cities).

4. Internationalization (i18n)

To support a diverse community of outdoor enthusiasts, the application is fully internationalized. Users can seamlessly toggle between languages, ensuring the interface and track data are accessible to a global audience.

5. Admin & Moderation System

To maintain platform quality, a Role-Based Access Control (RBAC) system is implemented:

  • Moderators: Can view audit logs (GET /tracks/{id}/logs), and update or delete problematic tracks.
  • Admins: Have full control over user management, including promoting/demoting users and syncing track data.

🏗 Architecture Highlights

The API Strategy

The backend is structured around a RESTful philosophy, with distinct resource groups for Tracks, Authentication, and Administration.

  • Health & SEO: Dedicated endpoints for health checks (/health) and dynamic sitemap generation (/api/sitemap.xml) ensuring the Single Page Application (SPA) remains search-engine friendly.
  • Batch Operations: The API supports batch deletion of tracks to improve user experience in the dashboard.

Frontend Component Design

The Nuxt 3 application utilizes a modular component strategy to maintain code reusability:

  • TrackCard: A shared component for displaying track summaries in grids (Home, Explore, Dashboard).
  • TrackViewer: The core visualization engine used in both the upload preview and the detailed track view.
  • UiModal / UiButton: A consistent design system using Headless UI patterns.

📸 Usage Flows

Guest vs. Authenticated

  • Guests can upload public tracks immediately or explore the catalog.
  • Registered Users gain access to a personal Dashboard, where they can manage their uploaded history, batch delete tracks, and edit metadata (titles, descriptions, location tags).

Account Security

The system implements a robust authentication flow including email confirmation, password resets via token, and profile management (password changes/updates).

© 2024 - 2026 DiBotak. All rights reserved.