Case Study

Doolittle Lake Club – Private Members Portal

Project Goal: Build a secure, members-only community portal with role-based access, document management, calendar, weather, and newsletters.

Client

Doolittle Lake Club

Technologies

  • WordPress
  • Bootstrap 5
  • Webpack 5
  • Gutenberg Blocks
  • PHP
  • MySQL
  • SASS
  • FullCalendar
  • Google Calendar API
  • OpenWeatherMap API
  • Google Tag Manager
  • REST API
  • WP-Cron

Context

Doolittle Lake Club is a private lake community in Norfolk, Connecticut. The club needed a secure, members-only website where shareholders and members could access documents, view community calendars, browse member directories, manage inventory, and receive newsletters — all behind a login wall with role-based access control.

The Challenge

The site had to serve two distinct user groups — members and shareholders — with different access levels. Shareholders needed access to financial documents, property records, and parcel information that members shouldn’t see. The platform also needed real-time weather, a community calendar synced with Google Calendar, secure document downloads, a newsletter system with role-based targeting, and self-service profile management — all within a clean, modern interface that non-technical members could navigate easily.

What We Built

Member Access Control

  • Custom WordPress roles — Member and Shareholder — with multi-role support (users can hold both)
  • Page-level access restrictions: shareholder-only content hidden from regular members
  • Role-aware navigation: menu items automatically hidden based on user role
  • Custom login flow with branded login form, password reset, and post-login redirect
  • Admin dashboard locked for non-admin users, admin bar hidden

Document Management

  • Two document CPTs — Club Documents (accessible to all members) and Owner Documents (shareholders only)
  • Organized by category and year taxonomies with sidebar filtering
  • Secure file download system — base64-encoded paths, logged-in user verification, forced download with proper MIME types
  • File-type icons for PDF, Excel, Word, ZIP, and PowerPoint

Community Features

  • Member Directory — searchable accordion with contact details, role-aware display (admins see additional fields)
  • Shareholder Directory — property details, parcel IDs, map/lot numbers, stock information
  • Inventory Management — CPT for tracking community assets with categories, locations, and owner assignments
  • Local Listings — community marketplace/classifieds with category filtering and member submissions
  • Self-service profile editing — members update their contact info, shareholders manage property details

Calendar & Weather

  • Google Calendar integration via FullCalendar v6 — event modal display, ICS export, Google Calendar links
  • Real-time weather widget in the topbar — OpenWeatherMap API with custom SVG icons, temperature (°F/°C), humidity, wind speed and direction, 2-minute caching

Newsletter System

  • Custom newsletter CPT with role-based targeting — send to all, shareholders only, members only, or admins only
  • Batch email processing via WP-Cron (25 emails per batch with throttling)
  • Personalized emails with user name replacement and branded HTML template
  • Send logging with timestamps, duplicate prevention, and archived HTML

Custom Gutenberg Blocks

  • 15+ custom blocks: section, row, column, display, background, accordion (with FAQ schema), button (with secure download support), latest-posts (role-filtered), latest-documents, hero-slideshow, login-form, menu-selector
  • 5 metadata blocks for managing post, page, inventory, document, and listing meta from the editor

Results

The club now has a fully self-contained private portal where members and shareholders access everything they need — documents, directories, calendars, weather, newsletters, and community listings — all managed from WordPress with proper role-based security. The admin team independently manages content, sends targeted newsletters, and maintains member records without any external service dependencies.