Molt ràpidament, aquest repositori es basa en dades públiques d'OpenStreetMap, concretament dels nodes de la regió de Catalunnya que tenen l'etiqueta amenity=drinking_water. Per mostrar el mapa i personalitzar-lo s'utilitza Mapbox.
- Baixar o clonar el projecte en local (recomanació: utilitzar GitHub Desktop)
- Instal·lar dependències (
npm install) - Registrar-se a Mapbox i obtenir un access token: https://account.mapbox.com/access-tokens/
- Posar l'access token a un fitxer (crear-lo)
.env.local:NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=pk.eyJ1IjoieW91ci11c2VybmFtZSIsImEiOiJjbGthYmNkZWYifQ.el-teu-token - Executar l'app en local en mode desenvolupament (
npm run devi http://localhost:3000) - Fer les personalitzacions necessaries
- Executar l'app en local ara en mode producció (
npm run buildinpm starti http://localhost:3000), si no es dona cap error, tot està ben configurat per publicar la web. - Publicar el repositori a GitHub utilitzant GitHub Desktop o Git
- Importar-lo a Vercel
- GitHub settings > Apps > Vercel i donar accés al repositori (
fonts-cat). - Obrir el Vercel dashboard (s'hauria d'obrir automoàticament) i crear un nou projecte, importar el repositori
fonts-cat.
- GitHub settings > Apps > Vercel i donar accés al repositori (
- Afegir la variable de
.env.local(si no es fa inicialment abans de fer el primer Deploy, es pot fer després a Project > Settings > Environment Variables) - Fer 'Deploy' del projecte
- Veure la web publicada a una url similar a la següent
https://fonts-cat.vercel.app(te la mostra el dashboard del projecte de Vercel)
Les dades de les fonts són el fitxer GeoJson que hi ha dins la carpeta public (public/fonts-cat.geojson). En un cas ideal tindríem un servidor que obté via OpenStreetMap Overpass API les dades i les va actualitzant aproximadament 1 cop la setmana. En el nostre cas, com que és una aplicació client-side i les dades pesen poc (~2.5MB) les deixem dins la carpeta public de manera estàtica.
Per obtenir les dades sense utilitzar cap API es pot fer senzillament entrant a https://overpass-turbo.eu/ i utilitzant el següent script d'exemple:
[out:json][timeout:60];
{{geocodeArea:"Catalonia"}}->.searchArea;
(
node["amenity"="drinking_water"](area.searchArea);
way["amenity"="drinking_water"](area.searchArea);
relation["amenity"="drinking_water"](area.searchArea);
);
out body;
>;
out skel qt;
A continuació clicar "Executa" i en uns pocs segons s'haurien de carregar les fonts al mapa, després clicar "Exporta" i triar el format "GeoJSON".
NextJS 15, App Router, Typescript, Tailwind CSS, mapbox-gl.
src/
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
└── components/
└── MapBox.tsx # Component mapa interactiu
public/
└── fonts-cat.geojson # Fitxer GeoJSON (~2.5MB)
.env.local # Access token de Mapbox per tal que funcioni en local
El projecte utilitza dades d'OpenStreetMap, que són públiques sota la Open Database License (ODbL). Aquest repositori i el seu codi són completament lliures ('The Unlicense' LICENSE), això vol dir que el pots utilitzar pel que vulguis sense restriccions de cap tipus.