new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻譯準備中
彌合產品與上市之間的鴻溝。以驚豔的變更日誌保持使用者參與,透過路線圖推動採用,並無縫追蹤功能成功。
AI 翻譯
Bridge the gap between product and go-to-market. Keep users engaged with stunning changelogs, drive adoption with roadmaps, and track feature success seamlessly.
行銷TypeScript · JavaScriptGitHub @mvsssharma上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
The open-source, self-hostable product marketing platform. Embeddable widgets for Changelogs, Roadmaps, and Feedback that drop into your site in minutes — so your users actually find out about all the stuff you shipped at 2am. A free, self-hosted alternative to Canny, Beamer, Sleekplan, and Frill — no per-seat pricing, no vendor lock-in, your data on your own server. 🌐 glintpost.com · 📚 Docs · ⚖️ Compare · 🐳 Self-host in one command That's the entire setup. No cloud account, no "book a demo", no per-seat invoice.檢視完整 README ↗
The open-source, self-hostable product marketing platform.
Embeddable widgets for Changelogs, Roadmaps, and Feedback that drop into your site in minutes — so your users actually find out about all the stuff you shipped at 2am.
A free, self-hosted alternative to Canny, Beamer, Sleekplan, and Frill — no per-seat pricing, no vendor lock-in, your data on your own server.
🌐 glintpost.com · 📚 Docs · ⚖️ Compare · 🐳 Self-host in one command
git clone https://github.com/mvsssharma/glintpost.git && cd glintpost
cp .env.example .env
docker compose up -d --build # app + Postgres + local storage, zero external accounts
# → open http://localhost:3000
That's the entire setup. No cloud account, no "book a demo", no per-seat invoice.
You spent three weeks building a feature. You shipped it. And then… crickets. 🦗 Nobody noticed. Support is still fielding "hey, can you build X?" tickets for the X you launched last month.
The usual fix is bolting on Yet Another Tool — a separate changelog site, a separate roadmap portal, a separate feedback box — each with its own login, its own subdomain, and its own monthly invoice. Congratulations, you now run a small SaaS zoo. 🦒
GlintPost is the boring-in-a-good-way alternative: one lightweight layer for changelogs, roadmaps, and feedback that embeds straight into your product, plugs into your existing data stack (GTM, datalayer) instead of starting a new silo, and doesn't make your users go somewhere else to hear what's new. Ship it, announce it, watch people vote on what's next. That's the whole pitch.
And since it's open source, you can run the entire thing on your own box with a single docker compose up — no per-seat pricing, no "book a demo," no cloud account required. Your data, your server, your rules.
Most changelog/roadmap/feedback tools are closed-source SaaS that charge per seat and keep your users' data on their servers. GlintPost bundles all three surfaces into one self-hostable app.
| GlintPost | Canny | Beamer | Sleekplan | Frill | |
|---|---|---|---|---|---|
| Open source (MIT) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Self-host your data | ✅ | ❌ | ❌ | ❌ | ❌ |
| Free forever tier | ✅ (self-host) | Limited | Limited | Limited | Limited |
| Per-seat pricing | ❌ None | ✅ | ✅ | ✅ | ✅ |
| Changelog | ✅ | ✅ | ✅ | ✅ | ✅ |
| Roadmap + voting | ✅ | ✅ | ➖ | ✅ | ✅ |
| Feedback / surveys | ✅ | ✅ | ➖ | ✅ | ✅ |
| In-app embeddable widgets | ✅ | ✅ | ✅ | ✅ | ✅ |
| Multi-tenant (many products) | ✅ | ➖ | ➖ | ➖ | ➖ |
| Headless REST API | ✅ | ➖ | ➖ | ➖ | ➖ |
Full side-by-side breakdowns: glintpost.com/vs — vs Canny · vs Beamer · vs Sleekplan · vs Frill
The easiest way to run GlintPost locally or on your own server is using Docker.
git clone https://github.com/mvsssharma/glintpost.git
cd glintpost
cp .env.example .env
# For self-hosting, keep ENABLE_BILLING=false in .env and set APP_URL to your public URL
docker compose up -d --build
http://localhost:3000.(Note: Database migrations run automatically on startup!)
The bundled docker-compose.yml runs everything you need — the app, a PostgreSQL database, and local file storage for image uploads — with no external accounts required. Everything below is optional and only needed if you want to plug in your own managed services.
All configuration is done through environment variables (see .env.example). GlintPost is designed so a single build can be pointed at any environment — all deployment-specific values are read at runtime, so you never need to rebuild the image to change a URL, flag, or credential.
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | ✅ | PostgreSQL connection string. |
DIRECT_DATABASE_URL | ⚠️ | Direct (non-pooled) connection, used only for migrations. Required if DATABASE_URL points at a connection pooler (e.g. Supabase pgBouncer, Neon pooled). Falls back to DATABASE_URL if unset. |
AUTH_SECRET | ✅ | Secret for signing sessions & encrypting tokens. Generate with openssl rand -base64 32. |
AUTH_URL | ✅ | Public base URL used by the auth layer, e.g. https://updates.yourcompany.com. |
APP_URL | ✅ | Public base URL of the app. Used for email links and embed snippets. Usually the same as AUTH_URL. |
STORAGE_DRIVER | – | local (default when no S3 is set) stores uploads on disk; s3 uses an object store. |
UPLOAD_DIR | – | Directory for the local storage driver. Defaults to ./data/uploads (a mounted volume in Docker). |
S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_PUBLIC_URL | – | Object storage config — only when STORAGE_DRIVER=s3. Works with Cloudflare R2, AWS S3, MinIO, Backblaze B2, etc. |
RESEND_API_KEY | – | Email provider (Resend). If omitted, verification/reset links are printed to the server console. |
ENABLE_BILLING | – | false hides billing (recommended for self-hosting). Defaults to enabled. |
REQUIRE_EMAIL_VERIFICATION | – | true forces email verification before login. Defaults to false (frictionless self-host). |
LOG_LEVEL | – | Pino log level. Defaults to info. |
By default the Docker setup uses REQUIRE_EMAIL_VERIFICATION=false — a frictionless, instant setup where email verification is bypassed entirely. No email provider needed to get started.
If you forget your password and haven't configured a RESEND_API_KEY, just trigger a password reset and check the server console (docker compose logs web) to grab your secure reset link.
To send real emails, sign up for Resend, verify your sending domain, and set RESEND_API_KEY.
The bundled docker-compose.yml starts a Postgres container for you. To use an external managed database instead (Supabase, Neon, RDS, Railway, your own server, etc.):
.env (or the compose environment: block):
DATABASE_URL=postgresql://user:password@your-db-host:5432/glintpost
# If your provider uses a connection pooler, also set the DIRECT (non-pooled) URL —
# migrations cannot run over a pooler:
DIRECT_DATABASE_URL=postgresql://user:password@your-db-host:5432/glintpost
docker-compose.yml, delete (or comment out) the db: service, the depends_on: block under web, and the postgres_data volume.docker compose up -d --build web
Migrations run automatically on startup (prisma migrate deploy via the entrypoint), so a fresh database is initialized for you — no manual step required.
By default, image uploads are stored on a local Docker volume (uploads_data) and served by the app — no cloud account needed. This is great for most self-hosters.
If you'd rather offload images to an external, CDN-backed object store (recommended once you have many images or multiple app instances), switch to the s3 driver. It works with any S3-compatible provider — Cloudflare R2, AWS S3, MinIO, Backblaze B2, DigitalOcean Spaces.
Cloudflare R2 example:
glintpost-uploads).r2.dev URL, or attach a custom domain (e.g. cdn.yourcompany.com). That URL becomes S3_PUBLIC_URL..env (or the compose environment: block) and remove STORAGE_DRIVER=local:
STORAGE_DRIVER=s3
S3_ENDPOINT=https://<ACCOUNT_ID>.r2.cloudflarestorage.com
S3_BUCKET=glintpost-uploads
S3_ACCESS_KEY_ID=<your-access-key-id>
S3_SECRET_ACCESS_KEY=<your-secret-access-key>
S3_PUBLIC_URL=https://cdn.yourcompany.com # or the pub-xxxx.r2.dev URL
uploads_data volume from docker-compose.yml since it's no longer used.AWS S3 note:
S3_ENDPOINTishttps://s3.<region>.amazonaws.com, and the bucket needs a policy allowing publics3:GetObject(R2 handles public access at the bucket level instead). No bucket CORS config is required — uploads happen server-side and images load via plain<img>tags.
AUTH_SECRET (openssl rand -base64 32) — never ship the quickstart default.APP_URL and AUTH_URL to your real https:// domain.AUTH_TRUST_HOST=true and forward X-Forwarded-* headers.docker-compose.yml (or use an external database).ENABLE_BILLING=false unless you've configured Razorpay.If you want to contribute or run the app manually using Node.js:
npm install
.env file from .env.example and ensure DATABASE_URL points to a valid PostgreSQL instance.npx prisma migrate deploy # Creates the schema (use `migrate dev` if you're changing it)
npm run dev # Starts server at http://localhost:3000
For deep dives into our product decisions, architecture, and roadmap, check out the constitution/ directory:
We welcome contributions! Please check out the issues tab or submit a pull request.
This project is open-source and available under the MIT License.
AUTH_TRUST_HOST |
| – |
Set to true when running behind a reverse proxy (nginx, Caddy, Traefik) so the auth layer trusts the forwarded host. |