Setup
Prerequisites
- PHP 8.2+ with extensions:
pdo_mysql,gd,zip,intl,bcmath,opcache - Composer 2
- Node.js 18+ and npm
- MySQL 8 (shared database with API v1/v2)
- Access to AWS S3 buckets (for file storage)
- Firebase credentials (for chat/realtime features)
Installation
# Clone the repo
git clone <repo-url> && cd "Housr Portal"
# Install PHP dependencies
composer install
# Install Node dependencies
npm install
# Environment setup
cp .env.example .env
php artisan key:generateEnvironment Variables
Core Laravel
APP_NAME="Housr Portal"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8001
APP_KEY= # Generated by php artisan key:generateDatabase (shared with API v1/v2)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=housr
DB_USERNAME=
DB_PASSWORD=Region Mode
USA=false # true for US mode, false for UK mode
DEMO=false # true for demo/staging modeAWS S3
Three S3 disk configurations are used (see config/filesystems.php):
# Primary S3 bucket
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=
# Public images bucket (housr-public-images)
AWS_PUBLIC_IMAGES_ACCESS_KEY_ID=
AWS_PUBLIC_IMAGES_SECRET_ACCESS_KEY=
AWS_PUBLIC_IMAGES_DEFAULT_REGION=us-east-2
AWS_PUBLIC_IMAGES_BUCKET=housr-public-images
# Public misc bucket (housr-public-misc)
AWS_PUBLIC_MISC_BUCKET=housr-public-miscFirebase
FIREBASE_DATABASE_URL= # Realtime Database URL
FIREBASE_DATABASE_API_KEY= # API key
FIREBASE_CREDENTIALS= # JSON service account credentials (as a string)Payments
# Stripe (UK)
STRIPE_SECRET_KEY=
# Finix (US)
FINIX_API_URL=
FINIX_USERNAME=
FINIX_PASSWORD=
FINIX_MERCHANT_ID=DocuSign
DOCUSIGN_URL=
DOCUSIGN_API_URL=
DOCUSIGN_INTEGRATION_KEY=
DOCUSIGN_USER_ID=
DOCUSIGN_ACCOUNT_ID=
DOCUSIGN_PRIVATE_KEY= # RSA private key for JWT authHubSpot
HUBSPOT_API_KEY= # Access token for CRM APIExternal APIs
API_URL= # Housr API v2 base URL
HUDDLE_API_URL= # Huddle API URL
HUDDLE_PUBLIC_API_KEY=
HUDDLE_SECRET_API_KEY=
MAPBOX_ACCESS_TOKEN= # Mapbox for maps
AI_AGENT_HOST= # AI agent service hostMAILGUN_DOMAIN=
MAILGUN_SECRET=
MAILGUN_ENDPOINT=api.mailgun.netMonitoring
SENTRY_LARAVEL_DSN= # Sentry error trackingRunning the Dev Server
The simplest approach uses the Composer dev script, which runs three processes in parallel:
composer devThis executes:
php artisan serve --port=8001— PHP development servernpm run dev— Vite dev server with HMR on port 5173tail -f storage/logs/laravel.log— Live log output
Alternatively, run each process in separate terminals:
# Terminal 1
php artisan serve --port=8001
# Terminal 2
npm run devVite Configuration
Vite processes these entry points (see vite.config.js):
resources/sass/app.scss— Main SCSS stylesheetresources/css/app.css— Additional CSSresources/css/add-house-page.css— House creation page stylesresources/js/app.js— Main JavaScript bundleresources/js/landlord-modal.js— Landlord-specific modalsresources/js/add-house-page.js— House creation page JS- Various legacy asset JS files
Static assets from resources/assets/ are copied to the build output via vite-plugin-static-copy.
Blade template changes trigger full-reload via a custom Vite plugin.
Last updated on