FckSignups Configuration Options: Complete Guide to Customizing NoSignups

FckSignups (now NoSignups) stores all configuration in JSON files—tools.json and 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. This file exports a single websiteSchema object consumed by the application.

// 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. 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:

// 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. 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

{
  "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:

{
  "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:

{
  "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 with new metadata:

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 Categories and complete tool catalogue Yes—primary configuration
src/data/schema.js Site metadata and JSON-LD schema Yes—branding only
README.md Schema documentation and contribution guidelines Yes—documentation
src/hooks/useTools.ts Runtime consumer of 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 for content, 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 at the repository root, with site metadata in 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 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 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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →