=== Clubhaus ===
Contributors: clubhaus
Tags: community, membership, courses, forum, social
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Own your community. A paid community platform on your own WordPress site: member feed, courses, profiles and tiers, with no platform fees.

== Description ==

Clubhaus is a self-hosted alternative to hosted community platforms. Run your community on the site you already own: your members, your data, no per-member fees.

Free core: one community, the member feed with comments, reactions, polls and @mentions, points and levels, member profiles, one free tier, and courses with modules, lessons, progress and drip.

Clubhaus Pro is a separate add-on plugin that adds paid tiers with Stripe, multiple spaces, direct messages, events with RSVP, waitlists, reminders and a calendar, analytics, custom branding and real-time transport. Nothing in the free plugin is locked or time-limited.

= Built for the site you already own =

* Members live in your WordPress users table; content lives in your database. Export or erase anyone with the core privacy tools.
* Mobile-first community app at /app/ with a web manifest and offline fallback, so members can install it on their phone.
* Blocks for every piece: Feed, Gate, Course Player, Course Catalog, Notification Bell, Notification Settings, Community Landing, Join Form, Onboarding Questions, Member Directory and Profile Editor.
* Modules you can switch off: feed, courses, notifications, profiles and moderation each register independently.
* Migration tools for Skool (CSV) and Circle (API) with dry-run previews.
* Developer friendly: REST API under clubhaus/v1, 130+ documented actions and filters, theme-overridable email templates, PSR-4 code and WordPress Coding Standards.

= Privacy =

Clubhaus makes no external requests from the free plugin. Web push, link previews and email delivery all use your own site. The Pro add-on contacts Stripe and, when a license key is entered, Lemon Squeezy's license service; both are opt-in.

== Installation ==

1. Install and activate the plugin.
2. Open Clubhaus in the admin menu: name your community, pick an accent color and choose which modules to run.
3. Add the Community Landing block to a page for visitors and send members to /app/.
4. Optional: install Clubhaus Pro for paid tiers, events and direct messages.

== Frequently Asked Questions ==

= Is the free version limited? =

No. Everything in this plugin works without the Pro add-on: one community, the feed, courses, profiles, notifications, moderation and one free tier. Pro adds paid tiers and the features that need a paid gateway, more spaces, events and messaging.

= Does it work on shared hosting? =

Yes. Clubhaus runs background work through Action Scheduler, uses short polling rather than websockets, and keeps high-volume data in its own indexed tables. A persistent object cache helps beyond about 10,000 members.

= Can I move from Skool or Circle? =

Yes. Clubhaus > Migrate imports a Skool members CSV or pulls members, spaces and posts from the Circle API, with a dry run before anything is written. Guides are linked from that screen.

= Where is my data? =

In your WordPress database: members are WordPress users, courses and events are post types, and feed posts, comments, reactions, notifications and memberships are custom tables prefixed clubhaus_. Uninstall keeps everything unless you opt in to removal.

= Which hooks are there? =

Over 130 actions and filters, all prefixed clubhaus_. The reference is generated from the code and ships in the docs folder of the repository.

== Screenshots ==

1. The member feed with spaces, filters, reactions and threaded comments.
2. The course player with modules, lessons and progress.
3. The mobile community app at /app/.
4. Analytics in the admin: daily actives, retention cohorts and top members.
5. Events with RSVP and a calendar (Clubhaus Pro).
6. The spaces directory with sections, member counts and join requests.
7. The moderation inbox: reports, held content, join requests, announcements and the audit log.

== Changelog ==

= 1.0.0 =
* First public release. Everything listed below under 0.x is included.

= 0.2.0 =
* Posts: discussion, question and announcement types, accepted answers, rich composer with embeds, galleries, files, emoji, drafts, topics per space, bookmarks and feed filters.
* Discussion: three-level threads with collapse, comment sorting, images and quotes in comments, comment editing and permalinks, follow or mute a post, unread markers and counts, live counters.
* Search: full-text search across posts, comments, members, courses and events with filters, a search tab, header button and feed search box.
* Members: cover photos, pronouns, local time, skills, follow members, presence, badges (automatic and awarded), level-gated spaces and courses, points history, richer directory filters.
* Spaces: space pages with cover, rules, moderators and members, a spaces directory grouped by sections, private spaces with join requests, space roles, per-space notification modes, reordering; chat rooms in Pro.
* Growth: invite links with tier auto-assign, use limits and expiry, email invites, personal referral links with a leaderboard, email broadcasts to everyone, a tier or a space, public mode with slug URLs, Open Graph tags and RSS per space, and an editable day 1/3/7 welcome series.
* Admin and moderation: analytics with retention cohorts and CSV export, link and trust moderation rules, member notes, warnings, timed suspensions and bans with an audit log, bulk actions, scheduled posts, admin announcements and a needs-attention inbox.
* Real-time and polish: bundled web push with VAPID key management, typing indicators and read receipts in messages, presence, toasts, keyboard shortcuts, pull-to-refresh, clean course and event page templates, reduced-motion and lazy-loading pass.
* Design: shared design system (clubhaus-ui) with tokens, dark mode and components across every block and the app; generated initials avatars with Gravatar opt-in.
* Performance: indexes for analytics and moderation queries at scale; privacy exporter and eraser cover every table; feed API split into focused controllers.
* Updates for Pro come from hexcorp.io with a signed download link after a Lemon Squeezy license check.
* Block templates for course, lesson and event pages; keyboard shortcuts, toasts and pull-to-refresh in the app.

= 0.1.0 =
* Scaffold: module registry, migrations, REST API, admin shell.
* Member feed: posts, comments, reactions, polls, images, link previews, mentions, points and levels.
* Courses: modules and lessons, progress tracking, drip, course player and catalog blocks.
* Notifications: bell, per-type email preferences with instant or daily delivery, theme-overridable email templates, web push plumbing.
* Community app: /app/ shell with tab navigation, branding tokens, manifest, service worker with offline fallback, install prompt.
* Onboarding and profiles: landing and join blocks, onboarding questions, profiles with bio, links and photo, member directory, welcome post.
* Admin dashboard: overview metrics, members with grant/revoke/suspend and CSV import/export, spaces, tiers with access rules, moderation queue with keyword filter and new-member approval.
* Migration tools: Skool members CSV with level-to-points mapping and a course rebuild guide, Circle API import of members, spaces and posts, Stripe subscription attach (Pro), all with dry-run previews.
* Hardening: REST audit, per-address rate limits, caching, GDPR export and erasure, opt-in uninstall.
* Release: WordPress.org assets, Plugin Check clean, release zips, generated hooks reference; Pro licensing through Lemon Squeezy with weekly validation, graceful expiry and automatic updates.
* Access control: tiers, spaces, content gating.

== Upgrade Notice ==

= 1.0.0 =
First public release.

= 0.2.0 =
Community depth release: spaces, search, moderation tools, analytics, growth tools and real-time polish. Runs database migrations 4 to 11 on activation or first load.

= 0.1.0 =
First release.
