Briefly is a productivity workspace for turning messy input into clear action.
It focuses on fast, structured output instead of a generic chatbot flow:
Meeting NotesTask BreakdownReply DraftChatfor follow-up discussion and revision
Turn rough notes or transcripts into:
- summary
- decisions
- action items
- open questions
Turn a big goal into:
- steps
- priorities
- execution order
- checklist
Turn message context into:
- draft reply
- tone options
- follow-up
Continue from any generated result:
- refine
- revise
- brainstorm next steps
- auto compact long threads to keep Pollinations payloads more stable
- keep full thread history visible in the UI while sending a compacted context to the model
Briefly uses Pollinations text generation through local Next.js API routes:
/api/generate/api/chat/api/chat/threads/api/chat/threads/[threadId]
The app is built around the official Bring Your Own Pollen redirect flow.
Current BYOP setup:
- user clicks
Connect Pollinations - app redirects to Pollinations authorization
- Pollinations returns
#api_key=sk_...to/app - the key is exchanged into an encrypted
httpOnlysession cookie - the selected model is limited to the same allowed model list used during BYOP authorization
If no usable Pollinations key is available, Briefly falls back to local structured output.
Next.js 16React 19TypeScriptTailwind CSS v4
/landing page/appmain workspace/api/generatestructured tool output/api/chatfollow-up chat output/api/chat/threadsthread list for the chat sidebar/api/chat/threads/[threadId]full message history for one active thread
Install dependencies:
npm installRun the app:
npm run devOpen:
http://localhost:3000Copy .env.example to .env.local for local development.
Available variables:
POLLINATIONS_CLIENT_ID=
BRIEFLY_SESSION_SECRET=
POLLINATIONS_API_KEY=
POLLINATIONS_TEXT_MODEL=
CHAT_LIMIT=100
CHAT_KEEP_RECENT=24Notes:
POLLINATIONS_CLIENT_IDis the Pollinations App Key (pk_...) used by the BYOP connect flowBRIEFLY_SESSION_SECRETis required to encrypt the BYOP session cookie on the serverPOLLINATIONS_API_KEYis optional server-side fallback authPOLLINATIONS_TEXT_MODELis optional if you want a server default modelCHAT_LIMITis the max activeuser + assistantmessage count before auto compaction runsCHAT_KEEP_RECENTis how many newest raw conversation messages are still sent in full after the latest compaction- full thread history still stays visible in the UI and database
- the chat timeline shows clickable
AUTO COMPACTINGdividers; each divider reveals the agent-generated summary for that compaction point - model payload uses only the latest compaction summary plus the most recent raw messages after that point
Recommended redirect URIs:
https://briefly-app.defyma.com/app
http://localhost:3000/app
Lint:
npm run lintBuild:
npm run buildThis repo includes:
Dockerfile.dockerignoredocker-compose.yml.github/workflows/docker-publish.yml
Default compose image:
ghcr.io/defyma/briefly-app:latestWorkflow behavior:
- push to
maintriggers image build - image is published to
ghcr.io/defyma/briefly-app - server can run
docker compose pull && docker compose up -d
Example docker-compose.yml expects:
services:
briefly:
image: ghcr.io/defyma/briefly-app:latest
container_name: briefly-app
restart: unless-stopped
ports:
- "3000:3000"
env_file:
- .env- App repo:
https://github.com/defyma/briefly-app - Pollinations:
https://pollinations.ai - Showcase:
https://pollinations.ai/apps - BYOP docs:
https://gen.pollinations.ai/docs#tag/bring-your-own-pollen