Joinery is a self-hosted membership and event management platform built in PHP with PostgreSQL. It provides a complete system for managing members, events, registrations, payments, and communications -- designed for organizations that want full control over their data and infrastructure.
- Membership management with profiles, permissions, and subscription tiers
- Event system with registration, recurring events, and capacity management
- Payment processing via Stripe and PayPal
- Email system with templates, Mailgun integration, and self-hosted email forwarding
- Content management with posts, pages, and photo galleries
- Plugin architecture for extending functionality
- Theme system with customizable templates
- Admin interface for site management
- REST API with key-based authentication
- Social features including messaging, likes, and moderation tools
Joinery uses a front-controller pattern with a modular MVC-like structure:
public_html/
serve.php # Front controller - all requests route through here
data/ # Database model classes (Active Record pattern)
logic/ # Business logic layer
views/ # Presentation templates
adm/ # Admin interface
includes/ # Core system classes
theme/ # Multi-theme system
plugins/ # Self-contained plugin modules
ajax/ # AJAX endpoints and webhooks
api/ # REST API
migrations/ # Version-controlled data migrations
- PHP 8.x
- PostgreSQL
- Apache with mod_rewrite
- Composer
Run the interactive setup wizard:
bash maintenance_scripts/install_tools/install.shThis handles database creation, configuration, dependency installation, and initial site setup.
Detailed documentation is available in public_html/docs/:
- Routing - URL routing and view resolution
- Logic Architecture - Business logic patterns
- Admin Pages - Admin interface development
- Plugin Developer Guide - Building plugins
- API - REST API authentication and endpoints
- FormWriter - Form generation system
- Component System - Reusable components
- Theme Integration - Theme setup
- Email System - Email sending and templates
- Photo System - Photo management
- Settings - System settings
- Validation - Input validation
- Deletion System - Soft and permanent delete
- Recurring Events - Recurring event architecture
- Scheduled Tasks - Cron and task system
- Social Features - Messaging, likes, moderation
- Subscription Tiers - Membership tiers
- Deploy and Upgrade - Deployment procedures
This project is licensed under the PolyForm Noncommercial License 1.0.0. Free for personal and noncommercial use. For commercial licensing, contact Joinery.