Introduction

OpenSaaS

OpenSaaS is an open-source SaaS Platform & Directory. It is a collection of open-source SaaS products that can be easily extended and composed. It is a great way to discover new open-source SaaS products and to learn about the latest technologies.

SaaS

Software-as-a-Service (SaaS) is a software distribution model in which software is licensed on a subscription basis and is centrally hosted. It is sometimes referred to as "on-demand software".

We have modeled the core abstract SaaS in GraphDL (opens in a new tab) here:

SaaS:
  plans: [Plan]
  visitors: [Visitors->visits]
  registrations: [Visitor->registrations]
  logins: [User->logsIn]
  users: [User->uses]
  onboardings: [User->onboards]
  activations: [User->activates]
  subscriptions: [User->subscribes]
  payments: [Customer->payments]
  upgrades: [Customer->upgrades]
  retention: [Customer->retains]
  expansion: [Customer->expands]
  refererrals: [Customer->refers]
  churn: [Customer->cancels]
  reactivations: [Customer->reactivates]
  apiKeys: [User->apiKeys]
  requests: [Request->SaaS]
  errors: [Error->SaaS]

Plan

Plan:
  name: string
  description: string
  price: currency
  term: annual | monthly
  features: [string | Feature]

Visitor

Visitor:
  _type: Person
  visits: [SaaS->visits]
  registers: [SaaS->registrations]
  ip: string
  isp: string
  city: string
  region: string
  country: string
  continent: string
  browser: string
  ja3hash: string
  fingerprint: string

Prospect

Prospect:
  _type: Visitor
  name: string
  email: string
  phone: string
  company: string | Company
  title: string
  contacts: SaaS

User

User:
  _type: Prospect
  plan: SaaS.plans
  logsIn: [SaaS->logins]
  uses: [SaaS->users]
  onboards: SaaS.onboardings
  activates: SaaS.activations
  subscribes: SaaS.subscriptions
  apiKeys: [SaaS->apiKeys]
  requests: [Request->User]
  errors: [Error->User]

Customer

Customer:
  _type: User
  pays: [SaaS->payments]
  upgrades: [SaaS->upgrades] 
  retains: [SaaS->retention]
  refers: [SaaS->referrals] 
  cancels: [SaaS->churn] 
  reactivates: [SaaS->reactivations]

Visit

Visit:
  _subject: Visitor
  _action: visits
  _object: Site

Contact

Contact:
  _subject: Prospect
  _action: contacts
  _object: SaaS
  communications: [Email | Call | Chat | Meeting | Event | Webinar | Social | Other]

Registration

Registration:
  _subject: Visitor
  _action: registers
  _object: SaaS
  email: EmailSequence

Using

Using:
  _subject: User
  _action: uses
  _reverse: users
  _object: SaaS
  email: EmailSequence

Onboarding

Onboarding:
  _subject: User
  _action: onboards
  _object: SaaS
  emails: EmailSequence

Activation

Activation:
  _subject: User
  _action: activates
  _object: SaaS
  emails: EmailSequence

Subscription

Subscription:
  _subject: User
  _action: subscribes
  _object: SaaS
  plan: SaaS.plans
  emails: EmailSequence

Cancellation

Cancellation:
  _subject: Customer
  _action: cancels
  _inverse: retains
  _object: SaaS

API Key

APIKey:
  _subject: User
  _action: apiKeys
  _object: SaaS
  prefix: string
  hash: string

Email Sequence

EmailSequence:
  _subject: SaaS
  _action: emails
  _object: Prospect | User | Customer
  emails: [EmailTemplate]
  timing: [duration]

Email Template

EmailTemplate:
  subject: string
  body: markdown | richtext | html