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.jsonfor content,src/data/schema.jsfor site identity. - Categories define UI filters; their
idvalues link to toolcategoryfields. - 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
sectionorfeaturedfields 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →