Can FckSignups Be Integrated with Existing Web Applications?
Yes, FckSignups (now NoSignups) can be integrated with existing web applications through iframe embedding, direct API calls to its Cloudflare Worker, or by consuming its static tool schema.
FckSignups is a standalone React and TypeScript single-page application that hosts a curated directory of no-signup tools. Because the frontend renders entirely client-side in src/main.tsx and the backend operates as stateless serverless functions, FckSignups integration with existing web applications requires no database connections or complex server configuration.
Embed the Full UI via Iframe
The simplest integration method loads the complete React application inside an iframe. Since src/main.tsx bootstraps the entire SPA and src/App.tsx handles routing internally, you can embed the live site without hosting any code yourself. This approach leverages the existing src/components/Home/Tools/ToolCard.tsx component rendering and search functionality without requiring you to rebuild the interface.
<!-- Example: embed the full NoSignups UI -->
<iframe
src="https://nosignups.net"
style="width:100%; height:800px; border:none;"
sandbox="allow-scripts allow-same-origin"
></iframe>
The iframe loads the production build, which retrieves the static tool list and handles all navigation internally.
Integrate via the Cloudflare Worker API
For deeper integration, call the stateless API endpoints defined in cloudflare-worker/worker.ts directly from your application. The worker exposes three POST endpoints—/suggest, /submit, and /report—that accept JSON payloads and return standard HTTP responses.
Submitting New Tools
When users suggest tools from your interface, forward the request to the suggestion handler:
async function suggestTool(tool) {
const response = await fetch('https://worker.nosignups.net/suggest', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(tool), // { name, url, description, category, tags, … }
});
const result = await response.json();
if (!response.ok) throw new Error(result.error);
return result; // e.g. { message: 'PR opened', prUrl: '…' }
}
The cloudflare-worker/urlHandlers/handleSuggestTool.ts handler validates the payload and automatically creates a GitHub pull request using the repository owner and name specified in environment variables (GITHUB_REPO_OWNER, GITHUB_REPO_NAME, GITHUB_TOKEN).
Reporting Abusive Entries
Similarly, abuse reports route through cloudflare-worker/urlHandlers/handleReportTool.ts via the /report endpoint, allowing your application to maintain content quality without implementing your own moderation queue.
Consume the Static Tool Catalog
You can bypass the UI entirely by importing the master tool list from src/data/schema.js. This static JavaScript module exports the complete catalog including tool IDs, names, URLs, categories, and tags.
import tools from 'https://nosignups.net/data/schema.js'; // public static file
// Example: filter tools by category
const devTools = tools.filter(t => t.category === 'development');
console.log(devTools);
Because the schema is a plain JavaScript module, you can bundle it with Webpack or Vite, or fetch it dynamically as JSON to power custom interfaces while relying on FckSignups as the single source of truth.
CORS and Cross-Origin Configuration
The cloudflare-worker/utils.ts file explicitly configures CORS headers to whitelist production domains and common localhost ports. The corsHeaders() helper function ensures safe cross-origin requests from any domain you host, eliminating browser security errors when calling the API from external applications.
Summary
- Iframe embedding requires zero code changes and loads the full React SPA from
src/main.tsxandsrc/App.tsx - Direct API integration uses the Cloudflare Worker endpoints in
cloudflare-worker/worker.tswith handlers incloudflare-worker/urlHandlers/handleSuggestTool.tsandcloudflare-worker/urlHandlers/handleReportTool.ts - Static schema consumption imports the tool list from
src/data/schema.jsfor custom UIs - All methods work without database dependencies or server-side rendering requirements
Frequently Asked Questions
Can I host FckSignups on my own domain?
Yes, you can deploy the React application to your own infrastructure by building the source and serving the static files. The Cloudflare Worker runs independently and can be pointed to your own fork of the repository by updating the GITHUB_REPO_OWNER and GITHUB_REPO_NAME environment variables.
Does the API require authentication?
The Cloudflare Worker endpoints do not require client-side authentication tokens. However, the worker itself validates requests using a server-side GITHUB_TOKEN to create pull requests and issues. Your application only needs to send standard JSON payloads without API keys.
What data format does the tool schema use?
The src/data/schema.js exports an array of tool objects containing fields such as id, name, url, category, tags, description, and addedDate. Each tool follows a strict TypeScript interface defined in the source code, ensuring type safety when consumed by TypeScript applications.
Is there a rate limit on the suggestion API?
While the source code does not implement explicit rate limiting in cloudflare-worker/urlHandlers/handleSuggestTool.ts, Cloudflare Workers inherently provide DDoS protection and resource limits. For high-volume integrations, consider implementing client-side debouncing or caching the static schema locally rather than hitting the suggestion endpoint repeatedly.
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 →