Skip to content

naufal-yafi/gempa-terkini.web

Repository files navigation

Gempa Bumi Terkini

Gempa Bumi Terkini adalah proyek yang bertujuan untuk menampilkan data gempa bumi terbaru di Indonesia secara visual dengan memanfaatkan API dari BMKG. Proyek ini mencakup:

  • Map Marking: Menandai lokasi gempa bumi berdasarkan koordinat (latitude & longitude) pada peta.
  • Remapping API BMKG: Mengambil data gempa bumi dari API BMKG dan menyajikannya dalam format yang lebih terstruktur serta mudah digunakan.
  • Endpoint API yang dapat membantu mendapatkan deskripsi lokasi berdasarkan titik koordinat geografis

Teknologi: Typescript, Next.js, Leaflet, Zustand, Tailwind(Shadcn), Framer Motion

Table of Content

GET /api/address?latitude=?&longitude=?

Endpoint ini digunakan untuk mendapatkan informasi alamat berdasarkan koordinat yang diberikan, seperti nama desa, kabupaten, provinsi, dan negara.

Membutuhkan API Key

  1. Login ke https://opencagedata.com
  2. Dapatkan key di https://opencagedata.com/dashboard#geocoding
  3. Masukkan key ke header x-api-key
const res = await fetch(`https://gempa-terkini-indonesia.vercel.app/api/address?latitude=${lat}&longitude=${lon}`, {
  headers: {
    'x-api-key': <your_api_key>,
  },
});

const data = await res.json();

Type respon

export type AddressType = {
  status: {
    code: number;
    message: string;
  };
  data: {
    address: string;
    details: {
      village: string;
      county: string;
      state: string;
      region: string;
      country: string;
    };
  };
  licenses: { name: string; url: string }[];
};

Respon API

ex: https://gempa-terkini-indonesia.vercel.app/api/address?latitude=-9.76&longitude=119.63

{
  "status": {
    "code": 200,
    "message": "OK"
  },
  "data": {
    "address": "Maloba, Sumba Tengah, Nusa Tenggara Timur",
    "details": {
      "village": "Maloba",
      "county": "Sumba Tengah",
      "state": "Nusa Tenggara Timur",
      "country": "Indonesia"
    }
  },
  "licenses": [
    {
      "name": "see attribution guide",
      "url": "https://opencagedata.com/credits"
    }
  ]
}

GET /api/earthquakes

Type respon

type EarthquakeType = {
  region: string;
  magnitude: string;
  depth: string;
  coordinates: {
    latitude: number;
    longitude: number;
  };
  date: string;
  potency: string;
  perceived: string[];
  shakemap: string;
};

Respon API

{
  "data": [
    {
      "region": "Pusat gempa berada di darat 15 km tenggara Waibakul",
      "magnitude": "4.7",
      "depth": "50 km",
      "perceived": ["II - III Waitabula"],
      "potency": "Gempa ini dirasakan untuk diteruskan pada masyarakat",
      "date": "05 Februari 2025, 21.18 WIB",
      "coordinates": {
        "latitude": -9.76,
        "longitude": 119.63
      },
      "shakemap": "https://data.bmkg.go.id/DataMKG/TEWS/20250205211807.mmi.jpg"
    },
    {
      "region": "Pusat gempa berada di darat 15 km tenggara Waibakul",
      "magnitude": "4.7",
      "depth": "50 km",
      "perceived": ["II - III Waitabula"],
      "potency": "Gempa ini dirasakan untuk diteruskan pada masyarakat",
      "date": "05 Februari 2025, 21.18",
      "coordinates": {
        "latitude": -9.76,
        "longitude": 119.63
      },
      "shakemap": ""
    },
    ...
  ]
}

GET /api/earthquakes/current

Type respon

type EarthquakeType = {
  region: string;
  magnitude: string;
  depth: string;
  coordinates: {
    latitude: number;
    longitude: number;
  };
  date: string;
  potency: string;
  perceived: string[];
  shakemap: string;
};

Respon API

{
  "data": [
    {
      "region": "61 km BaratLaut HALMAHERABARAT-MALUT",
      "magnitude": "6.0",
      "depth": "87 km",
      "perceived": [""],
      "potency": "Tidak berpotensi tsunami",
      "date": "05 Februari 2025, 10.12",
      "coordinates": {
        "latitude": 1.63,
        "longitude": 127.11
      },
      "shakemap": ""
    },
    {
      "region": "86 km TimurLaut PULAUDOI-MALUT",
      "magnitude": "6.2",
      "depth": "105 km",
      "perceived": [""],
      "potency": "Tidak berpotensi tsunami",
      "date": "03 Februari 2025, 04.35",
      "coordinates": {
        "latitude": 2.95,
        "longitude": 128.19
      },
      "shakemap": ""
    },
    ...
  ]
}

GET /api/earthquakes/now

Type respon

type EarthquakeType = {
  region: string;
  magnitude: string;
  depth: string;
  coordinates: {
    latitude: number;
    longitude: number;
  };
  date: string;
  potency: string;
  perceived: string[];
  shakemap: string;
};

Respon API

{
  "data": [
    {
      "region": "Pusat gempa berada di darat 15 km tenggara Waibakul",
      "magnitude": "4.7",
      "depth": "50 km",
      "perceived": ["II - III Waitabula"],
      "potency": "Gempa ini dirasakan untuk diteruskan pada masyarakat",
      "date": "05 Februari 2025, 21.18 WIB",
      "coordinates": {
        "latitude": -9.76,
        "longitude": 119.63
      },
      "shakemap": "https://data.bmkg.go.id/DataMKG/TEWS/20250205211807.mmi.jpg"
    }
  ]
}

GET /api/earthquakes/perceived

Type respon

type EarthquakeType = {
  region: string;
  magnitude: string;
  depth: string;
  coordinates: {
    latitude: number;
    longitude: number;
  };
  date: string;
  potency: string;
  perceived: string[];
  shakemap: string;
};

Respon API

{
  "data": [
    {
      "region": "Pusat gempa berada di darat 15 km tenggara Waibakul",
      "magnitude": "4.7",
      "depth": "50 km",
      "perceived": ["II - III Waitabula"],
      "potency": "Gempa ini dirasakan untuk diteruskan pada masyarakat",
      "date": "05 Februari 2025, 21.18",
      "coordinates": {
        "latitude": -9.76,
        "longitude": 119.63
      },
      "shakemap": ""
    },
    {
      "region": "Pusat gempa berada di laut 61 km barat laut Halmahera barat",
      "magnitude": "6.0",
      "depth": "87 km",
      "perceived": [
        "III - IV Manado",
        "III Tondano",
        "II - III Kotamobagu",
        "III Ternate",
        "III Batangdua",
        "III Weda",
        "II Minahasa Utara",
        "IV Sofifi",
        "III Ibu",
        "III Jailolo",
        "III Galela"
      ],
      "potency": "Gempa ini dirasakan untuk diteruskan pada masyarakat",
      "date": "05 Februari 2025, 10.12",
      "coordinates": {
        "latitude": 1.63,
        "longitude": 127.11
      },
      "shakemap": ""
    },
    ...
  ]
}