Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Real Estate Laravel Laravel Package

liberu-real-estate/real-estate-laravel

A Laravel package for building real estate applications, with property listings, agents, locations, search, models, migrations, and admin-ready CRUD to help you launch a real estate portal quickly.

View on GitHub
Deep Wiki
Context7

Getting Started

This assessment is based on the v9.0.0 release notes and the package identity (liberusoftware/real-estate-laravel); verify specifics against the package README and the v8→v9 diff before adopting.

  1. Check compatibility first. v9.0.0 is a major release that includes an application dependency upgrade. Confirm the required PHP and Laravel versions in composer.json before running composer require liberusoftware/real-estate-laravel:^9.0.
  2. Review the changelog diff at v8.0.0...v9.0.0. Only two PRs are listed, but a major bump signals possible breaking changes in contracts, config keys, migrations, or published views — especially around localized templates and signing.
  3. Publish and inspect package assets:
    php artisan vendor:publish --provider="Liberu\RealEstate\RealEstateServiceProvider"
    php artisan migrate
    
    Read the published config/real-estate.php (or equivalent) before changing anything; note locale, storage disk, document template, and signing-related keys.
  4. Look first at: the package's document/template service bindings, signing workflow entry points, migrations, and any published views under resources/views/vendor/....
  5. First use case: generate a localized document from a template for a property/tenant, store it on a configured disk, and initiate a signing workflow. Build this as a small artisan command or feature test before wiring it into UI flows.

Implementation Patterns

  • Locale resolution at the boundary. Resolve locale from the authenticated user, tenant, or property jurisdiction in a middleware or form request, then pass it explicitly into template rendering. Avoid relying on app()->getLocale() deep inside package code, since queued jobs and console commands do not inherit the request locale.
  • Template rendering pipeline. Treat template selection → data binding → HTML render → PDF/storage → signing request as discrete steps. Render and assert HTML in tests before asserting PDF output; PDF assertions are brittle.
  • Signing workflow as a state machine. Wrap the package's signing transitions in your own application service or action class. Persist status and provider references in your models, and emit domain events (DocumentSigned, SigningDeclined) from your wrapper so business logic does not depend directly on package internals.
  • Queued document generation. Generate documents and dispatch signing requests via jobs. Pass locale, template identifier, and subject IDs as scalar payloads; reload models inside the job.
  • Storage abstraction. Store generated documents on a configured disk (S3 in production, local in tests) and keep signed-URL generation in your own layer so expiry and access policy are under application control.
  • Multi-tenant isolation. Scope templates, documents, and signing requests by tenant/property. Add policies around viewing and downloading signed documents; do not rely solely on package routes.
  • Testing. Use package factories where available; otherwise create your own test fixtures. Fake the signing provider behind an interface and use Http::fake() for outbound calls. Include a test that renders the same template in at least two locales.
  • Upgrade workflow. Pin ^9.0, run the full suite, and diff published config/views against the package's defaults after upgrading. Keep local overrides minimal so future major upgrades remain tractable.

Gotchas and Tips

  • Major version bump with sparse notes. The release notes mention only localized templates/signing and dependency upgrades, but a v9 bump commonly includes breaking changes. Inspect the actual diff, upgrade guide, and CHANGELOG.md; do not assume a drop-in upgrade from v8.
  • Dependency upgrade fallout. The application dependency upgrade may raise minimum PHP/Laravel versions or update PDF, HTTP, or signing SDK dependencies. Run composer why-not and check transitive constraints if installation conflicts.
  • Locale fallback and formatting. Verify fallback behavior when a translation is missing. Date, number, and currency formatting inside templates may follow locale rules; assert output for each supported locale rather than assuming.
  • Queued jobs lose request context. Explicitly pass locale and tenant identifiers into jobs. This is the most common cause of "works in the browser, wrong language in the PDF" bugs.
  • Config and view caching. After publishing or overriding config/views, run php artisan config:clear and php artisan view:clear. In production, re-run config:cache and restart queue workers after deploy.
  • Signed URL and token expiry. Signing links and document download URLs typically expire. Make expiry configurable and surface a clear user-facing error on expiry rather than a generic 403.
  • Audit trail. Persist who viewed, downloaded, sent, and signed a document, with timestamps and IP/user agent where appropriate. Signing workflows are usually compliance-sensitive.
  • Idempotency. Guard against duplicate signing requests from retries or double form submissions using unique constraints or idempotency keys.
  • Debugging tip. Render templates to HTML and dump/log the output before PDF conversion; most template failures are data-shape or translation issues, not PDF engine issues.
  • Extension points. Prefer publishing config and views, binding your own implementations to package interfaces, and listening to package events over editing vendor code. Keep a short list of overridden bindings to re-check on each major release.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names