markaspot/mark-a-spot

Mark-a-Spot is a Drupal distribution for crowdmapping and public civic issue tracking

Installs: 1 127

Dependents: 0

Suggesters: 0

Security: 0

Stars: 64

Watchers: 8

Forks: 32

Open Issues: 1

Language:TypeScript

Type:project

pkg:composer/markaspot/mark-a-spot

11.7.6 2025-12-07 07:21 UTC

README

Mark-a-Spot Logo

Open-Source Civic Issue Tracking · Drupal 11 · Open311

Docker Image CI License: GPL v2+ Drupal: 11

Features

  • Citizen Reporting – Photos, descriptions, geolocation
  • Interactive Maps – Pinpoint locations, clustering, filtering
  • Open311 API – Standard GeoReport v2 integration
  • Workflow Management – Track issues from report to resolution

Built for municipalities, public service departments, and civic tech organizations.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                     Frontend (PWA)                          │
│         Vue 3 · TypeScript · Tailwind · MapLibre            │
└─────────────────────────────┬───────────────────────────────┘
                              │
                    HTTPS/JSON (REST)
                              │
┌─────────────────────────────▼───────────────────────────────┐
│                    Drupal 11 Backend                        │
│                                                             │
│  ┌──────────────────────┐  ┌──────────────────────┐        │
│  │     Open311 API      │  │       JSON:API       │        │
│  │     (GeoReport)      │  │        (CRUD)        │        │
│  └──────────────────────┘  └──────────────────────┘        │
└─────────────────────────────────────────────────────────────┘

Quick Start

Requires DDEV.

git clone https://github.com/markaspot/mark-a-spot.git
cd mark-a-spot
ddev start
ddev ssh
./scripts/start.sh -y
exit

Access:

Installation Options

Flag Description
-y Autopilot mode (defaults: New York, en_US)
-t Import Drupal translation files
-a AI content translation (requires OPENAI_API_KEY)

Combine flags as needed: ./scripts/start.sh -t -a

Multilingual Setup

Use -t for Drupal translations, -a for AI-powered content translation. Requires OPENAI_API_KEY. See ./scripts/start.sh --help for details.

API

Implements the Open311 GeoReport v2 standard.

Endpoint Description
GET /georeport/v2/services.json List service categories
GET /georeport/v2/requests.json List service requests
GET /georeport/v2/requests/{id}.json Get single request
POST /georeport/v2/requests.json Create request

Requirements

  • PHP 8.3+
  • Node.js 22+ (LTS)
  • MySQL 8.0+ / MariaDB 10.6+
  • Composer 2.x

Contributing

License

GPL-2.0-or-later