This workflow demonstrates how to use n8n to build a complete, self-contained CRUD (Create, Read, Update, Delete) application without relying on any external server or hosting. It not only acts as the backend, handling all CRUD operations through Webhook endpoints, but also serves a fully functional HTML Single Page Application (SPA) directly via a webhook response.
Redis is used as a lightweight data store, providing fast and simple key-value storage with auto-incremented IDs. Because both the frontend (HTML app) and backend (API endpoints) are managed entirely within a single n8n workflow, you can quickly prototype or deploy small tools without additional infrastructure.
This approach is ideal for:
Before importing and running the workflow, make sure you have:
For the REST API, use a consistent path
. For example, if you choose items
as the path:
2a. Get All Items
GET
items
2b. Add Item
POST
items
2c. Edit Item
PUT
items
2d. Delete Item
DELETE
items
2e. Reset Items
POST
items-reset
Set the API URL
in the SET API URL node. Use your n8n webhook URL, for example:
https://yourn8n.com/webhook/items
Once everything is set:
This webhook serves a self-contained HTML Single Page Application (SPA) for basic CRUD operations. The HTML content is returned directly in the webhook response.
This setup is ideal for lightweight, browser-based tools without external hosting.
api_url
in the SET API URL
node to match your webhook endpointThis webhook handles retrieving all saved items from Redis.
Each item is returned with its corresponding ID and associated data (e.g., name). This endpoint is used by the HTML CRUD App to display the full list of items.
GET
This webhook handles the Add Item functionality.
This endpoint is typically called by the HTML CRUD App when adding a new item.
POST
{ "name": "item name" }
This webhook handles updating an existing item in Redis.
PUT
{ "id": 1, "name": "Updated Item Name" }
id
and updates its data in RedisThis webhook handles deleting a specific item from Redis.
DELETE
{ "id": 1 }
id
from RedisThis webhook handles resetting all data in the application.
POST