
Chat Assistant Box: From PWA to Play Store (Capacitor 1.4)
- 16 Feb 2026

A fast, modern AI chat interface with markdown support, dark/light theme, Netlify serverless backend (OpenAI GPT-3.5 & Claude), and progressive web app polish.

Clone and install
git clone https://github.com/jovylle/chat.git
cd chat
npm install
OpenAI API key
MY_OPENAI_API = your OpenAI API keyRun locally (Netlify Dev)
npx netlify dev
Or serve the public folder (e.g. npx serve public) and point to the deployed /.netlify/functions/chat if already live.
Deploy
Connect the repo to Netlify; build command can be empty, publish directory: public, functions: netlify/functions. Netlify’s redirect rules ensure the SPA works and legacy hosts keep pointing to chat.uft1.com.
The UI talks to /.netlify/functions/chat. Netlify reads MY_OPENAI_API (and optionally MY_CLAUDE_API) from your site settings, so the default experience uses keys you control in production. For personal devices you can also run the chat with your own OpenAI or Anthropic key, and that key is used to call the provider endpoints directly from your browser:
sk-... for OpenAI, whatever Anthropic provides).localStorage.Need to rotate your own key? Clear all data in the settings menu and re-enter a fresh key (or just toggle the custom key switch off).
A policy page lives at https://chat.uft1.com/privacy-policy/ (also deployable via public/privacy-policy/index.html). It documents:
localStorage only, and how you can clear them from settings.The app is a PWA; to publish on Google Play you need an Android package (AAB preferred, or APK). Easiest path:
PWA Builder (recommended)
https://chat.uft1.com..aab file into the releases/ folder (see releases/README.md).Optional: TWA with Bubblewrap (reproducible build)
npm i -g @bubblewrap/cli, then bubblewrap init.https://chat.uft1.com/manifest.webmanifest.com.uft1.chatassistantbox), then build:bubblewrap build (produces AAB/APK in the project output folder).After deploying any manifest changes, re-run PWA Builder or Bubblewrap so the store package uses the updated PWA.
public/ – Static frontend (index.html, prism.js, prism.css)netlify/functions/chat.js – Serverless function that proxies requests to OpenAInetlify.toml – Netlify config (build, redirects, headers)MIT · jovylle

I started building this free AI chatbot on September 23, 2023, and shared the source so anyone could keep using or remix it at https://github.com/jovylle/chat. It lives openly on Netlify, so every vi
Read More