# Schema for a Tool Entry in tools.json: Complete Field Reference

> Explore the complete schema for a tool entry in tools.json with our comprehensive field reference. Understand each of the 11 standardized fields for reliable data.

- Repository: [Abdullah/FckSignups](https://github.com/BraveOPotato/FckSignups)
- Tags: api-reference
- Published: 2026-09-08

---

**A tool entry in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) follows a consistent JSON schema with ten standardized fields—`id`, `name`, `description`, `url`, `category`, `tags`, `github`, `license`, `stars`, `addedAt`, and `section`—enabling reliable rendering and filtering across the BraveOPotato/FckSignups knowledge base.**

The [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) file in the BraveOPotato/FckSignups repository serves as the single source of truth for all open-source web tools listed on the site. Each entry follows an implicit schema observed consistently throughout the file, allowing the front-end to render tool cards, filter by category or tags, and sort by popularity without requiring a separate TypeScript interface.

## Required Fields in the tools.json Schema

Every tool entry must include eight core properties that define its identity and placement.

### `id` (string)

The **unique identifier** serves as the URL-friendly slug for the tool. This value appears in internal references and direct links to the tool’s detail page.

### `name` (string)

The **human-readable display name** appears on tool cards and navigation elements. Use title case without abbreviations for clarity.

### `description` (string)

A **concise summary** of the tool’s functionality displayed on the site. Keep descriptions under 150 characters for optimal card layout rendering.

### `url` (string)

The **direct link to the live web application**. This must be a valid HTTPS URL where users can immediately access the tool.

### `category` (string)

References a predefined category at the top of [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) such as `productivity`, `design`, or `development`. The category determines which browse page lists the tool.

### `tags` (array[string])

An **array of free-form keywords** that enhance searchability and filtering. Include 3-5 relevant terms describing the tool’s technology or use case.

### `addedAt` (string, ISO-8601 date)

The **timestamp** indicating when the entry was added or last refreshed, formatted as `YYYY-MM-DD`. This field tracks content freshness across the repository.

### `section` (string, enum)

Controls **homepage placement** with three valid values:
- `featured` — Highlighted in the main hero section
- `meets-criteria` — Listed in the standard grid
- `editors-pick` — Curated selections by maintainers

## Optional Fields in the tools.json Schema

Three additional fields provide metadata for open-source projects but remain optional for proprietary tools.

### `github` (string)

The **source repository URL** (e.g., `https://github.com/excalidraw/excalidraw`). This enables linking to codebases and automated star count fetching.

### `license` (string)

The **SPDX license identifier** (e.g., `MIT`, `Apache-2.0`, `GPL-3.0`). This helps users quickly identify usage rights for the tool.

### `stars` (number)

The **GitHub star count** representing community popularity. The front-end uses this value for sorting and highlighting trending tools.

## Complete Schema Example from Source Code

According to the BraveOPotato/FckSignups source code, the first entry in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) (lines 65-82) demonstrates the complete schema implementation:

```json
{
  "id": "excalidraw",
  "name": "Excalidraw",
  "description": "Virtual whiteboard for sketching hand-drawn like diagrams",
  "url": "https://excalidraw.com",
  "category": "design",
  "tags": [
    "whiteboard",
    "diagrams",
    "sketch",
    "collaboration"
  ],
  "github": "https://github.com/excalidraw/excalidraw",
  "license": "MIT",
  "stars": 131341,
  "addedAt": "2026-05-07",
  "section": "featured"
}

```

## How to Add a New Tool Entry

When contributing a new tool to the repository, follow the established schema pattern. This example adds a hypothetical project management tool:

```json
{
  "id": "taskboard",
  "name": "TaskBoard",
  "description": "Simple kanban board for personal task management",
  "url": "https://taskboard.example.com",
  "category": "productivity",
  "tags": ["kanban", "tasks", "todo"],
  "github": "https://github.com/example/taskboard",
  "license": "Apache-2.0",
  "stars": 452,
  "addedAt": "2026-09-08",
  "section": "meets-criteria"
}

```

The `id` must remain unique across all entries in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json). Validate that your `category` value matches an existing category defined earlier in the file to ensure proper filtering functionality.

## Summary

- The **tools.json schema** defines ten standardized fields that balance required metadata with optional open-source attributes.
- **Required fields** include `id`, `name`, `description`, `url`, `category`, `tags`, `addedAt`, and `section` for basic functionality.
- **Optional fields** `github`, `license`, and `stars` provide additional context for repository-backed projects.
- The schema is implicitly defined by the JSON data structure in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json), with no separate TypeScript interface required for validation.
- Front-end components rely on consistent field presence to render tool cards, filter views, and sort by popularity metrics.

## Frequently Asked Questions

### What is the required format for the `id` field in tools.json?

The `id` field accepts lowercase alphanumeric strings with hyphens as separators. This URL-friendly identifier becomes part of the tool’s permalink structure, so spaces and special characters will break routing functionality.

### Is the `stars` field mandatory for every tool entry?

No, `stars` remains optional. While GitHub-hosted projects typically include this metric, proprietary web applications without public repositories can omit this field entirely without breaking the schema.

### What values are accepted for the `section` field?

The `section` field accepts exactly three enumerated strings: `featured` for homepage highlights, `meets-criteria` for standard listings, and `editors-pick` for curated selections. Using any other value will cause the entry to disappear from filtered views.

### Does BraveOPotato/FckSignups validate the JSON schema automatically?

The repository relies on implicit schema consistency rather than automated validation. Contributors should manually verify that new entries match existing patterns in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json), particularly ensuring that `category` values reference valid groups and `addedAt` follows ISO-8601 date formatting.