An open API service indexing awesome lists of open source software.

https://github.com/parseablehq/datasources

This is the repo to serve as the central source for all datasources supported in parseable
https://github.com/parseablehq/datasources

Last synced: about 2 months ago
JSON representation

This is the repo to serve as the central source for all datasources supported in parseable

Awesome Lists containing this project

README

          

# Parseable Integrations Catalog

Single source of truth for Parseable integrations metadata, shared between:

- Prism (product UI)
- Docs (docs site)

This repository is a **data package**, not an application.

---

## Source of truth

**Only the following are edited manually:**

- `catalog/integrations/*.json`
One integration per file. This is the only editable source of integration data.

- `catalog/taxonomies/*`
Controlled vocabularies for resources and telemetry types.

- `assets/*`
Integration logos. Each integration must reference a logo via `assets.logo`.

Everything else in this repo is **generated**.

---

## Generated files (do not edit manually)

Generated by running `pnpm build`:

- `catalog/groups.json`
Grouped view of integrations by resource.

- `dist/integrations.json`
Flat, UI-ready list of integrations.

- `dist/integrations.min.json`

- `dist/integrations-index.json`
Map keyed by integration id.

- `dist/resources.json`
Resource-wise sections for UI rendering.

- `dist/resources-index.json`

- `dist/search-index.json`
Lightweight search tokens.

If any of these files change, they **must be committed**.

---

## Build & validation

Run from the repository root:

```bash
pnpm build
```

This will:

1. Validate all integrations and assets
2. Generate catalog/groups.json
3. Generate all dist/\* artifacts

A pre-commit hook and CI workflow enforce this automatically.

## Usage as a submodule

This repository is consumed as a **git submodule** by downstream projects.

### Prism (product UI)

Prism consumes:

- `dist/resources.json` for sectioned UI rendering
- `dist/integrations.json` for search and filters
- `assets/` copied into `public/` at build time for logos

Prism does **not** run any build or validation scripts from this repository.

### Docs (docs site)

Docs follow the same consumption model as Prism:

- Read structured data from `dist/*`
- Render logos from copied `assets/*`

Docs never modify or regenerate catalog data.

## Rules

- ❌ Do not edit `catalog/groups.json`
- ❌ Do not edit anything under `dist/`
- ❌ Do not add integrations outside `catalog/integrations/`
- ❌ Do not reference assets outside the `assets/` directory
- ✅ Edit only `catalog/integrations/*.json`
- ✅ Always run `pnpm build` before committing
- ✅ Commit generated files when they change

## Why this design

- One file per integration scales cleanly and avoids merge conflicts
- A strict single source of truth prevents data drift
- UI-specific data shapes are generated, not hand-maintained
- Downstream apps consume static JSON only, with zero build logic
- Assets are versioned alongside metadata for consistency
- Validation and generation are enforced via pre-commit hooks and CI

## Integration template

Use the following template when adding a new integration under
`catalog/integrations/`.

```json
{
"id": "example-integration",
"name": "Example Integration",
"resource": "observability-agents",
"telemetry_types": ["logs"],
"description": "Short description of the integration.",
"links": {
"docs": "https://parseable.com/docs/ingest/example"
},
"assets": {
"logo": "assets/logos/example.svg"
}
}
```