Browse the public source mirrors on the site, download the build folder, wire your own credentials, and ship the parts that serve your community.
Developers
Take the whole build folder.
Start from the complete public Pages build: the widget, Functions, source mirrors, migrations, and docs in one portable package.
The current build keeps the synced EnhanceMarkets-aligned SoulWall gate, adds The Giving Block support, and now includes SoulWall Lite: a light-mode, soft-gate interstitial for publisher traffic.
Unlimited integrations and community-driven updates forever. Because this project belongs to humans.
Self Hosted Build Folder
Use the real pieces
The public build excludes real environment values, local Wrangler state, and dependency folders. Bring your own Supabase, Cloudflare, and provider keys.
SoulWall Lite
A softer charity gate for readers, articles, and low-friction traffic.
SoulWall Lite is built for articles, downloads, newsletter links, campaign pages, and casual publisher traffic where the user should be nudged toward good, not blocked behind a hard workflow.
Your Cloudflare Worker sends selected requests to https://soulwall.org/lite. SoulWall shows the cause choices, tracks attention, and sends the visitor back to your original page.
Visitors can choose a verified cause or continue without donating. That makes it suitable for public content where goodwill matters more than locking the door.
title
The page, article, or asset name shown in the Lite gate.
next
The URL SoulWall sends the visitor back to after the gate.
sourceLabel
Your publication, product, or property name.
sourceWebsite
Your site origin, used for attribution and click reporting.
Quick Start
Run it like a Pages app
- Download the public build.
- Install dependencies with
npm install. - Create your own
.dev.varsfrom.dev.vars.example, including the optional ledger-credit fields if you want homepage attribution. - Run
npm run devto test Cloudflare Pages Functions locally.
npm install
npm run dev
<script src="https://soulwall.org/widget/soulwall-widget.js"
data-soulwall-client="your-project"
data-soulwall-provider="giveth"
data-soulwall-title="Premium Research Access"
data-soulwall-description="Unlocks the members-only dashboard for 24 hours."
data-soulwall-website="https://example.com"></script>
If you include the title, description, and website fields, SoulWall credits your deployment on the master homepage ledger when donations are confirmed.
Light Mode
Install SoulWall Lite in a Cloudflare Worker
- Use this when you want a softer reader gate instead of the full verification workflow.
- Your Worker redirects protected traffic to
https://soulwall.org/litewith the original page URL innext. - SoulWall Lite shows verified charity choices, records gate views and charity clicks, then lets the reader continue.
const SOULWALL_LITE_ORIGIN = "https://soulwall.org";
function soulwallLiteRedirect(request, { title, nextPath, sourceLabel }) {
const requestUrl = new URL(request.url);
const next = new URL(nextPath || requestUrl.pathname, requestUrl.origin);
const gate = new URL("/lite", SOULWALL_LITE_ORIGIN);
gate.searchParams.set("title", title || "Protected Content");
gate.searchParams.set("next", next.toString());
gate.searchParams.set("sourceLabel", sourceLabel || "Your Site");
gate.searchParams.set("sourceWebsite", requestUrl.origin);
return Response.redirect(gate.toString(), 302);
}
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
if (request.method === "GET" && url.pathname.startsWith("/opinion-gate/")) {
const slug = url.pathname.replace("/opinion-gate/", "").replace(/\/$/, "");
const title = url.searchParams.get("title") || slug.replace(/-/g, " ");
return soulwallLiteRedirect(request, {
title,
nextPath: `/article/${slug}`,
sourceLabel: "Your Publication"
});
}
return fetch(request);
}
};
The important fields are title, next, sourceLabel, and sourceWebsite. Change /opinion-gate/ and /article/ to match your own routes.
Take it, use it, make it better, make it work in ways I couldn't have imagined. Godspeed. Go confidently in the direction of your dreams.