Skip to main content

Lancaster Archery Academy

Comprehensive event management and registration system for Lancaster Archery Academy built with Laravel 8 and Laravel Nova 4.

Overview

The Lancaster Archery Academy application is a sophisticated Laravel-based system managing the complete lifecycle of archery classes, tournaments, and events. It features real-time seat availability, subscription billing, tournament management, digital waivers, and comprehensive payment processing.

Live Site: https://lancasterarcheryacademy.com
Platform: Laravel 8.40+ (PHP 8.2+)
Admin Panel: Laravel Nova 4.0+
Frontend: Inertia.js + Vue 3.2.0
Database: MySQL/MariaDB

Key Features

Event Management System

Event Types:

  • Classes: Archery instruction (beginner to advanced)
  • Tournaments: Competitive events with divisions and distances
  • Parties: Private events and group bookings
  • User-Defined Sessions: Custom scheduling for special events

Event Configuration:

  • Event categories, levels, and types taxonomy
  • Session scheduling with recurring session support
  • Timeslot management for flexible scheduling
  • Volume pricing (bulk discounts)
  • Early bird pricing windows
  • Location-based event management
  • Event-specific waivers
  • Merchandise sales integration
  • Milestone tracking

Registration & Reservation System

Core Features:

  • Real-time seat availability checking with polling
  • Session reservations with conflict detection
  • Division-based registration (tournaments)
  • Team registrations (individual/mixed teams)
  • Waitlist management with automatic notifications
  • Attendance tracking with attendance codes
  • Practice pass system
  • Reservation reassignment capabilities
  • "Stays on line" for sequential sessions

User Experience:

  • Calendar-based date selection (v-calendar)
  • Dynamic pricing calculations
  • Progressive form validation
  • Toast notifications for feedback
  • Modal dialogs for complex workflows

Subscription Management

Billing Features:

  • Recurring billing for ongoing programs
  • Enrollment fees (one-time, upfront)
  • Subscription transfers between accounts
  • Automatic invoice generation
  • Payment retry logic (configurable attempts)
  • Cancellation options:
    • Immediate cancellation
    • End of billing period
    • Transfer to another account
  • Session start date selection
  • Timeslot assignment for subscriptions

Payment Processing

Authorize.Net Integration:

  • Customer Information Manager (CIM) for saved cards
  • Payment profile management
  • Transaction processing with audit trail
  • Refund capabilities
  • Recurring billing automation
  • Cash payment tracking
  • Volume discounts and coupons

Coupon System:

  • Complex discount rules
  • Usage tracking and limits
  • Import/export capabilities
  • Stackable discounts

Account Management

Account Features:

  • Primary account with sub-accounts (family members)
  • JOAD (Junior Olympic Archery Development) membership tracking
  • USA Archery number storage
  • Waiver management via Smartwaiver
  • Milestone achievement tracking
  • Equipment preferences (BYOB - Bring Your Own Bow)
  • SMS consent tracking
  • Newsletter subscription management

CRM Functionality:

  • Account notes for staff communication
  • Custom fields for customer data
  • Family relationships
  • Payment method storage
  • Order history and analytics

Administrative Features

Laravel Nova Admin:

  • 20+ custom Nova resources
  • 40+ custom Nova actions for workflow automation
  • Event insights and reporting dashboards
  • Volume discount management
  • Reservation refund grid interface
  • Account preview modal
  • Session generation tools
  • IANSEO tournament export (archery scoring software)
  • Coupon import/export
  • Comprehensive audit logging (owen-it/laravel-auditing)

Architecture Highlights

Database Structure

  • 40+ tables covering all aspects of operations
  • 50+ models with comprehensive relationships
  • 37+ policies for fine-grained authorization
  • Global scopes for automatic access control
  • 5 observers for model lifecycle events
  • JSON columns for flexible data (options, milestones)

Testing

  • 100+ tests with Pest 4.x
  • Unit tests (enums, casts, helpers, models)
  • Feature tests (HTTP, models, authentication)
  • Browser tests with Playwright
  • PHPStan static analysis (level 5)
  • Laravel Pint (PSR-12 code style)

Third-Party Integrations

Payment Gateway:

  • Authorize.Net SDK (v2.0) with CIM
  • Saved payment methods
  • Subscription billing
  • Refund processing

Marketing:

  • Klaviyo (custom integration)
  • Newsletter management
  • Order tracking events
  • Customer profile syncing

Digital Waivers:

  • Smartwaiver PHP SDK
  • Template-based generation
  • Adult/minor handling
  • PDF storage
  • Auto-fill participant data

Email:

  • Mailgun for transactional emails
  • 16 mailable classes
  • Order confirmations
  • Session reminders
  • Team invitations
  • Waitlist notifications

Data Export:

  • Maatwebsite/Laravel-Excel (v3.1)
  • IANSEO tournament exports
  • Account/reservation exports
  • Custom reporting

Technology Stack

Backend:

  • Laravel 8.40+
  • Laravel Nova 4.0+
  • Laravel Sanctum (API tokens)
  • Laravel Breeze (authentication)
  • PHP 8.2+ (strict requirement)

Frontend:

  • Inertia.js 0.8+
  • Vue 3.2.0 (Composition + Options API)
  • Tailwind CSS 2.0+
  • Headless UI (accessible components)
  • Heroicons
  • v-calendar (date selection)
  • Laravel Mix 6.0+

Quality Tools:

  • Pest 4.x (testing)
  • Playwright (browser testing)
  • PHPStan (static analysis)
  • Laravel Pint (code style)
  • Rector (refactoring)

Quick Start

# Repository location
cd Z:\Repos\lancasterarcheryacademy.com

# Install dependencies
composer install && npm install

# Environment configuration
cp .env.example .env
php artisan key:generate

# Database setup
# Configure DB_* variables in .env
php artisan migrate --seed

# Build assets
npm run dev # Development with hot reload
npm run prod # Production build

# Start development server
php artisan serve
php artisan queue:work # In separate terminal

Access Points:

Key Routes

Public:

  • / - Homepage
  • /events - Event browse/search
  • /events/{slug} - Event details with registration
  • /cart - Shopping cart
  • /checkout - Checkout flow
  • /account - User account management

Admin:

  • /admin - Laravel Nova dashboard
  • /admin/resources/* - Resource management
  • /admin/dashboards/* - Custom dashboards

Environment Variables

Required Configuration:

# Application
APP_URL=https://lancasterarcheryacademy.com
APP_ENV=production

# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=laa_production

# Cache & Sessions
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=database

# Email
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=lancasterarcheryacademy.com
MAILGUN_SECRET=key-xxxxx

# Authorize.Net
AUTHNET_LOGIN_ID=xxxxx
AUTHNET_TRANSACTION_KEY=xxxxx
AUTHNET_SANDBOX=false

# Configured in Nova admin panel:
# - Klaviyo API keys
# - Smartwaiver API keys
# - reCAPTCHA keys

Repository Location

Git Repository: Z:/Repos/lancasterarcheryacademy.com

For more detailed technical information, refer to the application codebase and inline documentation.