kChat is a fully static application — every page is plain HTML, and all logic runs in the browser through vanilla JavaScript. There is no build step, no server-side runtime, and no compilation required before deployment. This means you can host your own kChat instance on any service that is capable of serving HTML files over HTTPS, including free tiers of GitHub Pages, Netlify, and Vercel. The only external dependency at runtime is the Supabase project you configured during setup.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/korynthian/chatroom/llms.txt
Use this file to discover all available pages before exploring further.
Hosting Options
- GitHub Pages
- Netlify
- Vercel
- Local / Any Server
GitHub Pages serves static files directly from a repository branch at no cost.
- Push the kChat directory (with your credentials already set in
chat.jsandindextablenames.js) to a GitHub repository. - In the repository, go to Settings → Pages.
- Under Build and deployment, set Source to
Deploy from a branch, choose themainbranch, and set the folder to/ (root). - Click Save. GitHub will publish the site within a minute or two and display the URL (typically
https://<your-username>.github.io/<repo-name>/).
index.html as the default document for the root URL.Securing Your Data with Row Level Security
Because the Supabase publishable key is visible in client-side JavaScript, anyone who finds your project URL could, in principle, read or write to your Supabase tables directly. Supabase’s Row Level Security (RLS) feature lets you define fine-grained policies that control exactly which operations are permitted on each table. At a minimum, consider adding RLS policies that:- Allow any user to read (
SELECT) from themessagesandroomstables. - Allow any user to insert (
INSERT) into themessagestable. - Restrict
UPDATEandDELETEonmessagesto the row owner or an authenticated admin role.
All user preferences — including username and any custom CSS theme — are stored in the browser’s
localStorage. This data is local to the device and browser you are using; it is not written to Supabase and will not carry over to other devices or browsers automatically.