# FckSignups Configuration Options: Complete Guide to Customizing NoSignups

> Explore FckSignups configuration options in this comprehensive guide. Customize categories, tool entries, and site metadata easily using JSON files for complete control.

- Repository: [Abdullah/FckSignups](https://github.com/BraveOPotato/FckSignups)
- Tags: how-to-guide
- Published: 2026-09-07

---

**FckSignups (now NoSignups) stores all configuration in JSON files—[`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) and [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js)—allowing full customization of categories, tool entries, and site metadata without modifying source code.**

The repository uses a data-driven architecture where **all configurable aspects live in static JSON files**. This design lets anyone fork the project, edit a few configuration files, and deploy a customized tool directory instantly. Understanding the FckSignups configuration structure is essential for contributors, maintainers, and anyone self-hosting the application.

## Website Schema Configuration

The **site-wide SEO metadata** and JSON-LD structured data are controlled by [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js). This file exports a single `websiteSchema` object consumed by the application.

```js
// src/data/schema.js
export const websiteSchema = {
  "@context": "https://schema.org",
  "@type": "WebSite",
  name: "NoSignups",
  url: "https://nosignups.net/",
  description:
    "A directory of open‑source tools that work in the browser without signups."
};

```

| Field | Purpose |
|-------|---------|
| `@context` | Schema.org vocabulary URL (typically left unchanged) |
| `@type` | Schema type—`WebSite` for the root domain |
| `name` | Brand name appearing in meta titles and structured data |
| `url` | Canonical site URL |
| `description` | Meta description for search engines and social shares |

*Modify these values to rebrand the site. Changes reflect immediately after restarting the development server with `npm run dev`.*

## Tool Catalogue Configuration

The **entire tool directory** resides in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json). This single file contains two top-level keys: `"categories"` and `"tools"`.

### Category Definitions

Categories define the **filterable groupings** displayed in the UI navigation bar. Each category object requires three fields:

```json
// tools.json — "categories" array
{
  "id": "productivity",
  "name": "Productivity",
  "icon": "⚡",
  "description": "Get things done without creating accounts"
}

```

| Field | Required | Description |
|-------|----------|-------------|
| `id` | Yes | URL-friendly slug referenced by tool entries |
| `name` | Yes | Human-readable label shown in the UI |
| `icon` | Yes | Emoji or short string rendered as category icon |
| `description` | No | Tooltip or accessibility text |

*Add, remove, or reorder categories by editing this array. The UI automatically generates filter buttons from the current list.*

### Tool Entry Schema

Each tool in the `"tools"` array follows a **strict schema documented in [`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md)**. According to the NoSignups source code, these fields control how entries render and behave:

| Field | Required | Description |
|-------|----------|-------------|
| `id` | Yes | Unique, URL-friendly identifier |
| `name` | Yes | Display title |
| `description` | Yes | One-sentence summary (≤120 characters recommended) |
| `url` | Yes | Direct link to the tool |
| `category` | Yes | Must match a category `id` from the `categories` array |
| `tags` | No | Array of searchable keywords |
| `github` | No | Repository URL for source code link |
| `license` | No | SPDX identifier (e.g., `"MIT"`, `"GPL-3.0"`) |
| `stars` | No | GitHub star count for credibility display |
| `featured` | No | Boolean; `true` pins to top section |
| `notRecommendedReason` | No | Explanation for deprecated or problematic entries |
| `addedAt` | No | ISO date string (`"2026-05-07"`) |
| `section` | No | Override placement (`"featured"` or omitted) |

### Complete Tool Entry Example

```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": 127590,
  "addedAt": "2026-05-07",
  "section": "featured"
}

```

## Practical Configuration Examples

### Adding a New Category

Insert a new object into the `"categories"` array in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json):

```json
{
  "id": "ai",
  "name": "AI & Machine Learning",
  "icon": "🤖",
  "description": "Browser‑based AI utilities, models and playgrounds"
}

```

After committing, the filter bar automatically includes the new category.

### Adding a New Tool

Append to the `"tools"` array with all required fields:

```json
{
  "id": "chatgpt-lite",
  "name": "ChatGPT Lite",
  "description": "No‑signup, client‑side LLM chat UI",
  "url": "https://chatgpt-lite.example.com",
  "category": "ai",
  "tags": ["llm","chat","browser"],
  "github": "https://github.com/example/chatgpt-lite",
  "license": "MIT",
  "stars": 342,
  "addedAt": "2026-07-01",
  "section": "featured"
}

```

The `section: "featured"` value pins this entry to the top of the directory.

### Rebranding the Site

Update [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js) with new metadata:

```js
export const websiteSchema = {
  "@context": "https://schema.org",
  "@type": "WebSite",
  name: "MyToolHub",
  url: "https://mytoolhub.example.com/",
  description: "Curated collection of zero‑signup web tools."
};

```

## Key Configuration Files Summary

| File | Purpose | Editable |
|------|---------|----------|
| [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) | Categories and complete tool catalogue | Yes—primary configuration |
| [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js) | Site metadata and JSON-LD schema | Yes—branding only |
| [`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md) | Schema documentation and contribution guidelines | Yes—documentation |
| [`src/hooks/useTools.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/src/hooks/useTools.ts) | Runtime consumer of [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) | No—implementation detail |

## Summary

- **All FckSignups configuration is JSON-based**—no rebuild required for data changes in development.
- **Two files control everything**: [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) for content, [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js) for site identity.
- **Categories define UI filters**; their `id` values link to tool `category` fields.
- **Tool entries follow a documented schema** with required fields (`id`, `name`, `description`, `url`, `category`) and optional enrichment fields (`github`, `license`, `stars`, `tags`).
- **Featured placement** uses the `section` or `featured` fields to pin entries.

## Frequently Asked Questions

### Where are FckSignups configuration files located?

The **main configuration lives in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json)** at the repository root, with **site metadata in [`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js)**. These are the only files you need to edit for customization. The React components in `src/` consume these files at runtime.

### How do I add a new tool to the NoSignups directory?

Append a JSON object to the `"tools"` array in [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) with all **five required fields**: `id`, `name`, `description`, `url`, and `category`. The `category` value must match an existing category `id`. Optional fields like `github`, `license`, and `tags` improve discoverability.

### Can I change the site name and domain for self-hosting?

Yes—edit **[`src/data/schema.js`](https://github.com/BraveOPotato/FckSignups/blob/main/src/data/schema.js)** and update the `name`, `url`, and `description` fields. These values populate meta tags and JSON-LD structured data. No other files require modification for basic rebranding.

### What happens if a tool's category doesn't exist?

The application filters tools by matching `tool.category` against `categories[].id`. If no match exists, the tool **may not appear in category filters** though it typically remains searchable by name or tag. Always verify category `id` values match before committing new entries.