Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Record audio entries to create a personal time capsule of memories and insights
AI summary · website content
ProductivityHTML · JavaScriptGitHub @detorotodorov-alexanderOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A web app that records your voice, transcribes it, and turns your days into a web of the words and labels you keep returning to, so you can see the patterns in your life and live with more purpose.
Built for the Galaxy S24 Ultra viewport (412×915, 19.5:9). One file: index.html, plus sw.js for quiet reminders.
Serve the folder over HTTP (browsers block storage and the microphone on file:// pages):
python -m http.server 5173
then open http://localhost:5173. On a phone you need HTTPS for the microphone (a tunnel such as ngrok works).
The folder api/ holds Vercel serverless functions (free Hobby plan) between the site and OpenAI / GitHub. They keep the two
OpenAI keys and the GitHub token as environment variables, so they are never in this repo or in the page, and they only accept
requests from this site. They also fix the model (gpt-4o-mini) and cap the reply size, so nobody can run up the bill with
expensive calls. The site itself stays on GitHub Pages; Vercel only runs api/.
| Name | Value |
|---|---|
OPENAI_TRANSCRIBE_KEY | your Whisper key |
OPENAI_TEXT_KEY | your text key |
GITHUB_TOKEN | fine-grained token: only alive-app, Contents: Read and write |
GITHUB_REPO | detorotodorov-alexander/alive-app |
ALLOWED_ORIGIN | https://detorotodorov-alexander.github.io |
/api (for example https://alive-app.vercel.app/api) into apiURL in config.js
and empty openaiTranscribeKey and openaiTextKey there. Commit.Limits: a recording up to about 20 minutes (the request body limit is 4.5 MB at the app's 24 kbps). Reading entries and audio doesn't use the server at all; the app reads the public repo directly.
entries/ holds the past entries (a Spanish demo history, Aug–Oct 2026). Any device that opens the site loads them
from this public repo; no login.audio/<id>.webm, the entry to entries/<id>.json, and the entry again once it has its key points
and its "echoes".config.js)The app has no accounts and no per-user setup. Everyone uses the same configuration, which lives in config.js:
| Setting | What it is |
|---|---|
openaiTranscribeKey | OpenAI key used only for speech-to-text (Whisper). |
openaiTextKey | A second OpenAI key for everything text: key points, tags, summaries, insights, reminder messages (model: textModel, default gpt-4o-mini). |
databaseURL | One shared Firebase Realtime Database for all entries. Empty = entries stay on each device. |
Edit config.js on GitHub (pencil icon), commit, and the live site updates in about 30 seconds.
Create the shared database (2 minutes): in the Firebase console, create a project, then Build → Realtime Database →
Create database. Open the Rules tab and set { "rules": { ".read": true, ".write": true } } (explicit rules don't expire like
"test mode" does). Copy the database URL into databaseURL.
This repo is public, so anything in
config.jsis public. Use keys made only for this project, restricted to the endpoints they need (Audio for the Whisper key, Chat for the text key), with a hard monthly spend limit. OpenAI may auto-disable keys it finds in public repos. The open database rules also let anyone read and write every entry, which is fine for a demo and not for real journals. A real release should put the keys and the database behind a small server.
Everything is online in the shared database: entries and their audio (24 kbps voice, stored in ~900 KB chunks, about 240 KB per minute). Any device can play or transcribe any recording; each device keeps a local copy as a cache. On the free Firebase plan (1 GB) that is roughly 70 hours of recordings.
PIPELINE.md explains how text is processed so nothing is invented (gate, extraction with verbatim quotes, verification, links).REMOVED.md lists what has been hidden or removed from the UI and how to bring it back.archive/v1-voice-journal/ is a snapshot of the app before the latest redesign.config.js keys, the app falls back to the browser's speech recognition and local text analysis; keys typed in Settings still work for local testing.