ShipAddons

Quick Overview

Prerequisites, architecture overview, and who ShipAddons is for

ShipAddons is a production-ready boilerplate for building premium Google Workspace Add-ons. It handles authentication, database, and payments so you can focus on your add-on's core functionality.

Who This Is For

ShipAddons is designed for:

  • Developers building premium Google Workspace add-ons
  • Teams who want auth, billing, and backend solved from day one
  • Indie makers who need to ship fast without compromising on security

Who This Is NOT For

This boilerplate assumes familiarity with modern web development:

  • Beginners new to JavaScript or React should start with simpler projects
  • Simple one-off scripts don't need this level of infrastructure

Architecture Overview

ShipAddons consists of three main components:

┌─────────────────────────────────────────────────────────────────┐
│                         Google Workspace                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────┐ │
│  │   Sheets    │  │    Docs     │  │   Slides    │  │  Forms  │ │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └────┬────┘ │
│         └────────────────┴────────────────┴──────────────┘      │
│                              │                                  │
│                    ┌─────────▼─────────┐                        │
│                    │   Apps Script     │                        │
│                    │   (React UI)      │                        │
│                    └─────────┬─────────┘                        │
└──────────────────────────────┼──────────────────────────────────┘
                               │ HTTPS
                    ┌──────────▼──────────┐
                    │    Next.js API      │
                    │    (Backend)        │
                    └──────────┬──────────┘

              ┌────────────────┼────────────────┐
              │                │                │
     ┌────────▼────────┐ ┌─────▼─────┐ ┌───────▼───────┐
     │    Supabase     │ │  Stripe   │ │    Google     │
     │   (Database)    │ │(Payments) │ │    (JWKS)     │
     └─────────────────┘ └───────────┘ └───────────────┘

Addon (Google Apps Script inside addon folder)

The add-on runs inside Google Workspace apps (Sheets, Docs, Slides, Forms). It consists of:

  • Server code - (src/server folder) Apps Script functions that interact with Google APIs and provide the identity token
  • Client code - (src/client folder) React application rendered in a sidebar, dialog or any google supported component.

The add-on uses ScriptApp.getIdentityToken() to get a Google-signed JWT that proves the user's identity.

Backend API (inside web folder)

A Next.js application that serves two purposes:

Public landing page - [Optional] marketing site for your add-on.

API endpoints - Secure backend for the add-on:

  • Verifies Google Identity Tokens using Google's public JWKS
  • Creates and manages users in Supabase
  • Generates Supabase-compatible JWTs for authenticated API calls
  • Handles Stripe checkout sessions and webhooks

This API can be easily migrated to FastAPI, express or any other stack.

Note: More backends will be supported in upcoming releases.

Database (Supabase)

PostgreSQL database with Row Level Security (RLS) that stores:

  • User accounts linked to Google identity
  • Subscription status synced from Stripe
  • Credits and usage tracking
  • Audit logs for debugging and analytics

Prerequisites

Before you begin, ensure you have:

  • Node.js 18+ - Required for the add-on build tools
  • Google Cloud Project - For OAuth and Apps Script
  • Supabase account - Free tier is sufficient for development
  • Stripe account - Test mode for development
  • clasp CLI - Google's command-line tool for Apps Script
  • Google Apps Script API enabled - Enable at Google user settings

Next Steps

Ready to deploy your first add-on?

On this page