Galinum is self-driving product communications. A product team's agent uses the management API and distributable skill to create, target, launch, and measure timely messages.
This monorepo owns the reusable product, public contracts, and a single-project self-host server.
| Path | Purpose |
|---|---|
apps/docs |
Customer documentation, OpenAPI, MCP metadata, and the distributable skill |
packages/contracts |
Generated mobile-safe installation wire types and schemas |
packages/push |
Server-only APNs/FCM providers and shared push delivery engine |
packages/core |
Product-only campaign, audience, targeting, delivery, and adapter contracts |
packages/dashboard |
Reusable supervision pages and a framework-neutral host mount |
packages/react-native |
Native installation, identity, event and consent client with Expo and bare adapters |
packages/react |
React SDK for identifying users, tracking events, and rendering in-app messages |
packages/server |
Contract-generated management API, local adapter, and product Postgres schema |
examples/self-host |
Node 24 and Postgres 17 Compose example |
examples/react-native-expo |
Disposable Expo client foundation example |
examples/react-nextjs |
Next.js App Router example for the React SDK |
scripts |
Workspace, contract, schema, release, and affected-package checks |
Use Node 24 and pnpm 10.15.0.
corepack enable
pnpm install
pnpm verifyRun pnpm verify:affected -- --base <commit> to use the same path selection as CI.
Build and start the in-memory single-project server:
pnpm build
PORT=3000 GALINUM_PUBLIC_URL=http://localhost:3000 pnpm --filter @galinum/server startThe server prints development-only secret and publishable keys when you do not configure them. It binds the public management and SDK routes from apps/docs/openapi.json.
GALINUM_HOST defaults to 127.0.0.1. Set it to 0.0.0.0 only when a
container or network boundary protects the server.
GALINUM_PUBLIC_URL must be an HTTP(S) origin with no path, credentials, query, or fragment. The in-memory media store defaults it to http://localhost:<PORT> and prints a warning. Persistent GALINUM_MEDIA_DIR storage requires an explicit value.
To start the server with Postgres 17:
docker compose -f examples/self-host/compose.yaml up --buildThe current self-host path supports web in-app campaigns, push delivery, and the installation
lifecycle API documented in apps/docs/sdk/installations.mdx. It does not provide managed hosting, email delivery, backups, or organization billing.
Galinum is licensed under Apache-2.0. Read THIRD_PARTY_NOTICES.md for the included third-party components.