new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
제품과 시장 출시 사이를 연결해 눈길 잡히는 changelog로 사용자를 끌어들이고 로드맵으로 도입을 촉진하며 기능 성공을 손쉽게 추적한다
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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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. |