bibliocards/reviewinbox

Open-source AI inbox for App Store and Google Play reviews.

TypeScript

1

90 commits

updated Sep 20, 2026

See the code
ai
app-store
google-play
open-source
reviews
saas

See what people are saying (1)

SourceMessageScoreDate

I built an open-source inbox for App Store and Google Play reviews (r/SideProject)

Hey! I'm building ReviewInbox for developers who manage reviews across the App Store and Google Play. It brings reviews into one inbox and prepares AI reply drafts that you can edit before publishing. You can use the hosted version or self-host it. The video shows it running with Bibliocards:…

1

Sep 20, 2026

README

ReviewInbox icon

ReviewInbox

ReviewInbox is an open-source reply inbox for App Store and Google Play reviews. It imports reviews, drafts replies with AI, keeps humans in control, and helps teams turn recurring review pain into product insight.

ReviewInbox is not a feedback board. It reads existing public store reviews and turns them into replies, patterns, and actions.

Marketing site: https://reviewinbox.app

Screenshots

Reply Inbox

Apps

Organization profile

What It Does

  • Import App Store and Google Play reviews.
  • Generate AI Reply Drafts automatically when AI drafting is configured.
  • Let a human edit, ignore, or publish each reply.
  • Keep workflow and publishing history.
  • Support multiple Apps per Organization.
  • Turn recurring review pain into weekly product insight as the inbox workflow matures.

Status

ReviewInbox is in early alpha. The Docker Compose setup is the intended self-hosted deployment path, and the docs will stay aligned as the product hardens.

Self-Hosting

The recommended self-hosted setup uses pinned Docker images and Docker Compose:

  • ghcr.io/bibliocards/reviewinbox-api:${REVIEWINBOX_VERSION}
  • ghcr.io/bibliocards/reviewinbox-web:${REVIEWINBOX_VERSION}
  • ghcr.io/bibliocards/reviewinbox-worker:${REVIEWINBOX_VERSION}
  • Postgres 18

Quick start on a VPS:

curl -fsSLO https://raw.githubusercontent.com/bibliocards/reviewinbox/main/docker-compose.self-hosted.yml
curl -fsSLo .env.self-hosted https://raw.githubusercontent.com/bibliocards/reviewinbox/main/.env.self-hosted.example
openssl rand -base64 32 # BETTER_AUTH_SECRET
openssl rand -base64 32 # APP_ENCRYPTION_KEY
nano .env.self-hosted
chmod 600 .env.self-hosted

Before starting, edit .env.self-hosted and set at least:

  • REVIEWINBOX_VERSION
  • APP_PUBLIC_URL
  • BETTER_AUTH_URL
  • BETTER_AUTH_TRUSTED_ORIGINS
  • BETTER_AUTH_SECRET
  • APP_ENCRYPTION_KEY
  • POSTGRES_PASSWORD

AI drafting is optional but central to the Reply Draft workflow. Set REPLY_DRAFT_WORKER_ENABLED=true on the API and AI_PROVIDER=openai-compatible, AI_MODEL, and AI_API_KEY on the worker to enable autogenerated Reply Drafts.

Start the stack after editing .env.self-hosted:

docker compose --env-file .env.self-hosted -f docker-compose.self-hosted.yml up -d

See docs/self-hosting.md for VPS setup, upgrades, backups, and Traefik, Caddy, and Nginx reverse proxy examples.

Store setup guides:

Development

See CONTRIBUTING.md for local setup, checks, database commands, and Docker image notes.

Architecture

  • Monorepo: pnpm and Nx
  • Product app: Angular, PrimeNG, Tailwind v4
  • Backend API: Hono under /api/*
  • Worker: Node.js service for Store Connection sync, AI Reply Draft jobs, and digests
  • Shared contracts: Zod schemas with inferred TypeScript types
  • Database: Postgres with Drizzle
  • Auth: Better Auth under Hono /api/auth/*, with email/password, Organizations, and HTTP-only session cookies
  • Queue: pg-boss
  • AI: Vercel AI SDK behind a ReviewInbox-owned package boundary
  • Deployment: Docker Compose with separate API, web, worker, and Postgres services

Core Concepts

  • Organization: tenant boundary for users, Apps, Store Connections, Reviews, and usage.
  • App: a mobile product tracked by ReviewInbox.
  • Store Connection: an App Store or Google Play connection for an App.
  • Store Credential: encrypted credential material for a Store Connection.
  • Review: a store review imported for a specific App and Store Connection.
  • Reply Draft: an AI-generated or manually edited proposed reply.
  • Published Reply: a reply successfully published back to the store.
  • Sync Run: one Store Connection review import attempt.
  • Weekly Digest: a Markdown or email summary of recurring product pain.

See CONTEXT.md for the project glossary and docs/adr/ for architectural decisions.

Store Review Sync Limits

Store APIs do not expose the same historical review window. ReviewInbox's connection guides cover the credentials and permissions required by each provider.

  • Apple App Store: ReviewInbox uses the App Store Connect customer reviews API. The current implementation follows the API pagination links and stores the app version when Apple provides appVersionString. Apple allows a Published Reply to appear on the App Store after a delay of up to 24 hours.
  • Google Play: ReviewInbox uses the Google Play Developer Reply to Reviews API. Google exposes only production Reviews with written text and were created or modified within the last 7 days. Replies are limited to 350 characters; the API documents 200 GET requests per hour and 2,000 POST requests per day per app. Historical Google Play reviews must be imported from the Google Play Console CSV export if needed. ReviewInbox stores the app version when Google provides appVersionName.

License

ReviewInbox is licensed under Apache-2.0.

Contributors

thomasorgeval

90 commits

bibliocards/reviewinbox

Open-source AI inbox for App Store and Google Play reviews.

TypeScript

1

90 commits

updated Sep 20, 2026

See the code
ai
app-store
google-play
open-source
reviews
saas

See what people are saying (1)

SourceMessageScoreDate

I built an open-source inbox for App Store and Google Play reviews (r/SideProject)

Hey! I'm building ReviewInbox for developers who manage reviews across the App Store and Google Play. It brings reviews into one inbox and prepares AI reply drafts that you can edit before publishing. You can use the hosted version or self-host it. The video shows it running with Bibliocards:…

1

Sep 20, 2026

README

ReviewInbox icon

ReviewInbox

ReviewInbox is an open-source reply inbox for App Store and Google Play reviews. It imports reviews, drafts replies with AI, keeps humans in control, and helps teams turn recurring review pain into product insight.

ReviewInbox is not a feedback board. It reads existing public store reviews and turns them into replies, patterns, and actions.

Marketing site: https://reviewinbox.app

Screenshots

Reply Inbox

Apps

Organization profile

What It Does

  • Import App Store and Google Play reviews.
  • Generate AI Reply Drafts automatically when AI drafting is configured.
  • Let a human edit, ignore, or publish each reply.
  • Keep workflow and publishing history.
  • Support multiple Apps per Organization.
  • Turn recurring review pain into weekly product insight as the inbox workflow matures.

Status

ReviewInbox is in early alpha. The Docker Compose setup is the intended self-hosted deployment path, and the docs will stay aligned as the product hardens.

Self-Hosting

The recommended self-hosted setup uses pinned Docker images and Docker Compose:

  • ghcr.io/bibliocards/reviewinbox-api:${REVIEWINBOX_VERSION}
  • ghcr.io/bibliocards/reviewinbox-web:${REVIEWINBOX_VERSION}
  • ghcr.io/bibliocards/reviewinbox-worker:${REVIEWINBOX_VERSION}
  • Postgres 18

Quick start on a VPS:

curl -fsSLO https://raw.githubusercontent.com/bibliocards/reviewinbox/main/docker-compose.self-hosted.yml
curl -fsSLo .env.self-hosted https://raw.githubusercontent.com/bibliocards/reviewinbox/main/.env.self-hosted.example
openssl rand -base64 32 # BETTER_AUTH_SECRET
openssl rand -base64 32 # APP_ENCRYPTION_KEY
nano .env.self-hosted
chmod 600 .env.self-hosted

Before starting, edit .env.self-hosted and set at least:

  • REVIEWINBOX_VERSION
  • APP_PUBLIC_URL
  • BETTER_AUTH_URL
  • BETTER_AUTH_TRUSTED_ORIGINS
  • BETTER_AUTH_SECRET
  • APP_ENCRYPTION_KEY
  • POSTGRES_PASSWORD

AI drafting is optional but central to the Reply Draft workflow. Set REPLY_DRAFT_WORKER_ENABLED=true on the API and AI_PROVIDER=openai-compatible, AI_MODEL, and AI_API_KEY on the worker to enable autogenerated Reply Drafts.

Start the stack after editing .env.self-hosted:

docker compose --env-file .env.self-hosted -f docker-compose.self-hosted.yml up -d

See docs/self-hosting.md for VPS setup, upgrades, backups, and Traefik, Caddy, and Nginx reverse proxy examples.

Store setup guides:

Development

See CONTRIBUTING.md for local setup, checks, database commands, and Docker image notes.

Architecture

  • Monorepo: pnpm and Nx
  • Product app: Angular, PrimeNG, Tailwind v4
  • Backend API: Hono under /api/*
  • Worker: Node.js service for Store Connection sync, AI Reply Draft jobs, and digests
  • Shared contracts: Zod schemas with inferred TypeScript types
  • Database: Postgres with Drizzle
  • Auth: Better Auth under Hono /api/auth/*, with email/password, Organizations, and HTTP-only session cookies
  • Queue: pg-boss
  • AI: Vercel AI SDK behind a ReviewInbox-owned package boundary
  • Deployment: Docker Compose with separate API, web, worker, and Postgres services

Core Concepts

  • Organization: tenant boundary for users, Apps, Store Connections, Reviews, and usage.
  • App: a mobile product tracked by ReviewInbox.
  • Store Connection: an App Store or Google Play connection for an App.
  • Store Credential: encrypted credential material for a Store Connection.
  • Review: a store review imported for a specific App and Store Connection.
  • Reply Draft: an AI-generated or manually edited proposed reply.
  • Published Reply: a reply successfully published back to the store.
  • Sync Run: one Store Connection review import attempt.
  • Weekly Digest: a Markdown or email summary of recurring product pain.

See CONTEXT.md for the project glossary and docs/adr/ for architectural decisions.

Store Review Sync Limits

Store APIs do not expose the same historical review window. ReviewInbox's connection guides cover the credentials and permissions required by each provider.

  • Apple App Store: ReviewInbox uses the App Store Connect customer reviews API. The current implementation follows the API pagination links and stores the app version when Apple provides appVersionString. Apple allows a Published Reply to appear on the App Store after a delay of up to 24 hours.
  • Google Play: ReviewInbox uses the Google Play Developer Reply to Reviews API. Google exposes only production Reviews with written text and were created or modified within the last 7 days. Replies are limited to 350 characters; the API documents 200 GET requests per hour and 2,000 POST requests per day per app. Historical Google Play reviews must be imported from the Google Play Console CSV export if needed. ReviewInbox stores the app version when Google provides appVersionName.

License

ReviewInbox is licensed under Apache-2.0.

Contributors

thomasorgeval

90 commits

Languages

TypeScript

83.0%

HTML

11.1%

Astro

4.1%

CSS

1.2%