This project is a robust boilerplate for modern web applications, specifically tailored for geospatial needs but flexible enough for any use case. It leverages a cutting-edge technology stack to provide a scalable, high-performance foundation.
Geoglify is built with the latest and greatest versions of its core technologies:
| Category | Technology | Version |
|---|---|---|
| Backend | Laravel (PHP) | ^12.0 |
| Language | PHP | ^8.4 |
| Frontend | Vue.js | ^3.5.25 |
| Build Tool | Vite | ^7.2.4 |
| UI Framework | Vuetify | ^3.7.0 |
| CSS | Tailwind CSS | ^4.1.17 |
| SPA Glue | Inertia.js | ^1.0.0 |
| Mapping | MapLibre GL | ^4.6.0 |
| Map Server | Martin | Latest |
| Database | PostgreSQL | 16 |
| Spatial DB | PostGIS | 3.4 |
| Infra | Docker | - |
- Geospatial Ready: Built-in support for vector tiles (PMTiles), spatial database functions, and interactive maps.
- Modern & Fast: Uses Vite, HTTP/3 ready stack, and efficient vector tiles.
- Developer Experience: Fully containerized with Docker for easy setup and consistency.
- Scalable: Separation of concerns with a dedicated map tile server (
Martin) and a robust Laravel backend.
geoglify/
├── database/ # Database Docker configuration & init scripts
├── martin/ # Martin Tile Server configuration
├── pmtiles/ # Data directory for hosted .pmtiles (Ignored by Git)
├── webapp/ # Main Laravel + Vue.js Application
├── docker-compose.yml # Container orchestration- Docker
- Docker Compose
Clone the repository and start the environment.
git clone <repository-url>
cd geoglifyStart the application stack with Docker Compose. This will spin up the database, webapp, map server, and utility services.
docker compose up -dServices:
- webapp: The main application running on ports
8080(HTTP) and5173(Vite request).- Healthcheck:
http://localhost:8080/
- Healthcheck:
- database: PostgreSQL with PostGIS on port
5432. - martin: Vector tile server running on port
8081.- Tiles URL:
http://localhost:8081/porto/{z}/{x}/{y}(Example source)
- Tiles URL:
- mailpit: Email testing tool on port
8025. - redis: Cache and queue driver.
The project includes a downloader service to automatically fetch OSM data and convert/extract it to PMTiles format using go-pmtiles.
To download specific map data (defined in docker-compose.yml):
# The service runs automatically on 'docker compose up', but you can check logs or restart it
docker compose restart downloaderThe resulting .pmtiles files are stored in the ./pmtiles directory and served by Martin.
Configuration is handled via standard Laravel .env files. The entrypoint script handles generation of .env from examples if not present.
Configured in martin/config.yaml.
- By default, it looks for
.pmtilesin the/pmtilesdirectory. - CORS is enabled for all origins (
*) to allow direct browser access.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add some amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
Made with love for technology and open source.