Skip to content

useportcall/portcall

Repository files navigation

Portcall

portcall-read-me-banner

Open-source, developer-first platform for metered billing, entitlements, and feature management.
Website · Docs


🚢 What is Portcall?

Portcall is a modern, open-source platform for building, launching, and scaling SaaS products with usage-based billing, entitlement management, and feature flagging. Built for developers, Portcall provides robust APIs, a beautiful dashboard, and ready-to-use example apps.

Key features:

  • 🔌 Metered & subscription billing (usage-based, seat-based, and more)
  • 🛡️ Entitlement management (feature flags, quotas, limits)
  • Modern APIs (REST, webhooks, event-driven)
  • 🖥️ Beautiful dashboard (Vite + React)
  • 🧩 Monorepo: Go backend, TypeScript/React frontends, Dockerized services
  • 🧪 Ready-to-use example apps (Next.js, with more coming soon...)

🗂️ Monorepo Structure

portcall/
├── apps/           # Main backend and frontend apps
│   ├── api/        # Go REST API for billing, entitlements, subscriptions
│   ├── dashboard/  # Go backend with Vite+React frontend dashboard
│   ├── checkout/   # Go backend with Next.js frontend checkout
│   ├── billing/    # Go Billing worker microservice
│   ├── ...         # Other Go worker microservices (email, file, webhook, etc)
├── libs/           # Shared Go libraries (dbx, apix, authx, etc)
├── docker/         # Docker Compose, infra, and local dev tools
├── example/        # Example Next.js app for integration
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE         # Apache 2.0
└── README.md       # This file

🚀 Quick Start

1. Prerequisites

2. Clone & Bootstrap

git clone https://github.com/useportcall/portcall.git
cd portcall

3. Run Everything (Local Dev)

# Start all services (API, dashboard, DB, etc)
cd docker
docker compose -f docker-compose.db.yml -f docker-compose.auth.yml -f docker-compose.tools.yml -f docker-compose.workers.yml up

4. Backend apps (Go)

# Dashboard API
cd apps/dashboard
go run main.go

# Checkout API
cd apps/checkout
go run main.go

# Public API
cd apps/api
go run main.go

5. Frontend Apps

The dashboard and checkout frontends are proxied through each respective backend API when run by themselves. If you don't need hot reload, just run npm run build and access them through the same localhost port as the backend APIs.

# Dashboard (Vite+React)
cd apps/dashboard/frontend
npm install && npm run dev

# Checkout (Next.js)
cd apps/checkout/frontend
npm install && npm run dev

# Example (Next.js)
cd example/example-next-app
npm install && npm run dev

🏛️ Architecture

  • Go microservices: Modular, scalable, and event-driven
  • Frontend: Vite+React dashboard, Next.js checkout & example apps
  • Database: Postgres (Dockerized for local dev)
  • Auth: Keycloak (Dockerized), JWT, API keys
  • Queue: Background jobs via Redis
  • Observability: Loki, Promtail, Prisma Studio
  • CI/CD: GitHub Actions (coming soon)

📦 Example Apps


🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • Code of Conduct
  • How to contribute
  • Development setup (Go, Node.js, Docker)
  • Coding standards
  • Issue reporting & PR process

📚 Documentation & Community


🛡️ License

Portcall is licensed under the Apache 2.0 License.


CI Status License