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:
- Website: http://localhost:8000
- Nova Admin: http://localhost:8000/admin
- Default Credentials: [email protected] / password
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.