Build a community around your product with Squeak! by PostHog.

Squeak! is a toolkit for fostering a community in-house. It helps make discussions, resources, and solutions more accessible to the right people.

Learn more at squeak.posthog.com and star us to follow along.

Want to try it without installing? There's a cloud version of Squeak! too.

Toolkit

Squeak! tools are built for React-based static sites, but many products work with existing docs, knowledge bases, or websites.

ProductDescriptionProgress
Q&A.jsAdd threaded discussions to any page of your docs or websiteBeta
Discussion WarehouseA repository to manage shared knowledge threads from Slack, Q&A.js, and other sourcesBeta
Import Slack ThreadsLiberate product-related discussions from Slack and make them discoverable by search enginesAlpha
Auth 2.0OAuth, social loginsSummer 2022
Dynamic Open Graph ImagesA custom social media graphic for every webpage across your docs or websiteSummer 2022
Community ProfilesBios, badges, activity feed, leaderboards, lists/directoriesSummer 2022
Knowledge RepositoryLightweight, optimized content platform for docs, articles, guides, blogsSummer 2022
Knowledge SearchSearchable interface for Discussions, KnowledgeFall 2022
Page BuilderMDX + Storybook mashup w/ collections, lists, menusFall 2022
Dynamic PagesPersonalized content for each visitor by IP, UTM codes, or CRMWinter 2022
MarketplaceAllow community to make money from services for the platformSpring 2023

Docs

Visit the wiki for guides on:

  1. Embeddable widget (JavaScript, React)
  2. Admin portal
  3. Integrations
  4. Self-hosting
  5. API
  6. Local development

Links

About

Squeak! was created by PostHog out of a need to better support our own customers and move conversations out of our Slack community. Squeak! is open source under MIT.

Prisma

We use Prisma as our ORM. Prisma works by interpreting a schema file defined in prisma/schema.prisma and using a generated client. Prisma generates a strongly-typed client based on the schema file. The client is generated at runtime and not checked into version control. See the prisma docs about this. This means that the prisma client needs to be generated as part of any deployment process. As noted in the prisma docs, the prisma generate command is run as a postinstall hook when the prisma library is installed.

On deployment, the database needs to be migrated by running: npx prisma migrate deploy. See below for useful docs on production migrations:

Sentry

We use Sentry to capture errors, and we need to upload source maps to sentry and create a release in sentry. Currently this happens while building the docker image. Sentry automatically hooks into the yarn build process and uploads source maps and creates a release. This requires having a SENTRY_AUTH_TOKEN environment variable set to be picked up by the sentry-cli.

We handle this currently during docker builds via Github Actions. We pass in the SENTRY_AUTH_TOKEN as an build-arg to Docker from a github secret. See .github/docker-release.yml for that configuration.

Superjson

This project uses superjson to automatically handle serialization issues, primarily with BigInt, which we use for certain IDs.