Skip to content

Referensi API ​

mineproj menghasilkan API statis mirip REST di bawah dist/api/v1/. Setiap endpoint menyajikan JSON statis — tidak diperlukan backend.

Amplop (Envelope) ​

Setiap respons mengikuti struktur ini:

json
{
  "apiVersion": "v1",
  "kind": "ProjectList",
  "generatedAt": "2026-01-01T00:00:00.000Z",
  "schemaVersion": 1,
  "data": { ... }
}

Endpoint ​

EndpointKindDeskripsi
/api/v1/projects.jsonProjectListDaftar proyek lengkap
/api/v1/projects/<slug>.jsonProjectDetail proyek tunggal
/api/v1/tags.jsonTagListSemua tag dengan jumlah
/api/v1/categories.jsonCategoryListSemua kategori
/api/v1/collections.jsonCollectionListSemua koleksi
/api/v1/profile.jsonProfileData profil
/api/v1/stats.jsonStatsStatistik agregat
/api/v1/search.jsonSearchIndexIndeks MiniSearch
/api/v1/feed.jsonFeedItem feed
/api/v1/manifest.jsonManifestDaftar endpoint deskriptif mandiri

Parameter Kueri (mode dev) ​

ParamContohDeskripsi
q?q=webPencarian teks lengkap
tag?tag=web,gameFilter berdasarkan tag (AND)
category?category=webFilter berdasarkan kategori
status?status=releasedFilter berdasarkan status
sort?sort=createdAt:descField dan arah pengurutan
page?page=2Nomor halaman
pageSize?pageSize=20Item per halaman
lang?lang=enLokal untuk data yang dilokalkan

SDK Klien ​

ts
import { createApiClient } from '@mineproj/client';

const api = createApiClient({ baseUrl: 'https://example.com' });
const projects = await api.getProjects();
const project = await api.getProject('my-project');
const results = await api.search('web');

React hooks:

ts
import { useProjects, useProject, useTags, useSearch } from '@mineproj/client';

function MyComponent() {
  const { data, loading } = useProjects({ tag: 'web' });
  return <div>{loading ? 'Memuat...' : data.length} proyek</div>;
}

Released under the Apache-2.0 License.