Skip to content

Soykertje/MapMyWorld

Repository files navigation

ORBIDI Technical Interview (Spanish below)

Map My World app Backend

This project corresponds to the ORBIDI's technical interview, a simple backend for the app 'My Map World' using FastAPI, PostGIS, and Alembic.


Why PostGIS over plain PostgreSQL?

  1. Geospatial Capabilities:

    • Supports geometry types like POINT, LINESTRING, and POLYGON.
    • Enables spatial queries (ST_Distance, ST_Within, etc.) for complex geospatial computations.
  2. Performance:

    • Spatial Indexing: GIST and SPGIST indexes improve query speed for location-based searches.
    • Efficient proximity queries, e.g., "find locations within a radius."
  3. Flexibility:

    • Compatible with GeoJSON, KML, WKT, and supports multiple SRIDs for global precision.
    • Rich geospatial functions for advanced operations (e.g., intersections, area calculations).
  4. Future-Proof:

    • Scales efficiently with large geospatial datasets.
    • Supports advanced features like routing, clustering, and heatmaps for future enhancements.
  5. Developer-Friendly:

    • Centralizes spatial logic in SQL, reducing complexity and boosting productivity.

Run the project:

docker compose -f docker-compose.yml build
docker compose -f docker-compose.yml up -d
docker compose -f docker-compose.yml run --rm web alembic upgrade head

You'll find the swagger documentation at http://localhost:8000/docs

Prueba Técnica ORBIDI

Backend para Map My World

Este proyecto corresponde a la prueba Técnica de ORBIDI para la posición de Senior Backend Developer, un backend simple para la app 'Map My World', el proyecto usa FastAPI, PostGIS, y Alembic.


¿Por qué PostGIS sobre Postgres?

  1. Capacidades Geoespaciales:

    • PostGIS soporta tipos geométricos como POINT, LINESTRING, y POLYGON.
    • PostGIS permite realizar queries espaciales (ST_Distance, ST_Within, etc.) para realizar operaciones espaciales complejas.
  2. Rendimiento:

    • Índices: Los índices de GIST y SPGIST mejoran los tiempos de las queries orientadas a ubicación.
    • Eficiencia en queries de proximidad, por ejemplo: "Encontrar ubicaciones dentro de un radio."
  3. Flexibilidad:

    • PostGIS es compatible con GeoJSON, KML, WKT, y soporta múltiples SRIDs para precisión global.
    • Cuenta con soporte de funciones avanzadas geoespaciales (intersecciones, cálculo de áreas).
  4. Diseño pensado en el futuro:

    • PostGIS escala de forma eficiente con grandes cantidades de datos geoespaciales.
    • Soporte de características avanzadas como routing, clustering, y heatmaps, ideales para futuras mejoras.
  5. Developer-Friendly:

    • Centraliza la lógica y manipulación de datos espaciales en la base de datos, reduciendo así la complejidad del desarrollo.

Cómo correr el proyecto:

docker compose -f docker-compose.yml build
docker compose -f docker-compose.yml up -d
docker compose -f docker-compose.yml run --rm web alembic upgrade head

La documentación de Swagger se puede consultar en: http://localhost:8000/docs

About

Take Home Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published