Ik heb drie websites met een muzikantendirectory gebouwd in de afgelopen vier jaar. De eerste was een ramp -- traag, onmogelijk om door te zoeken, en de bandprofielen zagen eruit alsof ze in 2008 waren ontworpen. De derde kan 12.000+ artiestprofielen aan met sub-seconde zoekopdrachten, op locatie gebaseerde ontdekking, en een CMS waarmee niet-technische beheerders alles kunnen beheren. Hier is alles wat ik heb geleerd bij de overgang van punt A naar punt B.

Het bouwen van een directorysite klinkt eenvoudig totdat je echt begint. Je hebt te maken met zoeken, filteren, door gebruikers gegenereerde inhoud, mediazware pagina's, SEO voor duizenden dynamische routes, en prestatieproblemen waar de meeste blogachtige sites nooit mee te maken krijgen. Deze gids dekt de volledige stack -- van het kiezen van uw technologie tot het implementeren van een directory waar muzikanten daadwerkelijk op vermeld willen staan.

How to Build a Musician Directory Website That Actually Works

Inhoudsopgave

Waarom muzikantendirectories moeilijker zijn dan ze lijken

De meeste mensen benaderen een muzikantendirectory alsof het een blog met extra pagina's is. Dat is het niet. Een directory is fundamenteel een zoektoepassing met een inhoudslaag erop.

Denk na over wat uw gebruikers eigenlijk nodig hebben:

  • Eventplanneurs die zoeken naar een jazztrio binnen 50 kilometer van Nashville
  • Venuebeheerders filteren op genre, beschikbaarheid en prijsklasse
  • Muzikanten die naar medewerkers zoeken die bepaalde instrumenten spelen
  • Fans die lokale bands per genre en locatie doorbladeren

Elk van deze gebruiksscenario's vereist verschillende zoekpatronen, verschillende UI-flows en verschillende gegevensrelaties. Als je dit behandelt als een WordPress-site met een directoryplugin, zul je een muur raken rond 500 profielen.

De directories die werkelijk succesvol zijn -- sites zoals BandMix, GigSalad en ReverbNation's artiestpagina's -- hebben enkele dingen gemeen: snel gefacetteerd zoeken, rijke profielen met ingebedde media, en sterke lokale SEO. Laten we iets bouwen dat met hen kan concurreren.

Je tech stack kiezen

Je tech stack-keuze bepaalt het succes of mislukking van het project. Ik heb teams zien maanden verspillen aan het forceren van een directory in een tool die daar niet voor is gebouwd.

De headless CMS + frontend framework-aanpak

Dit is de aanpak die ik aanbeveel voor elke directory waarvan wordt verwacht dat deze verder groeit dan een paar honderd vermeldingen. Door uw inhoudslaag los te koppelen van uw presentatielaag, krijgt u de flexibiliteit om aangepaste zoekervaringen te bouwen zonder beperkt te worden door een monolithisch CMS.

Hier is wat goed in productie heeft gewerkt:

Component Aanbevolen opties Waarom
Frontend Next.js, Astro SSR/SSG voor SEO, snelle pagina's
CMS Sanity, Contentful, Payload CMS Gestructureerde inhoud, API-first
Zoeken Algolia, Meilisearch, Typesense Gefacetteerd zoeken, typefouttolerantie
Database PostgreSQL + PostGIS Georuimtelijke queries voor lokaal zoeken
Auth Clerk, NextAuth.js, Supabase Auth Zelf-service profielen van muzikanten
Media Cloudinary, imgix Audio-/afbeeldingoverzicht
Hosting Vercel, Netlify, AWS Edge-implementatie, CDN

Next.js is mijn favoriete voor directories vanwege de hybride rendering. U kunt de top 1.000 artiestprofielpagina's tijdens de buildtijd statisch genereren en de rest op aanvraag server-renderen. Als u wilt zien wat mogelijk is, kijk dan naar onze Next.js-ontwikkelingscapaciteiten.

Voor inhoudsrijke directories waar interactiviteit minimaal is -- denk aan een alleen-lezen "vind een muzikant"-site -- is Astro het overwegen waard. De gedeeltelijke hydratatie ervan betekent dat u vrijwel geen JavaScript voor profielpagina's verzend, wat zich vertaalt naar bliksemsnelle pagina's.

Wat met WordPress?

Kijk, WordPress met een plugin zoals GeoDirectory of Business Directory Plugin kan werken voor kleine directories (onder 500 vermeldingen). Maar u zult er constant mee worstelen als u nodig hebt:

  • Aangepast gefacetteerd zoeken voorbij basiscategoriefiltering
  • Beschikbaarheidskalenders in realtime
  • Ingebedde audiospelers met golfvormen
  • Complexe georuimtelijke queries
  • API-toegang voor later een mobiele app

Als het budget extreem klein is en het bereik klein, is WordPress prima. Voor iets ambitieuzers, ga headless. We hebben verschillende klanten geholpen migreren van WordPress naar headless-architecturen specifiek omdat hun directorysites er uitgroeide.

De CMS-configuratie

Sanity is mijn huidige favoriete CMS voor directorysites. De GROQ-querytaal ervan verwerkt relationele gegevens goed, de samenwerkingsfuncties in realtime stellen meerdere beheerders in staat gelijktijdig vermeldingen te beheren, en de aanpasbare Studio betekent dat u admin-workflows kunt bouwen die specifiek zijn voor directorybeheer.

Payload CMS is het sterke open-source-alternatief als u zelf wilt hosten. Het geeft u een volledig admin-paneel met ingebouwd toegangsbeheer, en omdat het op Node is gebaseerd, blijft uw hele stack in één taal.

How to Build a Musician Directory Website That Actually Works - architecture

Gegevensarchitectuur voor artiestprofielen

Zorg dat uw gegevensmodel vroeg goed is. Het later wijzigen wanneer u duizenden profielen hebt, is pijnlijk.

Hier is het kernschema dat ik voor muzikantenprofielen gebruik:

// Sanity schema example
export const artistProfile = {
  name: 'artistProfile',
  type: 'document',
  fields: [
    { name: 'name', type: 'string', validation: (Rule) => Rule.required() },
    { name: 'slug', type: 'slug', options: { source: 'name' } },
    { name: 'profileType', type: 'string', 
      options: { list: ['solo', 'band', 'ensemble', 'dj', 'orchestra'] } },
    { name: 'genres', type: 'array', of: [{ type: 'reference', to: [{ type: 'genre' }] }] },
    { name: 'instruments', type: 'array', of: [{ type: 'reference', to: [{ type: 'instrument' }] }] },
    { name: 'location', type: 'object', fields: [
      { name: 'city', type: 'string' },
      { name: 'state', type: 'string' },
      { name: 'zipCode', type: 'string' },
      { name: 'coordinates', type: 'geopoint' },
    ]},
    { name: 'bio', type: 'blockContent' },
    { name: 'photos', type: 'array', of: [{ type: 'image' }] },
    { name: 'audioSamples', type: 'array', of: [{ type: 'file' }] },
    { name: 'videoLinks', type: 'array', of: [{ type: 'url' }] },
    { name: 'priceRange', type: 'object', fields: [
      { name: 'min', type: 'number' },
      { name: 'max', type: 'number' },
      { name: 'currency', type: 'string', initialValue: 'USD' },
    ]},
    { name: 'availability', type: 'string',
      options: { list: ['available', 'limited', 'unavailable'] } },
    { name: 'socialLinks', type: 'object', fields: [
      { name: 'website', type: 'url' },
      { name: 'spotify', type: 'url' },
      { name: 'instagram', type: 'url' },
      { name: 'youtube', type: 'url' },
      { name: 'soundcloud', type: 'url' },
    ]},
    { name: 'tags', type: 'array', of: [{ type: 'string' }] },
    { name: 'verified', type: 'boolean', initialValue: false },
    { name: 'featured', type: 'boolean', initialValue: false },
  ]
}

Sleutelbesluiten gegevensmodellering

Genres en instrumenten moeten verwijzingen zijn, geen strings. Dit lijkt vroeg overbodig, maar het is kritiek voor consistent filteren. Als een muzikant zichzelf "R&B" noemt en een ander "RnB" schrijft en een derde "Rhythm and Blues" gebruikt, breken uw zoekfilters. Referentietypes dwingen consistentie af.

Coördinaten opslaan naast mensleesbare locatie. U hebt de geocodeerde lat/lng voor nabijheidszoekopdrachten nodig, maar u hebt ook de stad/staat nodig voor weergave en SEO. Geocodeer op schrijftijd met behulp van de Google Geocoding API of OpenCage, niet op querytijd.

Prijsklasse, niet exacte prijs. Muzikanten haten het publiceren van exacte tarieven. Een bereik (bijvoorbeeld € 500-€ 1500) geeft u voldoende gegevens voor filteren zonder vermeldingen af te schrikken.

Zoeken bouwen dat niet slecht is

Zoeken is de doorslaggevende functie. Als een venuebeheerder niet binnen 10 seconden een bluesuitarist in Austin kan vinden, zijn ze weg.

Implementatie van gefacetteerd zoeken

Bouw zoeken niet vanaf nul tegen uw CMS API. Gebruik een speciale zoekservice. Ik heb de beste resultaten gehad met deze drie:

Service Prijzen (2025) Het beste voor Latentie
Algolia Gratis tot 10.000 zoekopdrachten/mnd, daarna € 1/1000 zoekopdrachten Grootste directories, beste docs ~20ms
Meilisearch Zelf hosten gratis, Cloud vanaf € 30/mnd Budgetbewust, open source ~50ms
Typesense Zelf hosten gratis, Cloud vanaf € 30/mnd Prijsbewust, goede geo-ondersteuning ~30ms

Hier is een basisintegratie van Algolia voor een Next.js-muziekzoekopdrachten pagina:

// lib/algolia.ts
import algoliasearch from 'algoliasearch';

const client = algoliasearch(
  process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!,
  process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY!
);

export const artistIndex = client.initIndex('artists');

// Configure facets
artistIndex.setSettings({
  searchableAttributes: ['name', 'bio', 'tags', 'genres', 'instruments'],
  attributesForFaceting: [
    'searchable(genres)',
    'searchable(instruments)',
    'filterOnly(location.state)',
    'filterOnly(location.city)',
    'filterOnly(profileType)',
    'filterOnly(availability)',
    'filterOnly(priceRange.min)',
    'filterOnly(priceRange.max)',
  ],
  customRanking: ['desc(featured)', 'desc(verified)'],
});
// components/ArtistSearch.tsx
import { InstantSearch, SearchBox, RefinementList, Hits } from 'react-instantsearch';

export function ArtistSearch() {
  return (
    <InstantSearch searchClient={searchClient} indexName="artists">
      <div className="flex gap-8">
        <aside className="w-64">
          <h3>Genre</h3>
          <RefinementList attribute="genres" />
          <h3>Instrument</h3>
          <RefinementList attribute="instruments" />
          <h3>Type</h3>
          <RefinementList attribute="profileType" />
        </aside>
        <main className="flex-1">
          <SearchBox placeholder="Search musicians, bands, genres..." />
          <Hits hitComponent={ArtistCard} />
        </main>
      </div>
    </InstantSearch>
  );
}

Zoek-UX waar muzikanten echt behoefte aan hebben

Een paar dingen die ik het moeilijk heb geleerd:

  1. Autosuggest met genre-/instrumentchips -- Wanneer iemand "gitaar" typt, toon klikbare suggesties voor "Leadgitaar", "Akoestische gitaar", "Basgitaar" als afzonderlijke filters
  2. URL-gebaseerde filterstatus -- Elke zoekstatus moet een unieke URL opleveren. Dit is belangrijk voor SEO en voor gebruikers die zoekresultaten delen
  3. Lege status met suggesties -- Als geen resultaten overeenkomen, stel voor om het zoeken te verbreden. "Geen jazzmusici in Topeka? Hier zijn jazzmusici binnen 160 kilometer."
  4. Audiovoorbeeld in zoekresultaten -- Laat gebruikers een 30-secondenclip afspelen zonder de resultaten verlaten. Deze enkele functie verhoogde de betrokkenheid met 40% in één van mijn projecten.

Geolocatie en het vinden van lokale muzikanten

Lokale ontdekking is de killer-functie voor muzikantendirectories. Hier is hoe je het goed implementeert.

Browser Geolocation API

// hooks/useUserLocation.ts
import { useState, useEffect } from 'react';

export function useUserLocation() {
  const [location, setLocation] = useState<{ lat: number; lng: number } | null>(null);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    if (!navigator.geolocation) {
      setError('Geolocation not supported');
      return;
    }

    navigator.geolocation.getCurrentPosition(
      (position) => {
        setLocation({
          lat: position.coords.latitude,
          lng: position.coords.longitude,
        });
      },
      (err) => {
        // Fall back to IP-based geolocation
        fetchIPLocation().then(setLocation).catch(() => setError(err.message));
      },
      { enableHighAccuracy: false, timeout: 5000 }
    );
  }, []);

  return { location, error };
}

Nabijheidszoeking met Algolia

Algolia ondersteunt aroundLatLng natively:

const results = await artistIndex.search('jazz band', {
  aroundLatLng: `${userLat}, ${userLng}`,
  aroundRadius: 80467, // 50 miles in meters
  getRankingInfo: true, // returns distance in response
});

Voor zelf gehoste zoekfunctie geeft PostGIS met PostgreSQL u dezelfde mogelijkheid:

SELECT *, 
  ST_Distance(
    coordinates::geography, 
    ST_MakePoint(-86.7816, 36.1627)::geography
  ) / 1609.34 AS distance_miles
FROM artists 
WHERE ST_DWithin(
  coordinates::geography, 
  ST_MakePoint(-86.7816, 36.1627)::geography, 
  80467  -- 50 miles in meters
)
AND 'jazz' = ANY(genres)
ORDER BY distance_miles;

Kaartintegratie

Een kaartweergave naast lijstresultaten is bijna essentieel voor lokale ontdekking. Mapbox GL JS of Google Maps JavaScript API werken beide. Ik geef de voorkeur aan Mapbox vanwege de aanpassingsopties en het prijsmodel (50.000 gratis kaartlaadingen/maand vanaf 2025).

Een tip: cluster uw kaartmarkeringen. Wanneer u 200 muzikanten in een metrogebied hebt, worden afzonderlijke pinnen een onleesbare chaos. Zowel Mapbox als Google Maps ondersteunen markerclusterering natively.

Artiestprofielpagina's die omzettingen genereren

Elk artiestprofiel is een bestemmingspagina. Behandel het als zodanig.

Essentiële profielelementen

  • Heldengedeelte met foto van hoge kwaliteit, naam, genres en locatie
  • Ingebedde audiospeler -- het eerste wat bookers willen zien
  • Video-insluitingen van YouTube/Vimeo
  • Beschikbaarheids-indicator (beschikbaar / beperkt / niet beschikbaar)
  • Prijsklasse duidelijk weergegeven
  • Contact-/boekings-CTA boven de vouw
  • Sociaal bewijs -- beoordelingen, getuigenissen, eerder bgespeelde venues
  • Soortgelijke artiesten sectie voor ontdekking

Implementatie audiouitspeler

Gebruik niet het native HTML5 <audio>-element. Het ziet er in elke browser anders uit en biedt minimale UX. Gebruik iets als Wavesurfer.js voor golfvormvisualisatie:

import WaveSurfer from 'wavesurfer.js';

useEffect(() => {
  const wavesurfer = WaveSurfer.create({
    container: '#waveform',
    waveColor: '#4F46E5',
    progressColor: '#818CF8',
    height: 60,
    barWidth: 2,
    barGap: 1,
    responsive: true,
  });
  
  wavesurfer.load(audioUrl);
  
  return () => wavesurfer.destroy();
}, [audioUrl]);

SEO-strategie voor directorysites

Directory SEO is zijn eigen discipline. U hebt mogelijk duizenden pagina's, en elk ervan moet classificeren voor lokale + nichezoekopdrachten.

Doelzoekwoordpatronen

Elke artiestprofielpagina moet doelzoekwoorden bevatten zoals:

  • [genre] muzikant in [stad]
  • [instrument] speler [stad] [staat]
  • huur [genre] band [stad]
  • [stad] bruiloftsband
  • lokale [genre] artiesten in de buurt [locatie]

Dynamische metatags

// app/artists/[slug]/page.tsx (Next.js App Router)
export async function generateMetadata({ params }): Promise<Metadata> {
  const artist = await getArtist(params.slug);
  
  return {
    title: `${artist.name} -- ${artist.genres.join(', ')} in ${artist.location.city}, ${artist.location.state}`,
    description: `Book ${artist.name}, a ${artist.profileType} playing ${artist.genres.join(' and ')} in ${artist.location.city}. ${artist.bio.substring(0, 120)}...`,
    openGraph: {
      images: [artist.photos[0]?.url],
    },
  };
}

Gestructureerde gegevens

Gebruik MusicGroup of Person schema-opmaak op elk profiel:

{
  "@context": "https://schema.org",
  "@type": "MusicGroup",
  "name": "The Delta Blues Trio",
  "genre": ["Blues", "Jazz"],
  "location": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Nashville",
      "addressRegion": "TN"
    }
  },
  "url": "https://yourdirectory.com/artists/delta-blues-trio",
  "image": "https://yourdirectory.com/images/delta-blues-trio.jpg"
}

Categorie- en locatiepagina's

Voorbij individuele profielen, maak programmatische landingspagina's:

  • /genres/jazz -- alle jazzmusici
  • /locations/nashville-tn -- alle muzikanten in Nashville
  • /genres/jazz/nashville-tn -- jazzmusici in Nashville

Deze pagina's vangen zoekverkeer met hoge intenties. Genereer ze tijdens de buildtijd met Next.js generateStaticParams of Astro's dynamische routes.

Prestaties en schaling

Directorysites worden snel zwaar. Hier is hoe je dingen snel houdt.

Afbeeldingsoptimalisatie

Muziekkantfoto's worden vaak als 5MB JPEG's vanaf een DSLR geüpload. Gebruik Cloudinary of imgix om onderweg te transformeren:

<img 
  src="https://res.cloudinary.com/yourcloud/image/upload/w_400,h_400,c_fill,f_auto,q_auto/artist-photo.jpg"
  loading="lazy"
  alt="Artist name performing live"
/>

Dit alleen kan het paginagewicht al met 80% verminderen.

Incrementele statische regeneratie

Met Next.js ISR kunt u profielpagina's statisch genereren en ze revalideren wanneer inhoud verandert:

export const revalidate = 3600; // Revalidate every hour

// Or use on-demand revalidation via webhook from your CMS
// POST /api/revalidate?path=/artists/delta-blues-trio

Voor een directory met 10.000+ profielen wilt u niet alles bij elke implementatie opnieuw samenstellen. ISR stelt u in staat de populairste pagina's vooraf samen te stellen en de rest op aanvraag te genereren.

Zoekresultaten in cache opslaan

Algolia verzorgt caching aan hun kant, maar als u een zelf gehoste oplossing gebruikt, cache aggressief. Populaire zoekopdrachten zoals "bruiloftsband nashville" worden duizenden keren geraakt. Redis of zelfs in-memory caching met een TTL van 5 minuten kan de databaselast dramatisch verminderen.

Verdienmodellen

U hebt een bedrijfsmodel nodig. Hier zijn de modellen die daadwerkelijk werken voor muzikantendirectories op basis van wat ik op de markt heb gezien:

Model Gem. opbrengst/gebruiker Voor- en nadelen Nadelen
Freemium-vermeldingen € 0-15/mnd Lage wrijving voor groei Veel nodig voor inkomsten
Aanbevolen plaatsing € 20-50/mnd Muzikanten zien duidelijke waarde Kan voelen betaalen-om-te-spelen
Boekingscommissie 5-15% per gig Prikkels afstemmen Complex om uit te voeren
Lead-generatie € 2-10 per lead Schaalbaar Muzikanten kunnen tegen betalen voor vragen protesteren
Jaarlijkse premium-niveaus € 99-299/jr Voorspelbare inkomsten Moeilijker initiële verkoop

Het freemium-model met aanbevolen vermeldingen is het gemakkelijkst om uit te voeren en het meest voorkomend startpunt. Basisprofielen zijn gratis (waardoor uw directory groeit), en muzikanten betalen voor aanbevolen plaatsing, extra media-uploads, analyses van profielweergaven en geverifieerde badges.

Als u iets complexers van plan bent -- zoals een boekingsmarktplaats -- dat is een aanzienlijke extra laag aan ontwikkeling. Neem contact op als u de architectuur hiervoor wilt bespreken.

Veelgestelde vragen

Hoeveel kost het om een muzikantendirectory-website te bouwen? Een basisgids met zoeken en profielen kan voor € 5.000-€ 15.000 worden gebouwd met een headless CMS en modern frontend-framework. Een volledig uitgerust platform met geolocatie, boekingen, betalingen en een self-service dashboard voor muzikanten kost meestal € 25.000-€ 75.000. Doorlopende kosten voor zoeken (Algolia of vergelijkbare), hosting en CDN liggen meestal tussen € 100-€ 500/maand, afhankelijk van verkeer. Controleer onze prijspagina voor schattingen van headless-ontwikkeling.

Moet ik WordPress of een aangepaste oplossing gebruiken voor een muzikantendirectory? WordPress met directoryplugins (zoals GeoDirectory of Business Directory Plugin) werkt voor directories onder 500 vermeldingen met basiszoekbehoeften. Zodra u gefacetteerd zoeken, op locatie gebaseerde ontdekking, ingebedde audiospelers of API-toegang voor een toekomstige mobiele app nodig hebt, zal een headless-architectuur met Next.js of Astro gekoppeld aan een zoekservice zoals Algolia u veel beter van dienst zijn. Het prestatienverschil alleen is aanzienlijk -- headless-directories laden meestal 2-4x sneller.

Hoe krijg ik muzikanten om zich aan te melden voor mijn directory? Begin hyperlocaal. Concentreer je op één stad of muziekscène. Bezoek open mics, partner met lokale venues, en bereik muzikanten rechtstreeks. Biedt gratis vermeldingen met basisprofielen. Zodra u 200-300 vermeldingen in een enkel metrogebied hebt, begint de directory organisch zoekverkeer te genereren, wat zowel muzikanten als mensen die naar hen zoeken aantrekt. Probeer niet op dag één nationaal te zijn.

Wat is de beste zoekoplossing voor een muzikantendirectory? Voor de meeste directories biedt Algolia de beste combinatie van snelheid, gefacetteerd filteren en geosearch. Het is gratis voor maximaal 10.000 zoekopdrachten per maand, wat de vroege groeifase dekt. Typesense en Meilisearch zijn sterke open-source alternatieven als u zelf wilt hosten en kosten wilt controleren. Vermijd het bouwen van zoeken rechtstreeks tegen uw database -- de UX zal merkbaar slechter zijn.

Hoe ga ik om met audio en video op artiestprofielpagina's? Voor audio, sla bestanden op in Cloudinary of AWS S3 en gebruik een client-side speler zoals Wavesurfer.js voor golfvormvisualisatie. Voor video, embed van YouTube of Vimeo in plaats van videobestanden zelf te hosten -- het bespaart enorme bandbreedtekosten en gebruikers krijgen een vertrouwde speler. Laad media altijd traag onder de vouw en gebruik het loading="lazy" attribuut voor iframes.

Hoe zorg ik ervoor dat mijn muzikantendirectory in Google rankt? Maak unieke, met trefwoorden geoptimaliseerde pagina's voor elk artiestprofiel, genrecategorie en stadslocatie. Gebruik schema-opmarking (MusicGroup-schema). Bouw programmatische landingspagina's gericht op query's zoals "jazzmusici in [stad]" en "huur trouwband [stad]." Interne koppeling tussen gerelateerde profielen, genres en locaties helpt zoekmachines de structuur van uw site te begrijpen. Strev naar 50+ unieke woorden inhoud op elke pagina voorbij alleen de vermeldingsgegevens.

Kunnen muzikanten hun eigen profielen beheren? Ja, en dat zouden ze moeten. Implementeer verificatie (Clerk en NextAuth.js zijn populaire keuzes) en bouw een self-service dashboard waar muzikanten hun bio kunnen bewerken, foto's en audio kunnen uploaden, beschikbaarheid kunnen bijwerken en hun vermelding kunnen beheren. Dit vermindert uw beheerbelasting en houdt profielen vers. Gebruik een moderatiewachtrij voor nieuwe aanmeldingen en bewerkingen om spam te voorkomen.

Hoe voeg ik een "vind muzikanten in mijn buurt"-functie toe? Gebruik de browser's Geolocation API om de coördinaten van de gebruiker op te halen (met hun toestemming), geef vervolgens die coördinaten door aan de geofiltering van uw zoekservice. De aroundLatLng parameter van Algolia en het geopoint-veld van Typesense ondersteunen beide radiuszoeking. Bied altijd een fallback -- laat gebruikers een postcode of stadsnaam typen -- omdat veel gebruikers locatietoegang zullen weigeren. Geocodeer opgeslagen adressen met behulp van de Google Geocoding API of OpenCage wanneer profielen worden gemaakt, niet op querytijd.