Skip to Content

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:generate

Environment 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:generate

Database (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 mode

AWS 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-misc

Firebase

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 auth

HubSpot

HUBSPOT_API_KEY= # Access token for CRM API

External 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 host

Email

MAILGUN_DOMAIN= MAILGUN_SECRET= MAILGUN_ENDPOINT=api.mailgun.net

Monitoring

SENTRY_LARAVEL_DSN= # Sentry error tracking

Running the Dev Server

The simplest approach uses the Composer dev script, which runs three processes in parallel:

composer dev

This executes:

  1. php artisan serve --port=8001 — PHP development server
  2. npm run dev — Vite dev server with HMR on port 5173
  3. tail -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 dev

Vite Configuration

Vite processes these entry points (see vite.config.js):

  • resources/sass/app.scss — Main SCSS stylesheet
  • resources/css/app.css — Additional CSS
  • resources/css/add-house-page.css — House creation page styles
  • resources/js/app.js — Main JavaScript bundle
  • resources/js/landlord-modal.js — Landlord-specific modals
  • resources/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