Skip to content

Repository files navigation

Galinum

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.

Repository map

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

Development

Use Node 24 and pnpm 10.15.0.

corepack enable
pnpm install
pnpm verify

Run pnpm verify:affected -- --base <commit> to use the same path selection as CI.

Project policies

Run the local product

Build and start the in-memory single-project server:

pnpm build
PORT=3000 GALINUM_PUBLIC_URL=http://localhost:3000 pnpm --filter @galinum/server start

The 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 --build

The 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.

License

Galinum is licensed under Apache-2.0. Read THIRD_PARTY_NOTICES.md for the included third-party components.

Releases

Packages

Used by

Contributors

Languages