Open-source modules for Gatewaze.
This repository contains the official open-source module collection for the Gatewaze platform. Modules are self-contained packages that extend Gatewaze with additional capabilities — database migrations, admin UI pages, API routes, portal components, and background jobs.
| Module | Description |
|---|---|
| events | Core events management — create, manage, and run events with registrations, attendance tracking, and check-in |
| compliance | GDPR, CCPA, and SOC 2 compliance tools — consent records, privacy requests, data breach tracking, and audit logging |
This repository is designed to sit alongside the main Gatewaze repository:
parent-directory/
gatewaze/ # Core platform
gatewaze-modules/ # This repo — open-source modules
The core platform's pnpm-workspace.yaml already references ../gatewaze-modules/modules/*, so modules are automatically available after cloning.
git clone https://github.com/gatewaze/gatewaze-modules.git
cd gatewaze-modules
pnpm installUse the _template directory as a starting point:
cp -r modules/_template modules/my-featureThen update the module to fit your needs:
package.json— Set the module name, description, and any dependencies.index.ts— Define the module's ID, features, routes, nav items, migrations, and lifecycle hooks.migrations/— Add SQL migration files for your module's database schema.admin/— Add React components for the admin interface.
modules/my-feature/
package.json # Module package metadata
tsconfig.json # TypeScript configuration
index.ts # Module definition (routes, nav, migrations, config)
admin/ # Admin UI components (React)
pages/
MyPage.tsx
migrations/ # SQL migrations (applied in order)
001_create_tables.sql
Every module exports a GatewazeModule object from index.ts:
import type { GatewazeModule } from '@gatewaze/shared';
const myModule: GatewazeModule = {
id: 'my-feature',
type: 'feature',
visibility: 'public',
name: 'My Feature',
description: 'A short description of what this module does',
version: '1.0.0',
features: ['my-feature'],
dependencies: [],
migrations: [
'migrations/001_create_tables.sql',
],
adminRoutes: [
{
path: 'my-feature',
component: () => import('./admin/pages/MyPage'),
requiredFeature: 'my-feature',
guard: 'admin',
},
],
adminNavItems: [
{
path: '/admin/my-feature',
label: 'My Feature',
icon: 'Puzzle',
requiredFeature: 'my-feature',
parentGroup: 'dashboards',
order: 100,
},
],
configSchema: {},
onInstall: async () => {
console.log('[my-feature] Module installed');
},
onEnable: async () => {
console.log('[my-feature] Module enabled');
},
onDisable: async () => {
console.log('[my-feature] Module disabled');
},
};
export default myModule;- Database migrations — SQL files that create tables, indexes, RLS policies, and functions.
- Admin routes — React pages added to the admin dashboard.
- Admin navigation — Sidebar items linking to your admin pages.
- Portal navigation — Links added to the public-facing portal.
- API routes — Express routes registered with the API server.
- Edge functions — Supabase Edge Functions (Deno).
- Configuration — Schema-defined settings that admins can configure.
- Lifecycle hooks — Code that runs on install, enable, or disable.
For full documentation on the module system, see the Module System Guide in the core repository.
# Type check all modules
pnpm typecheck
# Build all modules
pnpm buildgatewaze-modules/
modules/
_template/ # Starting point for new modules
compliance/ # GDPR/CCPA compliance tools
events/ # Core events management
package.json # Root package configuration
pnpm-workspace.yaml # Monorepo workspace definition
tsconfig.base.json # Shared TypeScript configuration
docs/
assets/ # Logo files
We welcome contributions! Please read the Contributing Guide before getting started.
Key points:
- You must sign the Contributor License Agreement before your first PR is merged.
- Follow Conventional Commits for commit messages.
- All code must be written in TypeScript and pass linting and type checking.
Gatewaze Modules is licensed under the Apache License 2.0.
Copyright 2026 Gatewaze Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
See NOTICE for third-party attributions and TRADEMARK.md for trademark usage policy.