dev immobile
This commit is contained in:
parent
18ca2ce858
commit
e198d842ce
18 changed files with 5931 additions and 3 deletions
25
.codex/config.toml
Normal file
25
.codex/config.toml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
[mcp_servers.context7]
|
||||||
|
args = [
|
||||||
|
"-y",
|
||||||
|
"@upstash/context7-mcp",
|
||||||
|
"--api-key",
|
||||||
|
"ctx7sk-119cd4ab-8983-4229-8702-e84c59c34fc9",
|
||||||
|
]
|
||||||
|
command = "npx"
|
||||||
|
|
||||||
|
[mcp_servers.laravel-boost]
|
||||||
|
args = [
|
||||||
|
"artisan",
|
||||||
|
"boost:mcp",
|
||||||
|
]
|
||||||
|
command = "php"
|
||||||
|
|
||||||
|
[mcp_servers.playwright]
|
||||||
|
url = "https://playwright.test/mcp"
|
||||||
|
|
||||||
|
[mcp_servers.sequential-thinking]
|
||||||
|
args = [
|
||||||
|
"-y",
|
||||||
|
"@modelcontextprotocol/server-sequential-thinking",
|
||||||
|
]
|
||||||
|
command = "npx"
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -56,3 +56,4 @@ Icon
|
||||||
_static/
|
_static/
|
||||||
_work/
|
_work/
|
||||||
_storage/
|
_storage/
|
||||||
|
dev/immobilien 07-05-2026/AZIZI SharePoint
|
||||||
|
|
@ -22,6 +22,9 @@
|
||||||
"-y",
|
"-y",
|
||||||
"@modelcontextprotocol/server-sequential-thinking"
|
"@modelcontextprotocol/server-sequential-thinking"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"playwright": {
|
||||||
|
"url": "https://playwright.test/mcp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
672
AGENTS.md
Normal file
672
AGENTS.md
Normal file
|
|
@ -0,0 +1,672 @@
|
||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is a multi-domain Laravel application with Fortify/Sanctum authentication. The application supports 5 different domains with distinct themes and configurations:
|
||||||
|
|
||||||
|
- **Admin Portal**: portal.b2in.test - Backend admin user interface (uses Livewire/Flux UI)
|
||||||
|
- **B2in Main**: b2in.test - Frontend main page (uses TailwindCSS + Tailwind UI/Plus)
|
||||||
|
- **B2A Secondary**: b2a.test - Frontend secondary page (uses TailwindCSS + Tailwind UI/Plus)
|
||||||
|
- **Stileigentum**: stileigentum.test - Frontend landing page (uses TailwindCSS + Tailwind UI/Plus)
|
||||||
|
- **Style2own**: style2own.test - Frontend landing page (uses TailwindCSS + Tailwind UI/Plus)
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
|
||||||
|
This project runs inside a **Dev Container**. Commands are executed directly with `php`, `composer`, and `npm` — **without** the `vendor/bin/sail` prefix. All `sail`-prefixed commands in docs or rules should be translated to their direct equivalents:
|
||||||
|
|
||||||
|
| Sail | Dev Container |
|
||||||
|
|------|---------------|
|
||||||
|
| `vendor/bin/sail artisan ...` | `php artisan ...` |
|
||||||
|
| `vendor/bin/sail composer ...` | `composer ...` |
|
||||||
|
| `vendor/bin/sail npm ...` | `npm ...` |
|
||||||
|
| `vendor/bin/sail php ...` | `php ...` |
|
||||||
|
| `vendor/bin/sail bin pint` | `./vendor/bin/pint` |
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Tests laufen auf **SQLite in-memory** — die MySQL-Datenbank wird dabei **nie angefasst**.
|
||||||
|
|
||||||
|
- Der Test-Bootstrap (`tests/bootstrap.php`) löscht automatisch den Config-Cache vor jedem Test-Run, damit die SQLite-Konfiguration aus `phpunit.xml` greift.
|
||||||
|
- Nach dem Test-Run ist der Config-Cache weg. Bei Bedarf neu generieren: `php artisan config:cache`
|
||||||
|
- Zum Testen: `php artisan test --compact` (ganzer Suite) oder `php artisan test --compact tests/Feature/FooTest.php` (einzelne Datei)
|
||||||
|
|
||||||
|
## Development Commands
|
||||||
|
|
||||||
|
### Setup & Installation
|
||||||
|
```bash
|
||||||
|
composer install
|
||||||
|
npm install
|
||||||
|
php artisan key:generate
|
||||||
|
php artisan migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development Server
|
||||||
|
```bash
|
||||||
|
# Full development environment (server, queue, logs, vite)
|
||||||
|
composer run dev
|
||||||
|
|
||||||
|
# Individual components
|
||||||
|
php artisan serve
|
||||||
|
php artisan queue:listen --tries=1
|
||||||
|
php artisan pail --timeout=0
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Asset Compilation
|
||||||
|
```bash
|
||||||
|
# Development
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Production builds
|
||||||
|
npm run build # Main build
|
||||||
|
npm run build:admin # Admin portal assets
|
||||||
|
npm run build:web # Web assets
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
```bash
|
||||||
|
composer run test
|
||||||
|
# Or directly:
|
||||||
|
php artisan test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
```bash
|
||||||
|
./vendor/bin/pint # Laravel Pint (PHP CS Fixer)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Domain Management
|
||||||
|
```bash
|
||||||
|
php artisan domains:generate-favicons # Generate placeholder favicons for all domains
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Multi-Domain System
|
||||||
|
The application uses a sophisticated domain routing system:
|
||||||
|
|
||||||
|
- Domain configuration is managed via `.env` variables (see `DOMAINS-CONFIG.md`)
|
||||||
|
- Each domain can have custom themes, colors, and CSS
|
||||||
|
- Domain simulation available for development (`DEV_SIMULATE_DOMAIN=true`)
|
||||||
|
- Routes are organized by domain type (`routes/domains.php`, `routes/admin.php`, `routes/web.php`)
|
||||||
|
|
||||||
|
### Frontend Architecture
|
||||||
|
- **Vite**: Multiple configurations for different domains (`vite.config.js`, `vite.portal.config.js`, `vite.web.config.js`)
|
||||||
|
- **TailwindCSS**: Version 4.x with domain-specific configurations (`tailwind.config.js`, `tailwind.portal.config.js`, `tailwind.web.config.js`)
|
||||||
|
- **Backend (Portal)**: Livewire with Flux UI components and Volt for reactive components
|
||||||
|
- **Frontend Sites**: Livewire with TailwindCSS + Tailwind UI/Plus components (no Flux UI)
|
||||||
|
- **Alpine.js**: For lightweight frontend interactions
|
||||||
|
|
||||||
|
### Backend Architecture
|
||||||
|
- **Laravel Framework**: Version 12.x
|
||||||
|
- **Authentication**: Laravel Fortify + Sanctum for API authentication
|
||||||
|
- **Permissions**: Spatie Laravel Permission package
|
||||||
|
- **Database**: Configured for multiple environments with migrations in `database/migrations/`
|
||||||
|
- **Providers**: Custom providers for theme handling (`app/Providers/ThemeServiceProvider.php`)
|
||||||
|
|
||||||
|
### Key Directories
|
||||||
|
- `app/Livewire/`: Livewire components and actions
|
||||||
|
- `resources/css/web/`: Domain-specific CSS themes
|
||||||
|
- `resources/views/`: Blade templates with Flux components
|
||||||
|
- `routes/`: Domain-separated route files
|
||||||
|
- `config/`: Laravel configuration files
|
||||||
|
|
||||||
|
### Development Tools
|
||||||
|
- **Laravel Sail**: Docker development environment
|
||||||
|
- **Laravel Pail**: Real-time log monitoring
|
||||||
|
- **Laravel Debugbar**: Development debugging (barryvdh/laravel-debugbar)
|
||||||
|
- **PestPHP**: Testing framework
|
||||||
|
|
||||||
|
## Domain Configuration
|
||||||
|
|
||||||
|
Domains are configured in `config/domains.php` with environment variables:
|
||||||
|
- `DOMAIN_PORTAL`, `DOMAIN_B2IN`, `DOMAIN_B2A`, `DOMAIN_STILEIGENTUM`, `DOMAIN_STYLE2OWN`
|
||||||
|
- Each domain has custom color schemes and font families defined in the config
|
||||||
|
- Development simulation via `DEV_SIMULATE_DOMAIN` and `DEV_SIMULATED_DOMAIN`
|
||||||
|
|
||||||
|
Domain-specific configurations include:
|
||||||
|
- **portal.b2in.test**: Admin backend with Flux UI theme
|
||||||
|
- **b2in.test**: Anthracite/Dynamic Blue color scheme, Inter/IBM Plex Sans fonts
|
||||||
|
- **b2a.test**: Azur Blue/Liberty Red color scheme, Inter/Merriweather fonts
|
||||||
|
- **stileigentum.test**: Style Blue/Style Sun color scheme, Inter/Ephesis fonts
|
||||||
|
- **style2own.test**: Imperial Blue/Sand Gold color scheme, Inter/EB Garamond fonts
|
||||||
|
|
||||||
|
For local development, add domains to your hosts file:
|
||||||
|
```
|
||||||
|
127.0.0.1 portal.b2in.test
|
||||||
|
127.0.0.1 b2in.test
|
||||||
|
127.0.0.1 b2a.test
|
||||||
|
127.0.0.1 stileigentum.test
|
||||||
|
127.0.0.1 style2own.test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Files
|
||||||
|
- `DOMAINS-CONFIG.md`: Detailed domain configuration guide
|
||||||
|
- `FORTIFY-SANCTUM-SETUP.md`: Authentication setup guide
|
||||||
|
- `composer.json`: Contains useful dev scripts (`composer run dev`, `composer run test`)
|
||||||
|
- Multiple Vite/Tailwind configs for different build targets
|
||||||
|
|
||||||
|
===
|
||||||
|
|
||||||
|
<laravel-boost-guidelines>
|
||||||
|
=== foundation rules ===
|
||||||
|
|
||||||
|
# Laravel Boost Guidelines
|
||||||
|
|
||||||
|
The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to enhance the user's satisfaction building Laravel applications.
|
||||||
|
|
||||||
|
## Foundational Context
|
||||||
|
This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions.
|
||||||
|
|
||||||
|
- php - 8.4.18
|
||||||
|
- laravel/fortify (FORTIFY) - v1
|
||||||
|
- laravel/framework (LARAVEL) - v12
|
||||||
|
- laravel/prompts (PROMPTS) - v0
|
||||||
|
- laravel/sanctum (SANCTUM) - v4
|
||||||
|
- livewire/flux (FLUXUI_FREE) - v2
|
||||||
|
- livewire/flux-pro (FLUXUI_PRO) - v2
|
||||||
|
- livewire/livewire (LIVEWIRE) - v4
|
||||||
|
- livewire/volt (VOLT) - v1
|
||||||
|
- laravel/dusk (DUSK) - v8
|
||||||
|
- laravel/mcp (MCP) - v0
|
||||||
|
- laravel/pint (PINT) - v1
|
||||||
|
- laravel/sail (SAIL) - v1
|
||||||
|
- pestphp/pest (PEST) - v3
|
||||||
|
- phpunit/phpunit (PHPUNIT) - v11
|
||||||
|
- alpinejs (ALPINEJS) - v3
|
||||||
|
- tailwindcss (TAILWINDCSS) - v4
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
- You must follow all existing code conventions used in this application. When creating or editing a file, check sibling files for the correct structure, approach, and naming.
|
||||||
|
- Use descriptive names for variables and methods. For example, `isRegisteredForDiscounts`, not `discount()`.
|
||||||
|
- Check for existing components to reuse before writing a new one.
|
||||||
|
|
||||||
|
## Verification Scripts
|
||||||
|
- Do not create verification scripts or tinker when tests cover that functionality and prove it works. Unit and feature tests are more important.
|
||||||
|
|
||||||
|
## Application Structure & Architecture
|
||||||
|
- Stick to existing directory structure; don't create new base folders without approval.
|
||||||
|
- Do not change the application's dependencies without approval.
|
||||||
|
|
||||||
|
## Frontend Bundling
|
||||||
|
- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail npm run build`, `vendor/bin/sail npm run dev`, or `vendor/bin/sail composer run dev`. Ask them.
|
||||||
|
|
||||||
|
## Replies
|
||||||
|
- Be concise in your explanations - focus on what's important rather than explaining obvious details.
|
||||||
|
|
||||||
|
## Documentation Files
|
||||||
|
- You must only create documentation files if explicitly requested by the user.
|
||||||
|
|
||||||
|
=== boost rules ===
|
||||||
|
|
||||||
|
## Laravel Boost
|
||||||
|
- Laravel Boost is an MCP server that comes with powerful tools designed specifically for this application. Use them.
|
||||||
|
|
||||||
|
## Artisan
|
||||||
|
- Use the `list-artisan-commands` tool when you need to call an Artisan command to double-check the available parameters.
|
||||||
|
|
||||||
|
## URLs
|
||||||
|
- Whenever you share a project URL with the user, you should use the `get-absolute-url` tool to ensure you're using the correct scheme, domain/IP, and port.
|
||||||
|
|
||||||
|
## Tinker / Debugging
|
||||||
|
- You should use the `tinker` tool when you need to execute PHP to debug code or query Eloquent models directly.
|
||||||
|
- Use the `database-query` tool when you only need to read from the database.
|
||||||
|
|
||||||
|
## Reading Browser Logs With the `browser-logs` Tool
|
||||||
|
- You can read browser logs, errors, and exceptions using the `browser-logs` tool from Boost.
|
||||||
|
- Only recent browser logs will be useful - ignore old logs.
|
||||||
|
|
||||||
|
## Searching Documentation (Critically Important)
|
||||||
|
- Boost comes with a powerful `search-docs` tool you should use before any other approaches when dealing with Laravel or Laravel ecosystem packages. This tool automatically passes a list of installed packages and their versions to the remote Boost API, so it returns only version-specific documentation for the user's circumstance. You should pass an array of packages to filter on if you know you need docs for particular packages.
|
||||||
|
- The `search-docs` tool is perfect for all Laravel-related packages, including Laravel, Inertia, Livewire, Filament, Tailwind, Pest, Nova, Nightwatch, etc.
|
||||||
|
- You must use this tool to search for Laravel ecosystem documentation before falling back to other approaches.
|
||||||
|
- Search the documentation before making code changes to ensure we are taking the correct approach.
|
||||||
|
- Use multiple, broad, simple, topic-based queries to start. For example: `['rate limiting', 'routing rate limiting', 'routing']`.
|
||||||
|
- Do not add package names to queries; package information is already shared. For example, use `test resource table`, not `filament 4 test resource table`.
|
||||||
|
|
||||||
|
### Available Search Syntax
|
||||||
|
- You can and should pass multiple queries at once. The most relevant results will be returned first.
|
||||||
|
|
||||||
|
1. Simple Word Searches with auto-stemming - query=authentication - finds 'authenticate' and 'auth'.
|
||||||
|
2. Multiple Words (AND Logic) - query=rate limit - finds knowledge containing both "rate" AND "limit".
|
||||||
|
3. Quoted Phrases (Exact Position) - query="infinite scroll" - words must be adjacent and in that order.
|
||||||
|
4. Mixed Queries - query=middleware "rate limit" - "middleware" AND exact phrase "rate limit".
|
||||||
|
5. Multiple Queries - queries=["authentication", "middleware"] - ANY of these terms.
|
||||||
|
|
||||||
|
=== php rules ===
|
||||||
|
|
||||||
|
## PHP
|
||||||
|
|
||||||
|
- Always use curly braces for control structures, even if it has one line.
|
||||||
|
|
||||||
|
### Constructors
|
||||||
|
- Use PHP 8 constructor property promotion in `__construct()`.
|
||||||
|
- <code-snippet>public function __construct(public GitHub $github) { }</code-snippet>
|
||||||
|
- Do not allow empty `__construct()` methods with zero parameters unless the constructor is private.
|
||||||
|
|
||||||
|
### Type Declarations
|
||||||
|
- Always use explicit return type declarations for methods and functions.
|
||||||
|
- Use appropriate PHP type hints for method parameters.
|
||||||
|
|
||||||
|
<code-snippet name="Explicit Return Types and Method Params" lang="php">
|
||||||
|
protected function isAccessible(User $user, ?string $path = null): bool
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
## Comments
|
||||||
|
- Prefer PHPDoc blocks over inline comments. Never use comments within the code itself unless there is something very complex going on.
|
||||||
|
|
||||||
|
## PHPDoc Blocks
|
||||||
|
- Add useful array shape type definitions for arrays when appropriate.
|
||||||
|
|
||||||
|
## Enums
|
||||||
|
- Typically, keys in an Enum should be TitleCase. For example: `FavoritePerson`, `BestLake`, `Monthly`.
|
||||||
|
|
||||||
|
=== sail rules ===
|
||||||
|
|
||||||
|
## Laravel Sail
|
||||||
|
|
||||||
|
- This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail.
|
||||||
|
- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`.
|
||||||
|
- Open the application in the browser by running `vendor/bin/sail open`.
|
||||||
|
- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples:
|
||||||
|
- Run Artisan Commands: `vendor/bin/sail artisan migrate`
|
||||||
|
- Install Composer packages: `vendor/bin/sail composer install`
|
||||||
|
- Execute Node commands: `vendor/bin/sail npm run dev`
|
||||||
|
- Execute PHP scripts: `vendor/bin/sail php [script]`
|
||||||
|
- View all available Sail commands by running `vendor/bin/sail` without arguments.
|
||||||
|
|
||||||
|
=== tests rules ===
|
||||||
|
|
||||||
|
## Test Enforcement
|
||||||
|
|
||||||
|
- Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass.
|
||||||
|
- Run the minimum number of tests needed to ensure code quality and speed. Use `vendor/bin/sail artisan test --compact` with a specific filename or filter.
|
||||||
|
|
||||||
|
=== laravel/core rules ===
|
||||||
|
|
||||||
|
## Do Things the Laravel Way
|
||||||
|
|
||||||
|
- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool.
|
||||||
|
- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`.
|
||||||
|
- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior.
|
||||||
|
|
||||||
|
### Database
|
||||||
|
- Always use proper Eloquent relationship methods with return type hints. Prefer relationship methods over raw queries or manual joins.
|
||||||
|
- Use Eloquent models and relationships before suggesting raw database queries.
|
||||||
|
- Avoid `DB::`; prefer `Model::query()`. Generate code that leverages Laravel's ORM capabilities rather than bypassing them.
|
||||||
|
- Generate code that prevents N+1 query problems by using eager loading.
|
||||||
|
- Use Laravel's query builder for very complex database operations.
|
||||||
|
|
||||||
|
### Model Creation
|
||||||
|
- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`.
|
||||||
|
|
||||||
|
### APIs & Eloquent Resources
|
||||||
|
- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention.
|
||||||
|
|
||||||
|
### Controllers & Validation
|
||||||
|
- Always create Form Request classes for validation rather than inline validation in controllers. Include both validation rules and custom error messages.
|
||||||
|
- Check sibling Form Requests to see if the application uses array or string based validation rules.
|
||||||
|
|
||||||
|
### Queues
|
||||||
|
- Use queued jobs for time-consuming operations with the `ShouldQueue` interface.
|
||||||
|
|
||||||
|
### Authentication & Authorization
|
||||||
|
- Use Laravel's built-in authentication and authorization features (gates, policies, Sanctum, etc.).
|
||||||
|
|
||||||
|
### URL Generation
|
||||||
|
- When generating links to other pages, prefer named routes and the `route()` function.
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
- Use environment variables only in configuration files - never use the `env()` function directly outside of config files. Always use `config('app.name')`, not `env('APP_NAME')`.
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
- When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model.
|
||||||
|
- Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`.
|
||||||
|
- When creating tests, make use of `vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests.
|
||||||
|
|
||||||
|
### Vite Error
|
||||||
|
- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail npm run build` or ask the user to run `vendor/bin/sail npm run dev` or `vendor/bin/sail composer run dev`.
|
||||||
|
|
||||||
|
=== laravel/v12 rules ===
|
||||||
|
|
||||||
|
## Laravel 12
|
||||||
|
|
||||||
|
- Use the `search-docs` tool to get version-specific documentation.
|
||||||
|
- Since Laravel 11, Laravel has a new streamlined file structure which this project uses.
|
||||||
|
|
||||||
|
### Laravel 12 Structure
|
||||||
|
- In Laravel 12, middleware are no longer registered in `app/Http/Kernel.php`.
|
||||||
|
- Middleware are configured declaratively in `bootstrap/app.php` using `Application::configure()->withMiddleware()`.
|
||||||
|
- `bootstrap/app.php` is the file to register middleware, exceptions, and routing files.
|
||||||
|
- `bootstrap/providers.php` contains application specific service providers.
|
||||||
|
- The `app\Console\Kernel.php` file no longer exists; use `bootstrap/app.php` or `routes/console.php` for console configuration.
|
||||||
|
- Console commands in `app/Console/Commands/` are automatically available and do not require manual registration.
|
||||||
|
|
||||||
|
### Database
|
||||||
|
- When modifying a column, the migration must include all of the attributes that were previously defined on the column. Otherwise, they will be dropped and lost.
|
||||||
|
- Laravel 12 allows limiting eagerly loaded records natively, without external packages: `$query->latest()->limit(10);`.
|
||||||
|
|
||||||
|
### Models
|
||||||
|
- Casts can and likely should be set in a `casts()` method on a model rather than the `$casts` property. Follow existing conventions from other models.
|
||||||
|
|
||||||
|
=== fluxui-pro/core rules ===
|
||||||
|
|
||||||
|
## Flux UI Pro
|
||||||
|
|
||||||
|
- This project is using the Pro version of Flux UI. It has full access to the free components and variants, as well as full access to the Pro components and variants.
|
||||||
|
- Flux UI is a component library for Livewire. Flux is a robust, hand-crafted UI component library for your Livewire applications. It's built using Tailwind CSS and provides a set of components that are easy to use and customize.
|
||||||
|
- You should use Flux UI components when available.
|
||||||
|
- Fallback to standard Blade components if Flux is unavailable.
|
||||||
|
- If available, use the `search-docs` tool to get the exact documentation and code snippets available for this project.
|
||||||
|
- Flux UI components look like this:
|
||||||
|
|
||||||
|
<code-snippet name="Flux UI Component Example" lang="blade">
|
||||||
|
<flux:button variant="primary"/>
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Available Components
|
||||||
|
This is correct as of Boost installation, but there may be additional components within the codebase.
|
||||||
|
|
||||||
|
<available-flux-components>
|
||||||
|
accordion, autocomplete, avatar, badge, brand, breadcrumbs, button, calendar, callout, card, chart, checkbox, command, composer, context, date-picker, dropdown, editor, field, file-upload, heading, icon, input, kanban, modal, navbar, otp-input, pagination, pillbox, popover, profile, radio, select, separator, skeleton, slider, switch, table, tabs, text, textarea, time-picker, toast, tooltip
|
||||||
|
</available-flux-components>
|
||||||
|
|
||||||
|
=== livewire/core rules ===
|
||||||
|
|
||||||
|
## Livewire
|
||||||
|
|
||||||
|
- Use the `search-docs` tool to find exact version-specific documentation for how to write Livewire and Livewire tests.
|
||||||
|
- Use the `vendor/bin/sail artisan make:livewire [Posts\CreatePost]` Artisan command to create new components.
|
||||||
|
- State should live on the server, with the UI reflecting it.
|
||||||
|
- All Livewire requests hit the Laravel backend; they're like regular HTTP requests. Always validate form data and run authorization checks in Livewire actions.
|
||||||
|
|
||||||
|
## Livewire Best Practices
|
||||||
|
- Livewire components require a single root element.
|
||||||
|
- Use `wire:loading` and `wire:dirty` for delightful loading states.
|
||||||
|
- Add `wire:key` in loops:
|
||||||
|
|
||||||
|
```blade
|
||||||
|
@foreach ($items as $item)
|
||||||
|
<div wire:key="item-{{ $item->id }}">
|
||||||
|
{{ $item->name }}
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
```
|
||||||
|
|
||||||
|
- Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects:
|
||||||
|
|
||||||
|
<code-snippet name="Lifecycle Hook Examples" lang="php">
|
||||||
|
public function mount(User $user) { $this->user = $user; }
|
||||||
|
public function updatedSearch() { $this->resetPage(); }
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
## Testing Livewire
|
||||||
|
|
||||||
|
<code-snippet name="Example Livewire Component Test" lang="php">
|
||||||
|
Livewire::test(Counter::class)
|
||||||
|
->assertSet('count', 0)
|
||||||
|
->call('increment')
|
||||||
|
->assertSet('count', 1)
|
||||||
|
->assertSee(1)
|
||||||
|
->assertStatus(200);
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
<code-snippet name="Testing Livewire Component Exists on Page" lang="php">
|
||||||
|
$this->get('/posts/create')
|
||||||
|
->assertSeeLivewire(CreatePost::class);
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
=== volt/core rules ===
|
||||||
|
|
||||||
|
## Livewire Volt
|
||||||
|
|
||||||
|
- This project uses Livewire Volt for interactivity within its pages. New pages requiring interactivity must also use Livewire Volt.
|
||||||
|
- Make new Volt components using `vendor/bin/sail artisan make:volt [name] [--test] [--pest]`.
|
||||||
|
- Volt is a class-based and functional API for Livewire that supports single-file components, allowing a component's PHP logic and Blade templates to coexist in the same file.
|
||||||
|
- Livewire Volt allows PHP logic and Blade templates in one file. Components use the `@volt` directive.
|
||||||
|
- You must check existing Volt components to determine if they're functional or class-based. If you can't detect that, ask the user which they prefer before writing a Volt component.
|
||||||
|
|
||||||
|
### Volt Functional Component Example
|
||||||
|
|
||||||
|
<code-snippet name="Volt Functional Component Example" lang="php">
|
||||||
|
@volt
|
||||||
|
<?php
|
||||||
|
use function Livewire\Volt\{state, computed};
|
||||||
|
|
||||||
|
state(['count' => 0]);
|
||||||
|
|
||||||
|
$increment = fn () => $this->count++;
|
||||||
|
$decrement = fn () => $this->count--;
|
||||||
|
|
||||||
|
$double = computed(fn () => $this->count * 2);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>Count: {{ $count }}</h1>
|
||||||
|
<h2>Double: {{ $this->double }}</h2>
|
||||||
|
<button wire:click="increment">+</button>
|
||||||
|
<button wire:click="decrement">-</button>
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Volt Class Based Component Example
|
||||||
|
To get started, define an anonymous class that extends Livewire\Volt\Component. Within the class, you may utilize all of the features of Livewire using traditional Livewire syntax:
|
||||||
|
|
||||||
|
<code-snippet name="Volt Class-based Volt Component Example" lang="php">
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
|
||||||
|
new class extends Component {
|
||||||
|
public $count = 0;
|
||||||
|
|
||||||
|
public function increment()
|
||||||
|
{
|
||||||
|
$this->count++;
|
||||||
|
}
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>{{ $count }}</h1>
|
||||||
|
<button wire:click="increment">+</button>
|
||||||
|
</div>
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Testing Volt & Volt Components
|
||||||
|
- Use the existing directory for tests if it already exists. Otherwise, fallback to `tests/Feature/Volt`.
|
||||||
|
|
||||||
|
<code-snippet name="Livewire Test Example" lang="php">
|
||||||
|
use Livewire\Volt\Volt;
|
||||||
|
|
||||||
|
test('counter increments', function () {
|
||||||
|
Volt::test('counter')
|
||||||
|
->assertSee('Count: 0')
|
||||||
|
->call('increment')
|
||||||
|
->assertSee('Count: 1');
|
||||||
|
});
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
<code-snippet name="Volt Component Test Using Pest" lang="php">
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use App\Models\{User, Product};
|
||||||
|
use Livewire\Volt\Volt;
|
||||||
|
|
||||||
|
test('product form creates product', function () {
|
||||||
|
$user = User::factory()->create();
|
||||||
|
|
||||||
|
Volt::test('pages.products.create')
|
||||||
|
->actingAs($user)
|
||||||
|
->set('form.name', 'Test Product')
|
||||||
|
->set('form.description', 'Test Description')
|
||||||
|
->set('form.price', 99.99)
|
||||||
|
->call('create')
|
||||||
|
->assertHasNoErrors();
|
||||||
|
|
||||||
|
expect(Product::where('name', 'Test Product')->exists())->toBeTrue();
|
||||||
|
});
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Common Patterns
|
||||||
|
|
||||||
|
<code-snippet name="CRUD With Volt" lang="php">
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Product;
|
||||||
|
use function Livewire\Volt\{state, computed};
|
||||||
|
|
||||||
|
state(['editing' => null, 'search' => '']);
|
||||||
|
|
||||||
|
$products = computed(fn() => Product::when($this->search,
|
||||||
|
fn($q) => $q->where('name', 'like', "%{$this->search}%")
|
||||||
|
)->get());
|
||||||
|
|
||||||
|
$edit = fn(Product $product) => $this->editing = $product->id;
|
||||||
|
$delete = fn(Product $product) => $product->delete();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- HTML / UI Here -->
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
<code-snippet name="Real-Time Search With Volt" lang="php">
|
||||||
|
<flux:input
|
||||||
|
wire:model.live.debounce.300ms="search"
|
||||||
|
placeholder="Search..."
|
||||||
|
/>
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
<code-snippet name="Loading States With Volt" lang="php">
|
||||||
|
<flux:button wire:click="save" wire:loading.attr="disabled">
|
||||||
|
<span wire:loading.remove>Save</span>
|
||||||
|
<span wire:loading>Saving...</span>
|
||||||
|
</flux:button>
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
=== pint/core rules ===
|
||||||
|
|
||||||
|
## Laravel Pint Code Formatter
|
||||||
|
|
||||||
|
- You must run `vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style.
|
||||||
|
- Do not run `vendor/bin/sail bin pint --test --format agent`, simply run `vendor/bin/sail bin pint --format agent` to fix any formatting issues.
|
||||||
|
|
||||||
|
=== pest/core rules ===
|
||||||
|
|
||||||
|
## Pest
|
||||||
|
### Testing
|
||||||
|
- If you need to verify a feature is working, write or update a Unit / Feature test.
|
||||||
|
|
||||||
|
### Pest Tests
|
||||||
|
- All tests must be written using Pest. Use `vendor/bin/sail artisan make:test --pest {name}`.
|
||||||
|
- You must not remove any tests or test files from the tests directory without approval. These are not temporary or helper files - these are core to the application.
|
||||||
|
- Tests should test all of the happy paths, failure paths, and weird paths.
|
||||||
|
- Tests live in the `tests/Feature` and `tests/Unit` directories.
|
||||||
|
- Pest tests look and behave like this:
|
||||||
|
<code-snippet name="Basic Pest Test Example" lang="php">
|
||||||
|
it('is true', function () {
|
||||||
|
expect(true)->toBeTrue();
|
||||||
|
});
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Running Tests
|
||||||
|
- Run the minimal number of tests using an appropriate filter before finalizing code edits.
|
||||||
|
- To run all tests: `vendor/bin/sail artisan test --compact`.
|
||||||
|
- To run all tests in a file: `vendor/bin/sail artisan test --compact tests/Feature/ExampleTest.php`.
|
||||||
|
- To filter on a particular test name: `vendor/bin/sail artisan test --compact --filter=testName` (recommended after making a change to a related file).
|
||||||
|
- When the tests relating to your changes are passing, ask the user if they would like to run the entire test suite to ensure everything is still passing.
|
||||||
|
|
||||||
|
### Pest Assertions
|
||||||
|
- When asserting status codes on a response, use the specific method like `assertForbidden` and `assertNotFound` instead of using `assertStatus(403)` or similar, e.g.:
|
||||||
|
<code-snippet name="Pest Example Asserting postJson Response" lang="php">
|
||||||
|
it('returns all', function () {
|
||||||
|
$response = $this->postJson('/api/docs', []);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
});
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Mocking
|
||||||
|
- Mocking can be very helpful when appropriate.
|
||||||
|
- When mocking, you can use the `Pest\Laravel\mock` Pest function, but always import it via `use function Pest\Laravel\mock;` before using it. Alternatively, you can use `$this->mock()` if existing tests do.
|
||||||
|
- You can also create partial mocks using the same import or self method.
|
||||||
|
|
||||||
|
### Datasets
|
||||||
|
- Use datasets in Pest to simplify tests that have a lot of duplicated data. This is often the case when testing validation rules, so consider this solution when writing tests for validation rules.
|
||||||
|
|
||||||
|
<code-snippet name="Pest Dataset Example" lang="php">
|
||||||
|
it('has emails', function (string $email) {
|
||||||
|
expect($email)->not->toBeEmpty();
|
||||||
|
})->with([
|
||||||
|
'james' => 'james@laravel.com',
|
||||||
|
'taylor' => 'taylor@laravel.com',
|
||||||
|
]);
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
=== tailwindcss/core rules ===
|
||||||
|
|
||||||
|
## Tailwind CSS
|
||||||
|
|
||||||
|
- Use Tailwind CSS classes to style HTML; check and use existing Tailwind conventions within the project before writing your own.
|
||||||
|
- Offer to extract repeated patterns into components that match the project's conventions (i.e. Blade, JSX, Vue, etc.).
|
||||||
|
- Think through class placement, order, priority, and defaults. Remove redundant classes, add classes to parent or child carefully to limit repetition, and group elements logically.
|
||||||
|
- You can use the `search-docs` tool to get exact examples from the official documentation when needed.
|
||||||
|
|
||||||
|
### Spacing
|
||||||
|
- When listing items, use gap utilities for spacing; don't use margins.
|
||||||
|
|
||||||
|
<code-snippet name="Valid Flex Gap Spacing Example" lang="html">
|
||||||
|
<div class="flex gap-8">
|
||||||
|
<div>Superior</div>
|
||||||
|
<div>Michigan</div>
|
||||||
|
<div>Erie</div>
|
||||||
|
</div>
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Dark Mode
|
||||||
|
- If existing pages and components support dark mode, new pages and components must support dark mode in a similar way, typically using `dark:`.
|
||||||
|
|
||||||
|
=== tailwindcss/v4 rules ===
|
||||||
|
|
||||||
|
## Tailwind CSS 4
|
||||||
|
|
||||||
|
- Always use Tailwind CSS v4; do not use the deprecated utilities.
|
||||||
|
- `corePlugins` is not supported in Tailwind v4.
|
||||||
|
- In Tailwind v4, configuration is CSS-first using the `@theme` directive — no separate `tailwind.config.js` file is needed.
|
||||||
|
|
||||||
|
<code-snippet name="Extending Theme in CSS" lang="css">
|
||||||
|
@theme {
|
||||||
|
--color-brand: oklch(0.72 0.11 178);
|
||||||
|
}
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
- In Tailwind v4, you import Tailwind using a regular CSS `@import` statement, not using the `@tailwind` directives used in v3:
|
||||||
|
|
||||||
|
<code-snippet name="Tailwind v4 Import Tailwind Diff" lang="diff">
|
||||||
|
- @tailwind base;
|
||||||
|
- @tailwind components;
|
||||||
|
- @tailwind utilities;
|
||||||
|
+ @import "tailwindcss";
|
||||||
|
</code-snippet>
|
||||||
|
|
||||||
|
### Replaced Utilities
|
||||||
|
- Tailwind v4 removed deprecated utilities. Do not use the deprecated option; use the replacement.
|
||||||
|
- Opacity values are still numeric.
|
||||||
|
|
||||||
|
| Deprecated | Replacement |
|
||||||
|
|------------+--------------|
|
||||||
|
| bg-opacity-* | bg-black/* |
|
||||||
|
| text-opacity-* | text-black/* |
|
||||||
|
| border-opacity-* | border-black/* |
|
||||||
|
| divide-opacity-* | divide-black/* |
|
||||||
|
| ring-opacity-* | ring-black/* |
|
||||||
|
| placeholder-opacity-* | placeholder-black/* |
|
||||||
|
| flex-shrink-* | shrink-* |
|
||||||
|
| flex-grow-* | grow-* |
|
||||||
|
| overflow-ellipsis | text-ellipsis |
|
||||||
|
| decoration-slice | box-decoration-slice |
|
||||||
|
| decoration-clone | box-decoration-clone |
|
||||||
|
</laravel-boost-guidelines>
|
||||||
BIN
dev/immobilien 07-05-2026/Azizi Folding Map V.10.pdf
Normal file
BIN
dev/immobilien 07-05-2026/Azizi Folding Map V.10.pdf
Normal file
Binary file not shown.
1807
dev/immobilien 07-05-2026/azizi-extraction.json
Normal file
1807
dev/immobilien 07-05-2026/azizi-extraction.json
Normal file
File diff suppressed because one or more lines are too long
209
dev/immobilien 07-05-2026/azizi-folding-map-extraction.json
Normal file
209
dev/immobilien 07-05-2026/azizi-folding-map-extraction.json
Normal file
|
|
@ -0,0 +1,209 @@
|
||||||
|
{
|
||||||
|
"source": "/Users/kevinadametz/Desktop/Azizi Folding Map V.10.pdf",
|
||||||
|
"source_type": "Azizi folding map, V.10",
|
||||||
|
"pages": 2,
|
||||||
|
"note": "Extracted with pypdf text extraction. The map provides direct Azizi project counts and location labels; pricing and availability are not included.",
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"map_no": 1,
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"area": "Dubailand",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_buildings": "100",
|
||||||
|
"total_apartments": "80,000",
|
||||||
|
"building_height": "Various",
|
||||||
|
"matches_top_project": "azizi-milan",
|
||||||
|
"impact": "Update preview from broader third-party masterplan language to direct Azizi map figures."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 2,
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"area": "Sheikh Zayed Road",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_residences": "1,037",
|
||||||
|
"building_height": "725 meters",
|
||||||
|
"total_floors": "140+",
|
||||||
|
"matches_top_project": "burj-azizi",
|
||||||
|
"impact": "Use 1,037 residences and 140+ floors from Azizi map; previous preview used 131+ floors from another official Burj source."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 3,
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"area": "Dubai South",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_villas": "109",
|
||||||
|
"total_apartment_buildings": "102",
|
||||||
|
"total_apartments": "34,795+",
|
||||||
|
"building_height": "Various",
|
||||||
|
"matches_top_project": "azizi-venice",
|
||||||
|
"impact": "Use exact map numbers instead of rounded 36,000+ / 100+ figures."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 4,
|
||||||
|
"title": "Azizi Riviera",
|
||||||
|
"area": "Meydan",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "12,285",
|
||||||
|
"building_height": "Various",
|
||||||
|
"matches_top_project": "azizi-riviera",
|
||||||
|
"impact": "Use direct map apartment count for Riviera."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 6,
|
||||||
|
"title": "Creek Views I",
|
||||||
|
"area": "Dubai Healthcare City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "634",
|
||||||
|
"building_height": "B+G+2P+17",
|
||||||
|
"matches_top_project": "creek-views",
|
||||||
|
"impact": "Confirms current Creek Views count."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 7,
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"area": "Dubai Healthcare City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "357",
|
||||||
|
"building_height": "B+G+2P+17",
|
||||||
|
"matches_top_project": "creek-views-ii",
|
||||||
|
"impact": "Add direct apartment count for Creek Views II."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 8,
|
||||||
|
"title": "Creek Views III",
|
||||||
|
"area": "Dubai Healthcare City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "290",
|
||||||
|
"building_height": "UG+B+G+2P+19",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not in current Top-18, but already in official Azizi link list and may be relevant as an additional DHCC project."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 9,
|
||||||
|
"title": "Azizi Emerald",
|
||||||
|
"area": "Dubai Healthcare City",
|
||||||
|
"category": "Commercial",
|
||||||
|
"total_units": "96",
|
||||||
|
"building_height": "3B+G+5P+11",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not a Top-18 project; commercial reference only."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 10,
|
||||||
|
"title": "Azizi Beach Oasis",
|
||||||
|
"area": "Dubai Studio City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "1,416",
|
||||||
|
"building_height": "Building 1: 2B+G+8; Building 2: 2B+G+9; Building 3: 2B+G+8; Building 4: 2B+G+8",
|
||||||
|
"matches_top_project": "beach-oasis",
|
||||||
|
"impact": "Confirms Studio City Beach Oasis and separates it from Jaddaf Beach Oasis."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 11,
|
||||||
|
"title": "Azizi Vista",
|
||||||
|
"area": "Dubai Studio City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "163",
|
||||||
|
"building_height": "2B+G+8",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not in current Top-18, but appears alongside Beach Oasis in the map."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 12,
|
||||||
|
"title": "Azizi Grand",
|
||||||
|
"area": "Dubai Sports City",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "411",
|
||||||
|
"building_height": "B+G+3P+14",
|
||||||
|
"matches_top_project": "azizi-grand",
|
||||||
|
"impact": "Correct preview count from 431 to 411."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 13,
|
||||||
|
"title": "Azizi Mina",
|
||||||
|
"area": "Palm Jumeirah",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "178",
|
||||||
|
"building_height": "B+G+9",
|
||||||
|
"matches_top_project": "mina",
|
||||||
|
"impact": "Confirms current count of 178 apartments."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 14,
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"area": "Palm Jumeirah",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "90",
|
||||||
|
"building_height": "B+G+9",
|
||||||
|
"matches_top_project": "royal-bay",
|
||||||
|
"impact": "Confirms current count of 90 apartments."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 15,
|
||||||
|
"title": "Azizi Ruby",
|
||||||
|
"area": "Jumeirah Village Circle",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "260",
|
||||||
|
"building_height": "3B+G+5P+14",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not in current Top-18; possible future list extension."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 16,
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"area": "Dubai Islands",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "221",
|
||||||
|
"building_height": "3B+G+13",
|
||||||
|
"matches_top_project": "azizi-wasel",
|
||||||
|
"impact": "Confirms 221 apartments and building height."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 17,
|
||||||
|
"title": "Azizi Aura",
|
||||||
|
"area": "Jebel Ali",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "479",
|
||||||
|
"building_height": "B+G+2P+17",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not in current Top-18; Jebel Ali reference."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 18,
|
||||||
|
"title": "Azizi Arian",
|
||||||
|
"area": "Jebel Ali",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "623",
|
||||||
|
"building_height": "3B+G+M+5P+17",
|
||||||
|
"matches_top_project": null,
|
||||||
|
"impact": "Not in current Top-18; Jebel Ali reference."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 19,
|
||||||
|
"title": "Al Furjan",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "5,172",
|
||||||
|
"building_height": "Various",
|
||||||
|
"matches_top_project": "star, roy-mediterranean, farishta",
|
||||||
|
"impact": "Map aggregates Al Furjan instead of listing Star, ROY Mediterranean and Farishta separately."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"map_no": 25,
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"area": "Meydan Avenue",
|
||||||
|
"category": "Residential",
|
||||||
|
"total_apartments": "274",
|
||||||
|
"building_height": "Various",
|
||||||
|
"matches_top_project": "park-avenue",
|
||||||
|
"impact": "Correct preview count from 372 to 274 apartments."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"top_project_gaps_on_map": [
|
||||||
|
"Riviera Rêve is not listed as a separate map entry.",
|
||||||
|
"Riviera Beachfront is not listed as a separate map entry.",
|
||||||
|
"Star, ROY Mediterranean and Farishta are covered only by the aggregate Al Furjan entry.",
|
||||||
|
"Monaco Mansions is described with Azizi Venice on page 2, but the numeric table aggregates it under Azizi Venice villas.",
|
||||||
|
"Milan Heights is not part of the current Top-18 and is not separately listed in the map text."
|
||||||
|
]
|
||||||
|
}
|
||||||
360
dev/immobilien 07-05-2026/azizi-official-links.json
Normal file
360
dev/immobilien 07-05-2026/azizi-official-links.json
Normal file
|
|
@ -0,0 +1,360 @@
|
||||||
|
{
|
||||||
|
"source": "/Volumes/Obsidian/DEV-Vault/b2in/immobilien/Immobilien Dubai.md",
|
||||||
|
"count": 59,
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"slug": "azizi-amir",
|
||||||
|
"title": "Azizi Amir",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-amir"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-sikander",
|
||||||
|
"title": "Azizi Sikander",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-sikander"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-raffi",
|
||||||
|
"title": "Azizi Raffi",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-raffi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-zain",
|
||||||
|
"title": "Azizi Zain",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-zain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-neila",
|
||||||
|
"title": "Azizi Neila",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-neila"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-jewel",
|
||||||
|
"title": "Azizi Jewel",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-jewel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-central",
|
||||||
|
"title": "Azizi Central",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-central"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-pearl",
|
||||||
|
"title": "Azizi Pearl",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/azizi-pearl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "amber",
|
||||||
|
"title": "Amber",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/amber"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "aster",
|
||||||
|
"title": "Aster",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/aster"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "berton",
|
||||||
|
"title": "Berton",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/berton"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "candace-acacia",
|
||||||
|
"title": "Candace Acacia",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/candace-acacia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "daisy",
|
||||||
|
"title": "Daisy",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/daisy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "farishta",
|
||||||
|
"title": "Farishta",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/farishta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "feirouz",
|
||||||
|
"title": "Feirouz",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/feirouz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "freesia",
|
||||||
|
"title": "Freesia",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/freesia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "iris",
|
||||||
|
"title": "Iris",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/iris"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "liatris",
|
||||||
|
"title": "Liatris",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/liatris"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "montrell",
|
||||||
|
"title": "Montrell",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/montrell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "orchid",
|
||||||
|
"title": "Orchid",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/orchid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "plaza",
|
||||||
|
"title": "Plaza",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/plaza"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "roy-mediterranean",
|
||||||
|
"title": "ROY Mediterranean",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/roy-mediterranean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "samia",
|
||||||
|
"title": "Samia",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/samia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "shaista",
|
||||||
|
"title": "Shaista",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/shaista"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "star",
|
||||||
|
"title": "Star",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/star"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "tulip",
|
||||||
|
"title": "Tulip",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/tulip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "yasamine",
|
||||||
|
"title": "Yasamine",
|
||||||
|
"area": "Al Furjan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/yasamine"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera",
|
||||||
|
"title": "Riviera",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-reve",
|
||||||
|
"title": "Riviera Rêve",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-reve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-beachfront",
|
||||||
|
"title": "Riviera Beachfront",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-beachfront"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "park-avenue",
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "park-avenue-ii",
|
||||||
|
"title": "Park Avenue II",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue-ii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "park-avenue-iii",
|
||||||
|
"title": "Park Avenue III",
|
||||||
|
"area": "Meydan - Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue-iii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-rose",
|
||||||
|
"title": "Azizi Rose",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-rose"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-gabriel",
|
||||||
|
"title": "Azizi Gabriel",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-gabriel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-lina",
|
||||||
|
"title": "Azizi Lina",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-lina"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-wares",
|
||||||
|
"title": "Azizi Wares",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-wares"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-arian",
|
||||||
|
"title": "Azizi Arian",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-arian"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "aura",
|
||||||
|
"title": "Aura",
|
||||||
|
"area": "Jebel Ali (inkl. JAFZA)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/aura"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "beach-oasis",
|
||||||
|
"title": "Beach Oasis",
|
||||||
|
"area": "Studio City",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/beach-oasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "beach-oasis-ii",
|
||||||
|
"title": "Beach Oasis II",
|
||||||
|
"area": "Studio City",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/beach-oasis-ii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "vista",
|
||||||
|
"title": "Vista",
|
||||||
|
"area": "Studio City",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/vista"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "mina",
|
||||||
|
"title": "Mina",
|
||||||
|
"area": "Palm Jumeirah",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/mina"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "royal-bay",
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"area": "Palm Jumeirah",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/royal-bay"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-jaddaf-beach-oasis",
|
||||||
|
"title": "Azizi Jaddaf Beach Oasis",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-jaddaf-beach-oasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-farishta-ii",
|
||||||
|
"title": "Azizi Farishta II",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-farishta-ii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-leily",
|
||||||
|
"title": "Azizi Leily",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-leily"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-david",
|
||||||
|
"title": "Azizi David",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-david"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-emerald",
|
||||||
|
"title": "Azizi Emerald",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-emerald"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-tower-1",
|
||||||
|
"title": "Azizi Tower 1",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-tower-1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views",
|
||||||
|
"title": "Creek Views",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views-ii",
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-ii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views-iii",
|
||||||
|
"title": "Creek Views III",
|
||||||
|
"area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-iii"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-venice",
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"area": "Dubai South",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/azizi-venice"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "monaco-mansions",
|
||||||
|
"title": "Monaco Mansions",
|
||||||
|
"area": "Dubai South",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/monaco-mansions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-milan",
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"area": "Azizi Milan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/azizi-milan/azizi-milan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "milan-heights",
|
||||||
|
"title": "Milan Heights",
|
||||||
|
"area": "Azizi Milan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/azizi-milan/milan-heights"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-wasel",
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"area": "Dubai Islands",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-islands/azizi-wasel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-ruby",
|
||||||
|
"title": "Azizi Ruby",
|
||||||
|
"area": "Jumeirah Village Circle (JVC)",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jumeirah-village-circle/azizi-ruby"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
732
dev/immobilien 07-05-2026/azizi-top-projects-research.json
Normal file
732
dev/immobilien 07-05-2026/azizi-top-projects-research.json
Normal file
|
|
@ -0,0 +1,732 @@
|
||||||
|
{
|
||||||
|
"source_files": {
|
||||||
|
"official_link_list": "/Volumes/Obsidian/DEV-Vault/b2in/immobilien/Immobilien Dubai.md",
|
||||||
|
"local_sharepoint_extraction": "dev/immobilien 07-05-2026/azizi-extraction.json"
|
||||||
|
},
|
||||||
|
"note": "Working research data for the B2in Dubai real-estate page. Pricing, availability and handover dates must be confirmed before publication.",
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"slug": "mina",
|
||||||
|
"title": "Mina",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/mina",
|
||||||
|
"official_list_area": "Palm Jumeirah",
|
||||||
|
"district": "Palm Jumeirah",
|
||||||
|
"category": "Sofort verfügbar - Luxus-Prestige",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Penthouses"
|
||||||
|
],
|
||||||
|
"unit_count": "178 Apartments + 4 Penthouses",
|
||||||
|
"price_from": "ab AED 2,6 Mio laut Konzeptbriefing; aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Fertiggestellt 2021",
|
||||||
|
"positioning": "Etablierte Palm-Jumeirah-Adresse mit Waterfront-/Prestige-Fokus.",
|
||||||
|
"key_facts": [
|
||||||
|
"Palm Jumeirah, östlicher Halbmond",
|
||||||
|
"Bestandsobjekt, neue Einheiten nur nach Verfügbarkeit im Zweitmarkt",
|
||||||
|
"Geeignet für Eigennutzer mit Palm-Präferenz und Bestandsinvestoren"
|
||||||
|
],
|
||||||
|
"research_status": "Konzeptdaten belastbar; lokale SharePoint-Ordner vorhanden, aber ohne verwertbare Dateien; offizielle URL als Projektanker.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Palm Jumeirah/Mina",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Beno Photography/Mina"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "royal-bay",
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/royal-bay",
|
||||||
|
"official_list_area": "Palm Jumeirah",
|
||||||
|
"district": "Palm Jumeirah",
|
||||||
|
"category": "Sofort verfügbar - Luxus-Prestige",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Penthouses"
|
||||||
|
],
|
||||||
|
"unit_count": "90 Apartments + 2 Penthouses",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Kleinere, privatere Palm-Jumeirah-Adresse gegenüber Mina.",
|
||||||
|
"key_facts": [
|
||||||
|
"Palm Jumeirah",
|
||||||
|
"Bewusst kleine Hausgemeinschaft",
|
||||||
|
"Geeignet für Eigennutzer mit Privatheitsfokus"
|
||||||
|
],
|
||||||
|
"research_status": "Konzeptdaten belastbar; offizielle URL aus Obsidian-Liste; keine lokale SharePoint-Abdeckung gefunden.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views",
|
||||||
|
"title": "Creek Views",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views",
|
||||||
|
"official_list_area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"district": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
|
||||||
|
"status": "Fertiggestellt / Bestand",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom"
|
||||||
|
],
|
||||||
|
"unit_count": "634 Einheiten laut Konzeptbriefing",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Zentrale Cashflow-Adresse zwischen Dubai Creek, Downtown und Flughafen.",
|
||||||
|
"key_facts": [
|
||||||
|
"Offizielles Factsheet: Studios, 1- und 2-Bedroom-Apartments",
|
||||||
|
"Offizielles Factsheet: Dubai Creek ca. 2 Minuten, Downtown Dubai ca. 7 Minuten, DXB ca. 7 Minuten",
|
||||||
|
"Panoramablick auf Dubai Creek und Skyline, Terrassen, Retail- und Leisure-Hubs"
|
||||||
|
],
|
||||||
|
"research_status": "Sehr gute lokale SharePoint-Abdeckung mit Factsheets und Bildern.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 628,
|
||||||
|
"images": 64,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 12
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/AZIZI_Farhad_CGI15_02c_without CreekTower.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/Retail view_Low Ries.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/Creek views Living room.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/DHCC_Farhad_ Overview_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/Creek Views 2 - Creek shot 01 6000px.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Renders/Creek Views2 - OverView Shot 01 6000px.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Creek Views Factsheet.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Fact sheets/CreekViews Factsheet-Retail.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views/Fact sheets/Creek Views Factsheet.pdf"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views-ii",
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-ii",
|
||||||
|
"official_list_area": "Al Jaddaf & DHCC (Dubai Healthcare City)",
|
||||||
|
"district": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
|
||||||
|
"status": "Kürzlich übergeben / Bestand",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom"
|
||||||
|
],
|
||||||
|
"unit_count": "Teil des Creek-Views-Ensembles",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Kürzlich übergeben",
|
||||||
|
"positioning": "Jüngere Ergänzung des Creek-Views-Konzepts in bewährter Lage.",
|
||||||
|
"key_facts": [
|
||||||
|
"SharePoint enthält Factsheets, Renderings und Fertigstellungs-/Foto-Material",
|
||||||
|
"Gleiche Standortlogik wie Creek Views: DHCC, Dubai Creek, kurze Wege zu Downtown und Flughafen",
|
||||||
|
"Geeignet für konservative Yield-Investoren mit schneller Vermietbarkeit"
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale SharePoint-Abdeckung; Factsheet-Dateien teils mehrsprachig/CH/RUS, deutsche Website-Texte besser aus Konzept + englischer Quelle ableiten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 271,
|
||||||
|
"images": 39,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 7
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/4 copy.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/Panorama.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/Creek Views II.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/2.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/3.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Photos/1.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Fact sheets/Creek Views ll Factsheet CH.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Fact sheets/CreekViews Factsheet-Retail.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Creek Views II/Fact sheets/Creek Views Factsheet.pdf"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-riviera",
|
||||||
|
"title": "Azizi Riviera",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera",
|
||||||
|
"official_list_area": "Meydan - Riviera",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Phasenweise fertiggestellt / weitere Phasen aktiv",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom",
|
||||||
|
"3 Bedroom",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "12.285 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Phase prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "Master-Planned Community mit Crystal Lagoon, Lifestyle und Rendite-Logik.",
|
||||||
|
"key_facts": [
|
||||||
|
"Riviera umfasst eine 2,7 km lange schwimmbare Crystal Lagoon",
|
||||||
|
"Riviera ist in mehrere Lifestyle-Zonen gegliedert: Retail Boulevard, Lagoon Walk und Grünflächen",
|
||||||
|
"Kurze Wege nach Downtown Dubai und Meydan"
|
||||||
|
],
|
||||||
|
"research_status": "Azizi Folding Map V.10 liefert direkten Apartment-Count; lokaler SharePoint-Ordner ist weitgehend leer.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/MBR City/Riviera",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Beno Photography/Riviera Boulevard",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Beno Photography/Riviera Lagoon"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 1,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-reve",
|
||||||
|
"title": "Riviera Rêve",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-reve",
|
||||||
|
"official_list_area": "Meydan - Riviera",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Off-Plan / Ultra-Luxus-Phase",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom",
|
||||||
|
"Duplex Penthouses"
|
||||||
|
],
|
||||||
|
"unit_count": "5.061 Homes in 24 Ultra-Luxus-Gebäuden",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "Exklusivste Riviera-Phase für Käufer, die Community-Vorteile mit höherer Ausstattung verbinden.",
|
||||||
|
"key_facts": [
|
||||||
|
"Web-/Pressesource: 24 Ultra-Luxus-Gebäude",
|
||||||
|
"Web-/Pressesource: über 2.600 Studios, 1.579 One-Bedroom, 876 Two-Bedroom",
|
||||||
|
"Ausstattungspositionierung mit Smart-Home, hochwertigen Materialien und 5-Sterne-Service-Ambiente"
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Pressesource ergänzt offizielle URL.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-beachfront",
|
||||||
|
"title": "Riviera Beachfront",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-beachfront",
|
||||||
|
"official_list_area": "Meydan - Riviera",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "555 Einheiten in drei 20-geschossigen Entwicklungen",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Q4 2025 laut 2025-Bauupdates",
|
||||||
|
"positioning": "Premium-Linie der Riviera direkt an der Crystal Lagoon.",
|
||||||
|
"key_facts": [
|
||||||
|
"Bauupdate 2025: Beachfront I erreichte 70-81% Baufortschritt",
|
||||||
|
"Drei 20-geschossige Entwicklungen mit direktem Beach-/Lagoon-Zugang",
|
||||||
|
"Amenities: Pools, Gym, BBQ, Kinderspielbereiche, Yoga-Spaces, Retail"
|
||||||
|
],
|
||||||
|
"research_status": "Lokaler SharePoint-Ordner ohne verwertbare Dateien; Web-/Bauupdates liefern harte Fakten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Off-Plan Projects Azizi/MBR City/Riviera Beachfront"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "park-avenue",
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue",
|
||||||
|
"official_list_area": "Meydan - Riviera",
|
||||||
|
"district": "Meydan / MBR City",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "274 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "2023/2024 laut Konzeptbriefing",
|
||||||
|
"positioning": "Boutique-Community in MBR City, ruhiger als die großen Riviera-Türme.",
|
||||||
|
"key_facts": [
|
||||||
|
"274 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Meydan Avenue / MBR City",
|
||||||
|
"Geeignet für Eigennutzer und Resale-Investoren mit Wunsch nach kleinerer Community"
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 274 Apartments.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "star",
|
||||||
|
"title": "Star",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/star",
|
||||||
|
"official_list_area": "Al Furjan",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom"
|
||||||
|
],
|
||||||
|
"unit_count": "Offizielle Seite: 310 Studios, 46 One-Bedroom, 102 Two-Bedroom",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Al-Furjan-Klassiker mit Metro-Nähe und breiter Mietzielgruppe.",
|
||||||
|
"key_facts": [
|
||||||
|
"Offizielle Seite: Metro Station ca. 1 Minute, Mohammed Bin Zayed Road ca. 1 Minute",
|
||||||
|
"Offizielle Seite: Dubai Marina & JBR ca. 10 Minuten, Expo City ca. 12 Minuten",
|
||||||
|
"Amenities: Pool, Gym, Garage/Parking, City Views, Sauna"
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale Bildabdeckung; offizielle Seite liefert Unit-Mix und Standortzeiten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 152,
|
||||||
|
"images": 25,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Rendering/mth_az_rv_View 26_a03.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Rendering/Star_Livingroom_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Rendering/Al Furjan Overview_05.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Rendering/Star_Bedroom_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Rendering/mth_az_rv_View 25_a04.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Star/Completion Photos/01946.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "roy-mediterranean",
|
||||||
|
"title": "ROY Mediterranean",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/roy-mediterranean",
|
||||||
|
"official_list_area": "Al Furjan",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "271 Apartments + Retail laut Konzeptbriefing",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Etablierte Al-Furjan-Adresse mit Volumen und Resale-Liquidität.",
|
||||||
|
"key_facts": [
|
||||||
|
"Al Furjan mit Metro-Anbindung und guter Erreichbarkeit von Jebel Ali, Dubai Marina und Expo City",
|
||||||
|
"Ground-Floor-Retail stärkt Alltagstauglichkeit und Vermietbarkeit",
|
||||||
|
"Geeignet für Yield- und Volumeninvestoren"
|
||||||
|
],
|
||||||
|
"research_status": "Lokale Bildabdeckung vorhanden; harte Unit-Zahl aus Konzeptbriefing, offizielle URL als Projektanker.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Roy"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 9,
|
||||||
|
"images": 2,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Al Furjan General/Al Furjan project photos/Roy Mediterranean_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Al Furjan General/Al Furjan project photos/Roy Mediterranean_02.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "farishta",
|
||||||
|
"title": "Farishta",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/farishta",
|
||||||
|
"official_list_area": "Al Furjan",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom",
|
||||||
|
"Penthouses"
|
||||||
|
],
|
||||||
|
"unit_count": "137 Studios, 124 One-Bedroom, 23 Two-Bedroom laut Azizi-Al-Furjan-Katalogauszug",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt 2020 laut Konzeptbriefing",
|
||||||
|
"positioning": "Niedriger Risiko-Einstieg in Al Furjan mit Metro- und Straßenanbindung.",
|
||||||
|
"key_facts": [
|
||||||
|
"Zwischen Sheikh Zayed Road und Sheikh Mohammed Bin Zayed Road positioniert",
|
||||||
|
"SharePoint enthält Renderings, Completion Photos und Floor Plans",
|
||||||
|
"Geeignet für Erstinvestoren und Cashflow-orientierte Käufer"
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale SharePoint-Abdeckung; Unit-Mix aus Azizi-Katalog-/Suchauszug weicht leicht vom Konzept ab und sollte vor Livegang final geprüft werden.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 367,
|
||||||
|
"images": 43,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 2
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1630.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1634.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1635.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1637.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1636.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Al Furjan/Faristha/Mock-up Apartments/845A1644.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Azizi Farishta II/Factsheet/Farishta II Factsheet_Ar.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/AI Jaddaf and DHCC/Azizi Farishta II/Factsheet/Farishta II Factsheet_En.pdf"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-grand",
|
||||||
|
"title": "Azizi Grand",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-sports-city/azizi-grand",
|
||||||
|
"official_list_area": null,
|
||||||
|
"district": "Dubai Sports City",
|
||||||
|
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom"
|
||||||
|
],
|
||||||
|
"unit_count": "411 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Q1 2026 laut Bauupdates",
|
||||||
|
"positioning": "Kurze Restlaufzeit bis Cashflow in einer sport- und familiennahen Lage.",
|
||||||
|
"key_facts": [
|
||||||
|
"411 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Building Height B+G+3P+14 laut Azizi Folding Map V.10",
|
||||||
|
"Bauupdate September 2025: 57% Baufortschritt",
|
||||||
|
"Bauupdate November 2025: 67% Baufortschritt",
|
||||||
|
"Amenities: Gym, zwei Pools, Kinderspielbereiche, BBQ, Landschaftsgärten"
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Bauupdates liefern harte Fakten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "beach-oasis",
|
||||||
|
"title": "Beach Oasis",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/beach-oasis",
|
||||||
|
"official_list_area": "Studio City",
|
||||||
|
"district": "Dubai Studio City",
|
||||||
|
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
|
||||||
|
"status": "Im Bau / Phase abhängig",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom"
|
||||||
|
],
|
||||||
|
"unit_count": "1.416 Apartments in 4 Buildings laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 480k-822k je Phase/Quelle; aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Phase abhängig: 2024/2025 bzw. Phase 2 bis 2026 laut Webquellen",
|
||||||
|
"positioning": "Studio-City-Einstieg mit Lagunen-/Beach-Feeling im bezahlbaren Segment.",
|
||||||
|
"key_facts": [
|
||||||
|
"1.416 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Dubai Studio City, Medien- und Entertainment-Hub",
|
||||||
|
"Lagoon-style swimming pool und man-made beach",
|
||||||
|
"Outdoor courtyard, Cafes/Restaurants, Gym, landscaped gardens"
|
||||||
|
],
|
||||||
|
"research_status": "Wichtig: lokaler Treffer ist überwiegend Jaddaf Beach Oasis, nicht Studio City Beach Oasis. Für Live-Daten Studio-City-Quelle priorisieren.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "burj-azizi",
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"official_url": "https://www.burjazizi.com/",
|
||||||
|
"official_list_area": null,
|
||||||
|
"district": "Sheikh Zayed Road / Trade Centre",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"unit_types": [
|
||||||
|
"Holiday Homes",
|
||||||
|
"Freehold Apartments",
|
||||||
|
"Penthouses",
|
||||||
|
"Hotel",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "1.037 Residences, 725 m und 140+ Floors laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "offizielle Burj-Azizi-Seite: ab AED 8,5 Mio bis AED 1 Mrd; Launch-Presse: ab AED 10.000/sqft",
|
||||||
|
"handover": "Bis Ende 2028 laut Programm-/Pressekontext; im Konzept 2028-2030",
|
||||||
|
"positioning": "Headline-Projekt: zweithöchster Tower der Welt und einziges Freehold-Projekt auf dem Sheikh-Zayed-Road-Strip.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 725 Meter, 140+ Floors, 1.037 Residences, Sheikh Zayed Road",
|
||||||
|
"Offizielle Seite: Highest Observation Deck 649m, Highest Club 567m, Highest Hotel Lobby 498m",
|
||||||
|
"Offizielle Kontaktseite: Retail Ground-L7, Apartments Level 37-69, Penthouses Level 72-88, Observation Deck Level 130"
|
||||||
|
],
|
||||||
|
"research_status": "Azizi Folding Map V.10 liefert direkte Zahlen; sehr gute offizielle Burj-Azizi-Webquelle; keine lokale SharePoint-Abdeckung gefunden.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "monaco-mansions",
|
||||||
|
"title": "Monaco Mansions",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/monaco-mansions",
|
||||||
|
"official_list_area": "Dubai South",
|
||||||
|
"district": "Dubai South / Azizi Venice",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"unit_types": [
|
||||||
|
"6 Bedroom Mansions",
|
||||||
|
"7 Bedroom Mansions",
|
||||||
|
"8 Bedroom Mansions"
|
||||||
|
],
|
||||||
|
"unit_count": "109 Mansions",
|
||||||
|
"price_from": "ab AED 45 Mio laut Konzeptbriefing",
|
||||||
|
"handover": "Q4 2026 laut Konzeptbriefing; final prüfen",
|
||||||
|
"positioning": "Exklusivstes Villen-Segment innerhalb der Venice-Community.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10 nennt 109 Villas im Azizi-Venice-Kontext",
|
||||||
|
"Positioniert für HNI-Käufer, Familien und Trophy-Asset-Investoren",
|
||||||
|
"Investmentthese ist an Dubai South, Flughafenentwicklung und Venice-Masterplan gekoppelt"
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Venice-Web-/Pressesources bestätigen Mansion-Kontext, projektgenaue Verfügbarkeit final prüfen.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-venice",
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/azizi-venice",
|
||||||
|
"official_list_area": "Dubai South",
|
||||||
|
"district": "Dubai South",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Mega-Community",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Villas",
|
||||||
|
"Mansions",
|
||||||
|
"Retail"
|
||||||
|
],
|
||||||
|
"unit_count": "34.795+ Apartments, 102 Apartment Buildings und 109 Villas laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 650k laut Konzeptbriefing; aktuelle Phase prüfen",
|
||||||
|
"handover": "Phasenweise ab 2026 laut Konzeptbriefing",
|
||||||
|
"positioning": "Große Dubai-South-Wachstumsthese mit Lagoon, Cultural District und Nähe zu Al Maktoum Airport.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 34.795+ Apartments, 102 Apartment Buildings, 109 Villas",
|
||||||
|
"18 km Freshwater Lagoon, Opera House, Theatre, Exhibition Hall, Performing Arts Academy",
|
||||||
|
"Nähe zu Al Maktoum International Airport; Retail Boulevard, Hotels, Schulen, Krankenhaus"
|
||||||
|
],
|
||||||
|
"research_status": "Lokaler SharePoint-Ordner leer; mehrere Web-/Pressesources liefern harte Masterplan-Fakten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Dubai South/Azizi Venice"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-milan",
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/azizi-milan/azizi-milan",
|
||||||
|
"official_list_area": "Azizi Milan",
|
||||||
|
"district": "Azizi Milan / Sheikh Mohammed Bin Zayed Road",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Master-Planned Community",
|
||||||
|
"unit_types": [
|
||||||
|
"Apartments",
|
||||||
|
"Retail",
|
||||||
|
"Hospitality",
|
||||||
|
"Mixed Use"
|
||||||
|
],
|
||||||
|
"unit_count": "100 Buildings und 80.000 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Gebäudephase prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "AED-75-Mrd.-Masterplan mit italienischer Design-/Fashion-Positionierung.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 100 Buildings und 80.000 Apartments",
|
||||||
|
"Web-/Pressesources: AED 75 Mrd. und 40 Mio sqft GFA",
|
||||||
|
"Milan Heights als lagoon-facing Enclave innerhalb Azizi Milan",
|
||||||
|
"Lage an Sheikh Mohammed Bin Zayed Road, wichtiger Verbindungsachse zwischen Emiraten"
|
||||||
|
],
|
||||||
|
"research_status": "Sehr gute lokale SharePoint-Abdeckung für einzelne AM-Gebäude und Milan Heights; Webquellen ergänzen Masterplan-Fakten.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan"
|
||||||
|
],
|
||||||
|
"coverage": {
|
||||||
|
"files": 1113,
|
||||||
|
"images": 70,
|
||||||
|
"xlsx": 13,
|
||||||
|
"small_fact_pdfs": 4
|
||||||
|
},
|
||||||
|
"image_candidates": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_HERO_03.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_HERO_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_HERO_04.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_01.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_02.jpg",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/Renders/AM51_03.jpg"
|
||||||
|
],
|
||||||
|
"fact_sources": [
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/Azizi Milan Heights/Milan Heights Payment Plan.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/Azizi Milan Heights/Factsheets/Azizi Milan Heights Factsheet.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/Azizi Milan Heights/Factsheets/Azizi Milan Heights Arabic Factsheet.pdf",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/360-AM51_DOC_PROJ INFORMATION-00.xlsx",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/AM-51/360-AM51-DOC_WHITE GOODS SPEC.xlsx",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/Azizi Milan Heights/360-AM44-DOC_WHITE GOODS SPEC-00.xlsx",
|
||||||
|
"dev/immobilien 07-05-2026/AZIZI SharePoint/Azizi Milan/Buildings/Azizi Milan Heights/250701-360-AM 44-DOC_Building_Info_.xlsx"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-wasel",
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-islands/azizi-wasel",
|
||||||
|
"official_list_area": "Dubai Islands",
|
||||||
|
"district": "Dubai Islands",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Off-Plan / New Launch",
|
||||||
|
"unit_types": [
|
||||||
|
"Studios",
|
||||||
|
"1 Bedroom",
|
||||||
|
"2 Bedroom",
|
||||||
|
"3 Bedroom",
|
||||||
|
"Penthouses"
|
||||||
|
],
|
||||||
|
"unit_count": "221 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 1,04-1,1 Mio je Quelle",
|
||||||
|
"handover": "Q2 2027 bis Q1 2028 je Quelle; final prüfen",
|
||||||
|
"positioning": "Frühphasiger Einstieg in Dubai Islands als künftige Premium-Inseldestination.",
|
||||||
|
"key_facts": [
|
||||||
|
"221 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Building Height 3B+G+13 laut Azizi Folding Map V.10",
|
||||||
|
"Dubai Islands / Deira Waterfront",
|
||||||
|
"Studios bis 3-Bedroom Apartments sowie 3-4-Bedroom Penthouses",
|
||||||
|
"50/50 Payment Plan wird konsistent in Webquellen genannt"
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 221 Apartments und Building Height 3B+G+13.",
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {
|
||||||
|
"files": 0,
|
||||||
|
"images": 0,
|
||||||
|
"xlsx": 0,
|
||||||
|
"small_fact_pdfs": 0
|
||||||
|
},
|
||||||
|
"image_candidates": [],
|
||||||
|
"fact_sources": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
438
dev/immobilien 07-05-2026/build_azizi_project_research.py
Normal file
438
dev/immobilien 07-05-2026/build_azizi_project_research.py
Normal file
|
|
@ -0,0 +1,438 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
OBSIDIAN_LIST = Path("/Volumes/Obsidian/DEV-Vault/b2in/immobilien/Immobilien Dubai.md")
|
||||||
|
LOCAL_EXTRACTION = Path("dev/immobilien 07-05-2026/azizi-extraction.json")
|
||||||
|
OFFICIAL_LINKS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-official-links.json")
|
||||||
|
TOP_PROJECTS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-top-projects-research.json")
|
||||||
|
|
||||||
|
|
||||||
|
TOP_PROJECTS: dict[str, dict[str, Any]] = {
|
||||||
|
"mina": {
|
||||||
|
"title": "Mina",
|
||||||
|
"district": "Palm Jumeirah",
|
||||||
|
"category": "Sofort verfügbar - Luxus-Prestige",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Apartments", "Penthouses"],
|
||||||
|
"unit_count": "178 Apartments + 4 Penthouses",
|
||||||
|
"price_from": "ab AED 2,6 Mio laut Konzeptbriefing; aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Fertiggestellt 2021",
|
||||||
|
"positioning": "Etablierte Palm-Jumeirah-Adresse mit Waterfront-/Prestige-Fokus.",
|
||||||
|
"key_facts": [
|
||||||
|
"Palm Jumeirah, östlicher Halbmond",
|
||||||
|
"Bestandsobjekt, neue Einheiten nur nach Verfügbarkeit im Zweitmarkt",
|
||||||
|
"Geeignet für Eigennutzer mit Palm-Präferenz und Bestandsinvestoren",
|
||||||
|
],
|
||||||
|
"research_status": "Konzeptdaten belastbar; lokale SharePoint-Ordner vorhanden, aber ohne verwertbare Dateien; offizielle URL als Projektanker.",
|
||||||
|
},
|
||||||
|
"royal-bay": {
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"district": "Palm Jumeirah",
|
||||||
|
"category": "Sofort verfügbar - Luxus-Prestige",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Apartments", "Penthouses"],
|
||||||
|
"unit_count": "90 Apartments + 2 Penthouses",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Kleinere, privatere Palm-Jumeirah-Adresse gegenüber Mina.",
|
||||||
|
"key_facts": [
|
||||||
|
"Palm Jumeirah",
|
||||||
|
"Bewusst kleine Hausgemeinschaft",
|
||||||
|
"Geeignet für Eigennutzer mit Privatheitsfokus",
|
||||||
|
],
|
||||||
|
"research_status": "Konzeptdaten belastbar; offizielle URL aus Obsidian-Liste; keine lokale SharePoint-Abdeckung gefunden.",
|
||||||
|
},
|
||||||
|
"creek-views": {
|
||||||
|
"title": "Creek Views",
|
||||||
|
"district": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
|
||||||
|
"status": "Fertiggestellt / Bestand",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
|
||||||
|
"unit_count": "634 Einheiten laut Konzeptbriefing",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Zentrale Cashflow-Adresse zwischen Dubai Creek, Downtown und Flughafen.",
|
||||||
|
"key_facts": [
|
||||||
|
"Offizielles Factsheet: Studios, 1- und 2-Bedroom-Apartments",
|
||||||
|
"Offizielles Factsheet: Dubai Creek ca. 2 Minuten, Downtown Dubai ca. 7 Minuten, DXB ca. 7 Minuten",
|
||||||
|
"Panoramablick auf Dubai Creek und Skyline, Terrassen, Retail- und Leisure-Hubs",
|
||||||
|
],
|
||||||
|
"research_status": "Sehr gute lokale SharePoint-Abdeckung mit Factsheets und Bildern.",
|
||||||
|
},
|
||||||
|
"creek-views-ii": {
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"district": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
|
||||||
|
"status": "Kürzlich übergeben / Bestand",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
|
||||||
|
"unit_count": "Teil des Creek-Views-Ensembles",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Kürzlich übergeben",
|
||||||
|
"positioning": "Jüngere Ergänzung des Creek-Views-Konzepts in bewährter Lage.",
|
||||||
|
"key_facts": [
|
||||||
|
"SharePoint enthält Factsheets, Renderings und Fertigstellungs-/Foto-Material",
|
||||||
|
"Gleiche Standortlogik wie Creek Views: DHCC, Dubai Creek, kurze Wege zu Downtown und Flughafen",
|
||||||
|
"Geeignet für konservative Yield-Investoren mit schneller Vermietbarkeit",
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale SharePoint-Abdeckung; Factsheet-Dateien teils mehrsprachig/CH/RUS, deutsche Website-Texte besser aus Konzept + englischer Quelle ableiten.",
|
||||||
|
},
|
||||||
|
"azizi-riviera": {
|
||||||
|
"title": "Azizi Riviera",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Phasenweise fertiggestellt / weitere Phasen aktiv",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Retail"],
|
||||||
|
"unit_count": "12.285 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Phase prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "Master-Planned Community mit Crystal Lagoon, Lifestyle und Rendite-Logik.",
|
||||||
|
"key_facts": [
|
||||||
|
"Riviera umfasst eine 2,7 km lange schwimmbare Crystal Lagoon",
|
||||||
|
"Riviera ist in mehrere Lifestyle-Zonen gegliedert: Retail Boulevard, Lagoon Walk und Grünflächen",
|
||||||
|
"Kurze Wege nach Downtown Dubai und Meydan",
|
||||||
|
],
|
||||||
|
"research_status": "Azizi Folding Map V.10 liefert direkten Apartment-Count; lokaler SharePoint-Ordner ist weitgehend leer.",
|
||||||
|
},
|
||||||
|
"riviera-reve": {
|
||||||
|
"title": "Riviera Rêve",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Off-Plan / Ultra-Luxus-Phase",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Duplex Penthouses"],
|
||||||
|
"unit_count": "5.061 Homes in 24 Ultra-Luxus-Gebäuden",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "Exklusivste Riviera-Phase für Käufer, die Community-Vorteile mit höherer Ausstattung verbinden.",
|
||||||
|
"key_facts": [
|
||||||
|
"Web-/Pressesource: 24 Ultra-Luxus-Gebäude",
|
||||||
|
"Web-/Pressesource: über 2.600 Studios, 1.579 One-Bedroom, 876 Two-Bedroom",
|
||||||
|
"Ausstattungspositionierung mit Smart-Home, hochwertigen Materialien und 5-Sterne-Service-Ambiente",
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Pressesource ergänzt offizielle URL.",
|
||||||
|
},
|
||||||
|
"riviera-beachfront": {
|
||||||
|
"title": "Riviera Beachfront",
|
||||||
|
"district": "MBR City / Meydan",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Retail"],
|
||||||
|
"unit_count": "555 Einheiten in drei 20-geschossigen Entwicklungen",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Q4 2025 laut 2025-Bauupdates",
|
||||||
|
"positioning": "Premium-Linie der Riviera direkt an der Crystal Lagoon.",
|
||||||
|
"key_facts": [
|
||||||
|
"Bauupdate 2025: Beachfront I erreichte 70-81% Baufortschritt",
|
||||||
|
"Drei 20-geschossige Entwicklungen mit direktem Beach-/Lagoon-Zugang",
|
||||||
|
"Amenities: Pools, Gym, BBQ, Kinderspielbereiche, Yoga-Spaces, Retail",
|
||||||
|
],
|
||||||
|
"research_status": "Lokaler SharePoint-Ordner ohne verwertbare Dateien; Web-/Bauupdates liefern harte Fakten.",
|
||||||
|
},
|
||||||
|
"park-avenue": {
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"district": "Meydan / MBR City",
|
||||||
|
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Apartments", "Retail"],
|
||||||
|
"unit_count": "274 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "2023/2024 laut Konzeptbriefing",
|
||||||
|
"positioning": "Boutique-Community in MBR City, ruhiger als die großen Riviera-Türme.",
|
||||||
|
"key_facts": [
|
||||||
|
"274 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Meydan Avenue / MBR City",
|
||||||
|
"Geeignet für Eigennutzer und Resale-Investoren mit Wunsch nach kleinerer Community",
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 274 Apartments.",
|
||||||
|
},
|
||||||
|
"star": {
|
||||||
|
"title": "Star",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
|
||||||
|
"unit_count": "Offizielle Seite: 310 Studios, 46 One-Bedroom, 102 Two-Bedroom",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Al-Furjan-Klassiker mit Metro-Nähe und breiter Mietzielgruppe.",
|
||||||
|
"key_facts": [
|
||||||
|
"Offizielle Seite: Metro Station ca. 1 Minute, Mohammed Bin Zayed Road ca. 1 Minute",
|
||||||
|
"Offizielle Seite: Dubai Marina & JBR ca. 10 Minuten, Expo City ca. 12 Minuten",
|
||||||
|
"Amenities: Pool, Gym, Garage/Parking, City Views, Sauna",
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale Bildabdeckung; offizielle Seite liefert Unit-Mix und Standortzeiten.",
|
||||||
|
},
|
||||||
|
"roy-mediterranean": {
|
||||||
|
"title": "ROY Mediterranean",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Apartments", "Retail"],
|
||||||
|
"unit_count": "271 Apartments + Retail laut Konzeptbriefing",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"positioning": "Etablierte Al-Furjan-Adresse mit Volumen und Resale-Liquidität.",
|
||||||
|
"key_facts": [
|
||||||
|
"Al Furjan mit Metro-Anbindung und guter Erreichbarkeit von Jebel Ali, Dubai Marina und Expo City",
|
||||||
|
"Ground-Floor-Retail stärkt Alltagstauglichkeit und Vermietbarkeit",
|
||||||
|
"Geeignet für Yield- und Volumeninvestoren",
|
||||||
|
],
|
||||||
|
"research_status": "Lokale Bildabdeckung vorhanden; harte Unit-Zahl aus Konzeptbriefing, offizielle URL als Projektanker.",
|
||||||
|
},
|
||||||
|
"farishta": {
|
||||||
|
"title": "Farishta",
|
||||||
|
"district": "Al Furjan",
|
||||||
|
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Penthouses"],
|
||||||
|
"unit_count": "137 Studios, 124 One-Bedroom, 23 Two-Bedroom laut Azizi-Al-Furjan-Katalogauszug",
|
||||||
|
"price_from": "Verfügbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt 2020 laut Konzeptbriefing",
|
||||||
|
"positioning": "Niedriger Risiko-Einstieg in Al Furjan mit Metro- und Straßenanbindung.",
|
||||||
|
"key_facts": [
|
||||||
|
"Zwischen Sheikh Zayed Road und Sheikh Mohammed Bin Zayed Road positioniert",
|
||||||
|
"SharePoint enthält Renderings, Completion Photos und Floor Plans",
|
||||||
|
"Geeignet für Erstinvestoren und Cashflow-orientierte Käufer",
|
||||||
|
],
|
||||||
|
"research_status": "Gute lokale SharePoint-Abdeckung; Unit-Mix aus Azizi-Katalog-/Suchauszug weicht leicht vom Konzept ab und sollte vor Livegang final geprüft werden.",
|
||||||
|
},
|
||||||
|
"azizi-grand": {
|
||||||
|
"title": "Azizi Grand",
|
||||||
|
"district": "Dubai Sports City",
|
||||||
|
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
|
||||||
|
"unit_count": "411 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Q1 2026 laut Bauupdates",
|
||||||
|
"positioning": "Kurze Restlaufzeit bis Cashflow in einer sport- und familiennahen Lage.",
|
||||||
|
"key_facts": [
|
||||||
|
"411 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Building Height B+G+3P+14 laut Azizi Folding Map V.10",
|
||||||
|
"Bauupdate September 2025: 57% Baufortschritt",
|
||||||
|
"Bauupdate November 2025: 67% Baufortschritt",
|
||||||
|
"Amenities: Gym, zwei Pools, Kinderspielbereiche, BBQ, Landschaftsgärten",
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Bauupdates liefern harte Fakten.",
|
||||||
|
},
|
||||||
|
"beach-oasis": {
|
||||||
|
"title": "Beach Oasis",
|
||||||
|
"district": "Dubai Studio City",
|
||||||
|
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
|
||||||
|
"status": "Im Bau / Phase abhängig",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
|
||||||
|
"unit_count": "1.416 Apartments in 4 Buildings laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 480k-822k je Phase/Quelle; aktuelle Verfügbarkeit prüfen",
|
||||||
|
"handover": "Phase abhängig: 2024/2025 bzw. Phase 2 bis 2026 laut Webquellen",
|
||||||
|
"positioning": "Studio-City-Einstieg mit Lagunen-/Beach-Feeling im bezahlbaren Segment.",
|
||||||
|
"key_facts": [
|
||||||
|
"1.416 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Dubai Studio City, Medien- und Entertainment-Hub",
|
||||||
|
"Lagoon-style swimming pool und man-made beach",
|
||||||
|
"Outdoor courtyard, Cafes/Restaurants, Gym, landscaped gardens",
|
||||||
|
],
|
||||||
|
"research_status": "Wichtig: lokaler Treffer ist überwiegend Jaddaf Beach Oasis, nicht Studio City Beach Oasis. Für Live-Daten Studio-City-Quelle priorisieren.",
|
||||||
|
},
|
||||||
|
"burj-azizi": {
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"district": "Sheikh Zayed Road / Trade Centre",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"unit_types": ["Holiday Homes", "Freehold Apartments", "Penthouses", "Hotel", "Retail"],
|
||||||
|
"unit_count": "1.037 Residences, 725 m und 140+ Floors laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "offizielle Burj-Azizi-Seite: ab AED 8,5 Mio bis AED 1 Mrd; Launch-Presse: ab AED 10.000/sqft",
|
||||||
|
"handover": "Bis Ende 2028 laut Programm-/Pressekontext; im Konzept 2028-2030",
|
||||||
|
"positioning": "Headline-Projekt: zweithöchster Tower der Welt und einziges Freehold-Projekt auf dem Sheikh-Zayed-Road-Strip.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 725 Meter, 140+ Floors, 1.037 Residences, Sheikh Zayed Road",
|
||||||
|
"Offizielle Seite: Highest Observation Deck 649m, Highest Club 567m, Highest Hotel Lobby 498m",
|
||||||
|
"Offizielle Kontaktseite: Retail Ground-L7, Apartments Level 37-69, Penthouses Level 72-88, Observation Deck Level 130",
|
||||||
|
],
|
||||||
|
"research_status": "Azizi Folding Map V.10 liefert direkte Zahlen; sehr gute offizielle Burj-Azizi-Webquelle; keine lokale SharePoint-Abdeckung gefunden.",
|
||||||
|
},
|
||||||
|
"monaco-mansions": {
|
||||||
|
"title": "Monaco Mansions",
|
||||||
|
"district": "Dubai South / Azizi Venice",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"unit_types": ["6 Bedroom Mansions", "7 Bedroom Mansions", "8 Bedroom Mansions"],
|
||||||
|
"unit_count": "109 Mansions",
|
||||||
|
"price_from": "ab AED 45 Mio laut Konzeptbriefing",
|
||||||
|
"handover": "Q4 2026 laut Konzeptbriefing; final prüfen",
|
||||||
|
"positioning": "Exklusivstes Villen-Segment innerhalb der Venice-Community.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10 nennt 109 Villas im Azizi-Venice-Kontext",
|
||||||
|
"Positioniert für HNI-Käufer, Familien und Trophy-Asset-Investoren",
|
||||||
|
"Investmentthese ist an Dubai South, Flughafenentwicklung und Venice-Masterplan gekoppelt",
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Venice-Web-/Pressesources bestätigen Mansion-Kontext, projektgenaue Verfügbarkeit final prüfen.",
|
||||||
|
},
|
||||||
|
"azizi-venice": {
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"district": "Dubai South",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Mega-Community",
|
||||||
|
"unit_types": ["Apartments", "Villas", "Mansions", "Retail"],
|
||||||
|
"unit_count": "34.795+ Apartments, 102 Apartment Buildings und 109 Villas laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 650k laut Konzeptbriefing; aktuelle Phase prüfen",
|
||||||
|
"handover": "Phasenweise ab 2026 laut Konzeptbriefing",
|
||||||
|
"positioning": "Große Dubai-South-Wachstumsthese mit Lagoon, Cultural District und Nähe zu Al Maktoum Airport.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 34.795+ Apartments, 102 Apartment Buildings, 109 Villas",
|
||||||
|
"18 km Freshwater Lagoon, Opera House, Theatre, Exhibition Hall, Performing Arts Academy",
|
||||||
|
"Nähe zu Al Maktoum International Airport; Retail Boulevard, Hotels, Schulen, Krankenhaus",
|
||||||
|
],
|
||||||
|
"research_status": "Lokaler SharePoint-Ordner leer; mehrere Web-/Pressesources liefern harte Masterplan-Fakten.",
|
||||||
|
},
|
||||||
|
"azizi-milan": {
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"district": "Azizi Milan / Sheikh Mohammed Bin Zayed Road",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Im Bau / Master-Planned Community",
|
||||||
|
"unit_types": ["Apartments", "Retail", "Hospitality", "Mixed Use"],
|
||||||
|
"unit_count": "100 Buildings und 80.000 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "Aktuelle Gebäudephase prüfen",
|
||||||
|
"handover": "Phase abhängig",
|
||||||
|
"positioning": "AED-75-Mrd.-Masterplan mit italienischer Design-/Fashion-Positionierung.",
|
||||||
|
"key_facts": [
|
||||||
|
"Azizi Folding Map V.10: 100 Buildings und 80.000 Apartments",
|
||||||
|
"Web-/Pressesources: AED 75 Mrd. und 40 Mio sqft GFA",
|
||||||
|
"Milan Heights als lagoon-facing Enclave innerhalb Azizi Milan",
|
||||||
|
"Lage an Sheikh Mohammed Bin Zayed Road, wichtiger Verbindungsachse zwischen Emiraten",
|
||||||
|
],
|
||||||
|
"research_status": "Sehr gute lokale SharePoint-Abdeckung für einzelne AM-Gebäude und Milan Heights; Webquellen ergänzen Masterplan-Fakten.",
|
||||||
|
},
|
||||||
|
"azizi-wasel": {
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"district": "Dubai Islands",
|
||||||
|
"category": "Ultra-Prestige & Mega-Communities",
|
||||||
|
"status": "Off-Plan / New Launch",
|
||||||
|
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Penthouses"],
|
||||||
|
"unit_count": "221 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"price_from": "ab ca. AED 1,04-1,1 Mio je Quelle",
|
||||||
|
"handover": "Q2 2027 bis Q1 2028 je Quelle; final prüfen",
|
||||||
|
"positioning": "Frühphasiger Einstieg in Dubai Islands als künftige Premium-Inseldestination.",
|
||||||
|
"key_facts": [
|
||||||
|
"221 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"Building Height 3B+G+13 laut Azizi Folding Map V.10",
|
||||||
|
"Dubai Islands / Deira Waterfront",
|
||||||
|
"Studios bis 3-Bedroom Apartments sowie 3-4-Bedroom Penthouses",
|
||||||
|
"50/50 Payment Plan wird konsistent in Webquellen genannt",
|
||||||
|
],
|
||||||
|
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 221 Apartments und Building Height 3B+G+13.",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def slugify(name: str) -> str:
|
||||||
|
value = name.lower()
|
||||||
|
value = value.replace("ê", "e")
|
||||||
|
value = re.sub(r"[^a-z0-9]+", "-", value).strip("-")
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def parse_official_links() -> list[dict[str, str]]:
|
||||||
|
current_area = ""
|
||||||
|
projects: list[dict[str, str]] = []
|
||||||
|
|
||||||
|
for line in OBSIDIAN_LIST.read_text(encoding="utf-8").splitlines():
|
||||||
|
heading = re.match(r"^###\s+📍\s+(.+)$", line)
|
||||||
|
if heading:
|
||||||
|
current_area = heading.group(1).strip()
|
||||||
|
continue
|
||||||
|
|
||||||
|
link = re.match(r"- \*\*(.+?):\*\* \[(https://www\.azizidevelopments\.com/[^\]]+)\]", line.strip())
|
||||||
|
if not link:
|
||||||
|
continue
|
||||||
|
|
||||||
|
title, url = link.groups()
|
||||||
|
projects.append(
|
||||||
|
{
|
||||||
|
"slug": slugify(title),
|
||||||
|
"title": title,
|
||||||
|
"area": current_area,
|
||||||
|
"official_url": url,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return projects
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
official_links = parse_official_links()
|
||||||
|
official_by_url = {item["official_url"]: item for item in official_links}
|
||||||
|
official_by_slug = {item["slug"]: item for item in official_links}
|
||||||
|
|
||||||
|
local = json.loads(LOCAL_EXTRACTION.read_text(encoding="utf-8"))
|
||||||
|
local_projects = local["projects"]
|
||||||
|
|
||||||
|
enriched: list[dict[str, Any]] = []
|
||||||
|
for slug, project in TOP_PROJECTS.items():
|
||||||
|
local_project = local_projects.get(slug, {})
|
||||||
|
if slug == "beach-oasis":
|
||||||
|
local_project = {
|
||||||
|
"source_dirs": [],
|
||||||
|
"coverage": {"files": 0, "images": 0, "xlsx": 0, "small_fact_pdfs": 0},
|
||||||
|
"image_candidates": [],
|
||||||
|
"pdf_extracts": [],
|
||||||
|
"xlsx_extracts": [],
|
||||||
|
}
|
||||||
|
|
||||||
|
official_url = local_project.get("official_url")
|
||||||
|
official = official_by_url.get(official_url or "") or official_by_slug.get(slug)
|
||||||
|
enriched.append(
|
||||||
|
{
|
||||||
|
"slug": slug,
|
||||||
|
"title": project["title"],
|
||||||
|
"official_url": official_url or (official or {}).get("official_url"),
|
||||||
|
"official_list_area": (official or {}).get("area"),
|
||||||
|
**project,
|
||||||
|
"local_sharepoint": {
|
||||||
|
"source_dirs": local_project.get("source_dirs", []),
|
||||||
|
"coverage": local_project.get("coverage", {}),
|
||||||
|
"image_candidates": local_project.get("image_candidates", [])[:6],
|
||||||
|
"fact_sources": [item["path"] for item in local_project.get("pdf_extracts", [])]
|
||||||
|
+ [item["path"] for item in local_project.get("xlsx_extracts", [])],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
OFFICIAL_LINKS_OUTPUT.write_text(
|
||||||
|
json.dumps(
|
||||||
|
{
|
||||||
|
"source": str(OBSIDIAN_LIST),
|
||||||
|
"count": len(official_links),
|
||||||
|
"projects": official_links,
|
||||||
|
},
|
||||||
|
ensure_ascii=False,
|
||||||
|
indent=2,
|
||||||
|
),
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
TOP_PROJECTS_OUTPUT.write_text(
|
||||||
|
json.dumps(
|
||||||
|
{
|
||||||
|
"source_files": {
|
||||||
|
"official_link_list": str(OBSIDIAN_LIST),
|
||||||
|
"local_sharepoint_extraction": str(LOCAL_EXTRACTION),
|
||||||
|
},
|
||||||
|
"note": "Working research data for the B2in Dubai real-estate page. Pricing, availability and handover dates must be confirmed before publication.",
|
||||||
|
"projects": enriched,
|
||||||
|
},
|
||||||
|
ensure_ascii=False,
|
||||||
|
indent=2,
|
||||||
|
),
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f"Wrote {OFFICIAL_LINKS_OUTPUT}")
|
||||||
|
print(f"Wrote {TOP_PROJECTS_OUTPUT}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
250
dev/immobilien 07-05-2026/extract_azizi_sources.py
Normal file
250
dev/immobilien 07-05-2026/extract_azizi_sources.py
Normal file
|
|
@ -0,0 +1,250 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from openpyxl import load_workbook
|
||||||
|
from pypdf import PdfReader
|
||||||
|
|
||||||
|
|
||||||
|
ROOT = Path("dev/immobilien 07-05-2026/AZIZI SharePoint")
|
||||||
|
OUTPUT = Path("dev/immobilien 07-05-2026/azizi-extraction.json")
|
||||||
|
|
||||||
|
PROJECTS: dict[str, dict[str, Any]] = {
|
||||||
|
"mina": {
|
||||||
|
"title": "Mina",
|
||||||
|
"aliases": ["mina"],
|
||||||
|
"dirs": ["Palm Jumeirah/Mina", "Beno Photography/Mina"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/mina",
|
||||||
|
},
|
||||||
|
"royal-bay": {
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"aliases": ["royal bay"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/royal-bay",
|
||||||
|
},
|
||||||
|
"creek-views": {
|
||||||
|
"title": "Creek Views",
|
||||||
|
"aliases": ["creek views"],
|
||||||
|
"dirs": ["AI Jaddaf and DHCC/Creek Views"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views",
|
||||||
|
},
|
||||||
|
"creek-views-ii": {
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"aliases": ["creek views ii", "creek views 2"],
|
||||||
|
"dirs": ["AI Jaddaf and DHCC/Creek Views II"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-ii",
|
||||||
|
},
|
||||||
|
"azizi-riviera": {
|
||||||
|
"title": "Azizi Riviera",
|
||||||
|
"aliases": ["riviera"],
|
||||||
|
"dirs": ["MBR City/Riviera", "Beno Photography/Riviera Boulevard", "Beno Photography/Riviera Lagoon"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera",
|
||||||
|
},
|
||||||
|
"riviera-reve": {
|
||||||
|
"title": "Riviera Reve",
|
||||||
|
"aliases": ["reve", "rêve"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-reve",
|
||||||
|
},
|
||||||
|
"riviera-beachfront": {
|
||||||
|
"title": "Riviera Beachfront",
|
||||||
|
"aliases": ["riviera beachfront"],
|
||||||
|
"dirs": ["Off-Plan Projects Azizi/MBR City/Riviera Beachfront"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-beachfront",
|
||||||
|
},
|
||||||
|
"park-avenue": {
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"aliases": ["park avenue"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue",
|
||||||
|
},
|
||||||
|
"star": {
|
||||||
|
"title": "Star",
|
||||||
|
"aliases": ["star"],
|
||||||
|
"dirs": ["Al Furjan/Star"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/star",
|
||||||
|
},
|
||||||
|
"roy-mediterranean": {
|
||||||
|
"title": "ROY Mediterranean",
|
||||||
|
"aliases": ["roy mediterranean", "roy"],
|
||||||
|
"dirs": ["Al Furjan/Roy"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/roy-mediterranean",
|
||||||
|
},
|
||||||
|
"farishta": {
|
||||||
|
"title": "Farishta",
|
||||||
|
"aliases": ["farishta", "faristha"],
|
||||||
|
"dirs": ["Al Furjan/Faristha"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/farishta",
|
||||||
|
},
|
||||||
|
"azizi-grand": {
|
||||||
|
"title": "Azizi Grand",
|
||||||
|
"aliases": ["azizi grand", "grand"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-sports-city/azizi-grand",
|
||||||
|
},
|
||||||
|
"beach-oasis": {
|
||||||
|
"title": "Beach Oasis",
|
||||||
|
"aliases": ["beach oasis"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/beach-oasis",
|
||||||
|
},
|
||||||
|
"burj-azizi": {
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"aliases": ["burj azizi"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.burjazizi.com/",
|
||||||
|
},
|
||||||
|
"monaco-mansions": {
|
||||||
|
"title": "Monaco Mansions",
|
||||||
|
"aliases": ["monaco mansions", "monaco"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/monaco-mansions",
|
||||||
|
},
|
||||||
|
"azizi-venice": {
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"aliases": ["azizi venice", "venice"],
|
||||||
|
"dirs": ["Dubai South/Azizi Venice"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/azizi-venice",
|
||||||
|
},
|
||||||
|
"azizi-milan": {
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"aliases": ["azizi milan", "milan"],
|
||||||
|
"dirs": ["Azizi Milan"],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/azizi-milan/azizi-milan",
|
||||||
|
},
|
||||||
|
"azizi-wasel": {
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"aliases": ["azizi wasel", "wasel"],
|
||||||
|
"dirs": [],
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-islands/azizi-wasel",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def clean_text(value: str) -> str:
|
||||||
|
return re.sub(r"\s+", " ", value).strip()
|
||||||
|
|
||||||
|
|
||||||
|
def json_value(value: Any) -> Any:
|
||||||
|
if hasattr(value, "isoformat"):
|
||||||
|
return value.isoformat()
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def is_small_facts_pdf(path: Path) -> bool:
|
||||||
|
lower = path.name.lower()
|
||||||
|
return path.stat().st_size <= 7_000_000 and any(token in lower for token in ["fact", "payment plan"])
|
||||||
|
|
||||||
|
|
||||||
|
def extract_pdf_text(path: Path) -> str:
|
||||||
|
try:
|
||||||
|
reader = PdfReader(str(path))
|
||||||
|
text = "\n".join((page.extract_text() or "") for page in reader.pages[:2])
|
||||||
|
except Exception as exc:
|
||||||
|
return f"[PDF extraction failed: {exc}]"
|
||||||
|
|
||||||
|
return clean_text(text)[:3500]
|
||||||
|
|
||||||
|
|
||||||
|
def extract_xlsx(path: Path) -> list[list[Any]]:
|
||||||
|
rows: list[list[Any]] = []
|
||||||
|
try:
|
||||||
|
workbook = load_workbook(path, data_only=True, read_only=True)
|
||||||
|
except Exception as exc:
|
||||||
|
return [["XLSX extraction failed", str(exc)]]
|
||||||
|
|
||||||
|
for sheet in workbook.worksheets[:2]:
|
||||||
|
seen = 0
|
||||||
|
for row in sheet.iter_rows():
|
||||||
|
values = [cell.value for cell in row]
|
||||||
|
compact = [json_value(value) for value in values if value is not None]
|
||||||
|
if compact:
|
||||||
|
rows.append([sheet.title, *compact[:8]])
|
||||||
|
seen += 1
|
||||||
|
if seen >= 28:
|
||||||
|
break
|
||||||
|
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
def file_matches(path: Path, aliases: list[str]) -> bool:
|
||||||
|
haystack = str(path).lower()
|
||||||
|
return any(alias.lower() in haystack for alias in aliases)
|
||||||
|
|
||||||
|
|
||||||
|
def candidate_files(project: dict[str, Any], all_files: list[Path]) -> list[Path]:
|
||||||
|
candidates: list[Path] = []
|
||||||
|
for rel_dir in project["dirs"]:
|
||||||
|
base = ROOT / rel_dir
|
||||||
|
if base.exists():
|
||||||
|
candidates.extend([path for path in base.rglob("*") if path.is_file()])
|
||||||
|
|
||||||
|
candidates.extend(path for path in all_files if file_matches(path, project["aliases"]))
|
||||||
|
|
||||||
|
unique: dict[str, Path] = {}
|
||||||
|
for path in candidates:
|
||||||
|
unique[str(path)] = path
|
||||||
|
|
||||||
|
return list(unique.values())
|
||||||
|
|
||||||
|
|
||||||
|
def summarize_project(slug: str, project: dict[str, Any], all_files: list[Path]) -> dict[str, Any]:
|
||||||
|
files = candidate_files(project, all_files)
|
||||||
|
images = [
|
||||||
|
str(path)
|
||||||
|
for path in files
|
||||||
|
if path.suffix.lower() in {".jpg", ".jpeg", ".png", ".webp"} and path.stat().st_size <= 25_000_000
|
||||||
|
]
|
||||||
|
xlsx_files = [path for path in files if path.suffix.lower() == ".xlsx" and path.stat().st_size <= 8_000_000]
|
||||||
|
pdf_files = [path for path in files if path.suffix.lower() == ".pdf" and is_small_facts_pdf(path)]
|
||||||
|
|
||||||
|
return {
|
||||||
|
"slug": slug,
|
||||||
|
"title": project["title"],
|
||||||
|
"official_url": project["official_url"],
|
||||||
|
"source_dirs": [str(ROOT / rel_dir) for rel_dir in project["dirs"] if (ROOT / rel_dir).exists()],
|
||||||
|
"coverage": {
|
||||||
|
"files": len(files),
|
||||||
|
"images": len(images),
|
||||||
|
"xlsx": len(xlsx_files),
|
||||||
|
"small_fact_pdfs": len(pdf_files),
|
||||||
|
},
|
||||||
|
"image_candidates": images[:12],
|
||||||
|
"xlsx_extracts": [
|
||||||
|
{
|
||||||
|
"path": str(path),
|
||||||
|
"rows": extract_xlsx(path),
|
||||||
|
}
|
||||||
|
for path in xlsx_files[:4]
|
||||||
|
],
|
||||||
|
"pdf_extracts": [
|
||||||
|
{
|
||||||
|
"path": str(path),
|
||||||
|
"text": extract_pdf_text(path),
|
||||||
|
}
|
||||||
|
for path in pdf_files[:3]
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
all_files = [path for path in ROOT.rglob("*") if path.is_file()]
|
||||||
|
extraction = {
|
||||||
|
"source_root": str(ROOT),
|
||||||
|
"note": "Automated extraction from small factsheets, project-information spreadsheets and image filenames. Large brochures are intentionally skipped.",
|
||||||
|
"projects": {
|
||||||
|
slug: summarize_project(slug, project, all_files)
|
||||||
|
for slug, project in PROJECTS.items()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT.write_text(json.dumps(extraction, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||||
|
print(f"Wrote {OUTPUT}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
174
dev/immobilien 07-05-2026/umsetzungsschritte.md
Normal file
174
dev/immobilien 07-05-2026/umsetzungsschritte.md
Normal file
|
|
@ -0,0 +1,174 @@
|
||||||
|
# Umsetzungsschritte Immobilien/Azizi Preview
|
||||||
|
|
||||||
|
Stand: 2026-05-08
|
||||||
|
|
||||||
|
## Ausgangspunkt
|
||||||
|
|
||||||
|
Ziel war ein erster belastbarer Seitenentwurf fuer `https://b2in.test/immobilien`, ohne bereits das spaetere Datenbank- oder CMS-Modell festzulegen. Als Grundlage dienten das bestehende Immobilien-Frontend, die vorhandene Detailseite zu `azizi-creek-views-4`, die Konzeptnotizen im Obsidian-Vault und das von Azizi bereitgestellte SharePoint-Material.
|
||||||
|
|
||||||
|
Die Umsetzung wurde bewusst als Preview unter `/dev/immobilien-azizi` angelegt, damit Layout, Inhalte und Dramaturgie geprueft werden koennen, bevor die Inhalte in ein dauerhaftes CMS- oder Datenmodell ueberfuehrt werden.
|
||||||
|
|
||||||
|
## Eingesetzte Quellen
|
||||||
|
|
||||||
|
- Konzeptdatei: `# B2in Immobilien-Seite - Entwicklungs- & Gestaltungskonzept.md`
|
||||||
|
- Top-Projekte: `# B2In Dubai - Top-Projekte Azizi Developments.md`
|
||||||
|
- Projektliste mit offiziellen Azizi-Links: `Immobilien Dubai.md`
|
||||||
|
- Lokaler Azizi-SharePoint-Export: `dev/immobilien 07-05-2026/AZIZI SharePoint`
|
||||||
|
- Azizi Folding Map: `/Users/kevinadametz/Desktop/Azizi Folding Map V.10.pdf`
|
||||||
|
- Bestehende Laravel/Blade-Seiten:
|
||||||
|
- `resources/views/web/immobilien.blade.php`
|
||||||
|
- `resources/views/web/immobilien-show.blade.php`
|
||||||
|
|
||||||
|
## Datenextraktion und Abgleich
|
||||||
|
|
||||||
|
Zuerst wurde der grosse Azizi-SharePoint-Ordner strukturell ausgewertet. Dabei wurden Projektordner, Bildkandidaten, XLSX-Daten und kleinere Factsheet-PDFs erfasst. Grosse Marketing-Broschueren wurden bewusst nicht als Hauptquelle verwendet, weil sie viel Marketingtext und wenig harte Fakten enthalten.
|
||||||
|
|
||||||
|
Dafuer wurde das Skript `extract_azizi_sources.py` erstellt. Das Ergebnis liegt in `azizi-extraction.json`.
|
||||||
|
|
||||||
|
Anschliessend wurden die offiziellen Azizi-Projektlinks aus `Immobilien Dubai.md` extrahiert und mit den Top-Projekten aus der kuratierten Liste abgeglichen. Dafuer wurde `build_azizi_project_research.py` erstellt. Die Ergebnisse liegen in:
|
||||||
|
|
||||||
|
- `azizi-official-links.json`
|
||||||
|
- `azizi-top-projects-research.json`
|
||||||
|
|
||||||
|
Nach dem zusaetzlichen PDF-Abgleich mit der Azizi Folding Map wurden harte Stammdaten wie Einheitenzahlen, Standorte, Gebaeudeanzahl und Hoeheninformationen nachgetragen. Die gesonderte Extraktion liegt in `azizi-folding-map-extraction.json`.
|
||||||
|
|
||||||
|
## Wichtige Datenkorrekturen aus der Azizi Folding Map
|
||||||
|
|
||||||
|
Die Map hat mehrere Projektdaten konkretisiert oder bestaetigt:
|
||||||
|
|
||||||
|
- Burj Azizi: 725 Meter, 140+ Etagen, 1.037 Residences
|
||||||
|
- Azizi Riviera: 12.285 Apartments
|
||||||
|
- Azizi Venice: 102 Apartment Buildings, 34.795+ Apartments, 109 Villas
|
||||||
|
- Azizi Milan: 100 Buildings, 80.000 Apartments
|
||||||
|
- Beach Oasis: Dubai Studio City, 1.416 Apartments, vier Residential Buildings
|
||||||
|
- Park Avenue: Meydan Avenue, 274 Apartments
|
||||||
|
- Azizi Grand: Dubai Sports City, 411 Apartments
|
||||||
|
- Azizi Mina: Palm Jumeirah, 178 Apartments
|
||||||
|
- Azizi Wasel: Dubai Islands, 221 Apartments
|
||||||
|
|
||||||
|
Besonders relevant war die Klarstellung zu Beach Oasis: Fuer die neue Seite wird das Projekt in Dubai Studio City gefuehrt, nicht als Jaddaf-Projekt.
|
||||||
|
|
||||||
|
## Nachtrag: Azizi Folding Map V.10 als Leitkarte
|
||||||
|
|
||||||
|
Am 2026-05-08 wurde die lokale Datei `dev/immobilien 07-05-2026/Azizi Folding Map V.10.pdf` als aktuelle Leitquelle ergaenzt und erneut gegen die Preview-Daten abgeglichen.
|
||||||
|
|
||||||
|
Die PDF fuehrt 19 Kartenpositionen:
|
||||||
|
|
||||||
|
1. Azizi Milan
|
||||||
|
2. Burj Azizi
|
||||||
|
3. Azizi Venice
|
||||||
|
4. Azizi Riviera
|
||||||
|
5. Park Avenue
|
||||||
|
6. Creek Views I
|
||||||
|
7. Creek Views II
|
||||||
|
8. Creek Views III
|
||||||
|
9. Azizi Emerald
|
||||||
|
10. Azizi Beach Oasis
|
||||||
|
11. Azizi Vista
|
||||||
|
12. Azizi Grand
|
||||||
|
13. Azizi Mina
|
||||||
|
14. Royal Bay
|
||||||
|
15. Azizi Ruby
|
||||||
|
16. Azizi Wasel
|
||||||
|
17. Azizi Aura
|
||||||
|
18. Azizi Arian
|
||||||
|
19. Al Furjan / Ready-to-Move-Portfolio
|
||||||
|
|
||||||
|
Gegenueber der bisherigen Preview fehlten mehrere PDF-Positionen als eigene Projektdatensaetze. Ergaenzt wurden:
|
||||||
|
|
||||||
|
- Burj Azizi als echtes Detailprojekt, nicht nur als Featured-Referenz
|
||||||
|
- Creek Views III
|
||||||
|
- Azizi Emerald
|
||||||
|
- Azizi Vista
|
||||||
|
- Azizi Ruby
|
||||||
|
- Azizi Aura
|
||||||
|
- Azizi Arian
|
||||||
|
- Al Furjan Ready-to-Move Portfolio
|
||||||
|
|
||||||
|
Die Preview enthaelt dadurch nun 25 Projektdatensaetze: die 19 Leitkartenpositionen plus bereits kuratierte Zusatzprojekte aus dem B2in-Briefing, z. B. Riviera Rêve, Riviera Beachfront, Monaco Mansions, Star, ROY Mediterranean und Farishta.
|
||||||
|
|
||||||
|
Zusaetzlich wurden die englischen Lage-/Stadtteiltexte von Seite 2 als deutsche Arbeitsfassung in `resources/lang/de/immobilien-azizi.json` unter `districts` hinterlegt. Diese Texte koennen spaeter fuer Karten-Layer, Standortfilter und Detailseiten verwendet werden.
|
||||||
|
|
||||||
|
## Inhaltsstruktur
|
||||||
|
|
||||||
|
Die Inhalte fuer den Preview wurden in `resources/lang/de/immobilien-azizi.json` ausgelagert. Diese Datei enthaelt aktuell:
|
||||||
|
|
||||||
|
- Meta-Informationen fuer die Seite
|
||||||
|
- Hero-Inhalte
|
||||||
|
- Intro- und Beratungsnarrativ
|
||||||
|
- Featured-Projekt `Burj Azizi`
|
||||||
|
- Smart-Map-Pins fuer wichtige Standorte
|
||||||
|
- Projektkategorien
|
||||||
|
- 18 kuratierte Azizi-Projekte
|
||||||
|
- Market-Context-Abschnitt
|
||||||
|
- Prozess-/Beratungsabschnitt
|
||||||
|
- Mindset- und Furniture-/Service-Abschnitt
|
||||||
|
|
||||||
|
Die Projektlogik wurde nicht nach Datenbankanforderungen modelliert, sondern nach praesentationsfaehigen Website-Inhalten: Investment-Fokus, Projektstatus, Standort, Einheiten, Highlights, passende Kaeuferprofile und offizielle Azizi-Quelle.
|
||||||
|
|
||||||
|
## Frontend-Umsetzung
|
||||||
|
|
||||||
|
Es wurden zwei neue Preview-Blades erstellt:
|
||||||
|
|
||||||
|
- `resources/views/web/dev/immobilien-azizi.blade.php`
|
||||||
|
- `resources/views/web/dev/immobilien-azizi-show.blade.php`
|
||||||
|
|
||||||
|
Die Uebersichtsseite enthaelt:
|
||||||
|
|
||||||
|
- eine neue Hero-Sektion fuer Dubai/Azizi
|
||||||
|
- eine persoenlichere Marcel-/B2in-Einfuehrung
|
||||||
|
- eine hervorgehobene Burj-Azizi-Sektion
|
||||||
|
- eine einfache Smart-Map als MVP
|
||||||
|
- Projektkarten nach Investmentlogik
|
||||||
|
- Markt- und Prozessabschnitte
|
||||||
|
- CTA-Bereich
|
||||||
|
|
||||||
|
Die Detailseite enthaelt:
|
||||||
|
|
||||||
|
- Projekt-Hero mit Status, Standort und Quelle
|
||||||
|
- Quick Facts
|
||||||
|
- Investment Case
|
||||||
|
- Passendes Kaeuferprofil
|
||||||
|
- Highlights
|
||||||
|
- Verlinkung zur offiziellen Azizi-Projektseite
|
||||||
|
- Beratungs-CTA
|
||||||
|
|
||||||
|
## Routing
|
||||||
|
|
||||||
|
In `routes/web.php` wurden Preview-Routen innerhalb der bestehenden `/dev`-Gruppe ergaenzt:
|
||||||
|
|
||||||
|
- `/dev/immobilien-azizi`
|
||||||
|
- `/dev/immobilien-azizi/{slug}`
|
||||||
|
|
||||||
|
Die Seiten laden die Inhalte direkt aus `resources/lang/de/immobilien-azizi.json`. Unbekannte Slugs fuehren zu einem 404.
|
||||||
|
|
||||||
|
## UI-Anpassung nach Erstfeedback
|
||||||
|
|
||||||
|
Nach dem ersten Wurf war die zweite Sektion `IM BAU / OFF-PLAN` optisch nicht gut lesbar, weil weisse Schrift auf zu hellem Grund stand. Daraufhin wurde die komplette Featured-/Off-Plan-Sektion dunkler und staerker abgesetzt gestaltet.
|
||||||
|
|
||||||
|
Die Sektion nutzt nun einen dunklen Hintergrund mit Bild-/Overlay-Logik, damit sie sich klar von der vorherigen hellen Sektion unterscheidet und die weissen Texte lesbar bleiben.
|
||||||
|
|
||||||
|
## Tests und Pruefung
|
||||||
|
|
||||||
|
Ergaenzt wurden Feature-Tests in `tests/Feature/ImmobilienShowTest.php` fuer:
|
||||||
|
|
||||||
|
- die neue Dev-Uebersichtsseite
|
||||||
|
- die Burj-Azizi-Detailseite
|
||||||
|
- 404-Verhalten bei unbekannten Projekt-Slugs
|
||||||
|
|
||||||
|
Durchgefuehrte technische Checks:
|
||||||
|
|
||||||
|
- `php -l routes/web.php`
|
||||||
|
- `python -m json.tool resources/lang/de/immobilien-azizi.json`
|
||||||
|
- `python -m json.tool dev/immobilien 07-05-2026/azizi-folding-map-extraction.json`
|
||||||
|
- `python -m json.tool dev/immobilien 07-05-2026/azizi-top-projects-research.json`
|
||||||
|
- `git diff --check`
|
||||||
|
- `./vendor/bin/pint --dirty --format agent`
|
||||||
|
|
||||||
|
Die Laravel Feature-Tests konnten in der aktuellen lokalen CLI nicht ausgefuehrt werden, weil dort PHP 8.2 aktiv ist, das Projekt aber PHP >= 8.4 voraussetzt.
|
||||||
|
|
||||||
|
## Aktueller Stand
|
||||||
|
|
||||||
|
Der Preview ist als statische, datengetriebene Version umgesetzt. Inhalt, Projektlogik und visuelle Dramaturgie koennen damit im Browser geprueft werden, ohne dass bereits CMS-Strukturen festgelegt werden muessen.
|
||||||
|
|
||||||
|
Die wichtigsten Datenquellen sind abgeglichen. Die Azizi Folding Map hat die bisherigen Inhalte bestaetigt und mehrere harte Zahlen ergaenzt. Die naechste sinnvolle Phase waere die visuelle Feinabstimmung der Projektkarten, der Smart-Map und anschliessend die Entscheidung, welche Felder spaeter ins CMS/Datenmodell uebernommen werden.
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Wir werden die weiteren Tickets stehen
|
|
||||||
611
resources/lang/de/immobilien-azizi.json
Normal file
611
resources/lang/de/immobilien-azizi.json
Normal file
|
|
@ -0,0 +1,611 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"title": "Dubai Immobilien - B2in Preview",
|
||||||
|
"description": "Azizi Folding Map V.10 als Leitquelle: 19 Kartenpositionen plus kuratierte Zusatzprojekte in Dubai."
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"eyebrow": "Dubai Immobilien",
|
||||||
|
"title": "19 Azizi-Leitprojekte aus der Dubai-Karte. Persoenlich fuer Kaeufer eingeordnet.",
|
||||||
|
"subtitle": "Die Azizi Folding Map V.10 ist die aktuelle Leitquelle: B2in uebersetzt die Kartenpositionen, Stadtteile und Bautraegertexte in eine klare Entscheidungsarchitektur fuer deutsche Kaeufer.",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"cta_primary": "Projekte entdecken",
|
||||||
|
"cta_secondary": "Beratung anfragen",
|
||||||
|
"microcopy": "19 Kartenpositionen aus der Azizi Folding Map V.10 - ergaenzt um kuratierte Investment-Kontexte."
|
||||||
|
},
|
||||||
|
"intro": {
|
||||||
|
"title": "Marcel sortiert den Markt, bevor Sie entscheiden.",
|
||||||
|
"image": "b2in/marcel-scheibe.jpg",
|
||||||
|
"quote": "Dubai ist kein Markt fuer Bauchgefuehl. Entscheidend ist, ob Lage, Status, Zahlungsplan und Exit zur eigenen Strategie passen.",
|
||||||
|
"paragraphs": [
|
||||||
|
"Viele Projektseiten sehen auf den ersten Blick gleich aus: Renderings, Pools, Skyline, grosse Versprechen. Fuer deutsche Kaeufer ist aber nicht das schoenste Bild entscheidend, sondern die Frage, welches Projekt zur eigenen Situation passt.",
|
||||||
|
"Diese Auswahl trennt Bestandsobjekte, Near-Handover-Projekte und langfristige Off-Plan-Thesen bewusst voneinander. So entsteht kein Katalog, sondern eine Entscheidungsarchitektur."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"featured": {
|
||||||
|
"slug": "burj-azizi",
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"location": "Sheikh Zayed Road / Trade Centre",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"price_from": "ab AED 8,5 Mio laut offizieller Projektseite",
|
||||||
|
"handover": "Ende des Jahrzehnts",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"headline": "Dubais naechstes Wahrzeichen.",
|
||||||
|
"text": "725 Meter, 140+ Etagen laut Azizi Map, 7-Sterne-Hotel, vertikale Luxus-Mall und 1.037 Residences in einer Adresse. Burj Azizi ist kein normales Apartmentprojekt, sondern ein Platz in Dubais Skyline.",
|
||||||
|
"marcel_take": "Wer in Dubai langfristig in ein Trophy Asset investieren will, kommt an Burj Azizi kaum vorbei. Die These ist nicht kurzfristiger Cashflow, sondern Markenstrahlkraft, Knappheit und Wertentwicklung bis zur Uebergabe.",
|
||||||
|
"facts": ["725 m Towerhoehe", "140+ Etagen laut Azizi Map", "1.037 Residences laut Azizi Map", "Sheikh Zayed Road", "Observation Deck auf 649 m", "Apartments, Penthouses, Hotel und Retail"]
|
||||||
|
},
|
||||||
|
"map": {
|
||||||
|
"title": "Dubai im Ueberblick",
|
||||||
|
"subtitle": "Die Karte ist bewusst als Smart-MVP angelegt: Sie zeigt Lagecluster, Status und Käuferlogik, ohne externe Kartendienste oder schwere Skripte.",
|
||||||
|
"pins": [
|
||||||
|
{"slug": "mina", "x": 28, "y": 45},
|
||||||
|
{"slug": "royal-bay", "x": 31, "y": 47},
|
||||||
|
{"slug": "creek-views", "x": 63, "y": 41},
|
||||||
|
{"slug": "creek-views-ii", "x": 65, "y": 42},
|
||||||
|
{"slug": "azizi-riviera", "x": 56, "y": 55},
|
||||||
|
{"slug": "riviera-reve", "x": 58, "y": 57},
|
||||||
|
{"slug": "riviera-beachfront", "x": 60, "y": 56},
|
||||||
|
{"slug": "park-avenue", "x": 53, "y": 58},
|
||||||
|
{"slug": "star", "x": 38, "y": 68},
|
||||||
|
{"slug": "roy-mediterranean", "x": 36, "y": 70},
|
||||||
|
{"slug": "farishta", "x": 40, "y": 71},
|
||||||
|
{"slug": "azizi-grand", "x": 46, "y": 77},
|
||||||
|
{"slug": "beach-oasis", "x": 51, "y": 75},
|
||||||
|
{"slug": "burj-azizi", "x": 61, "y": 46},
|
||||||
|
{"slug": "monaco-mansions", "x": 31, "y": 86},
|
||||||
|
{"slug": "azizi-venice", "x": 34, "y": 87},
|
||||||
|
{"slug": "azizi-milan", "x": 49, "y": 63},
|
||||||
|
{"slug": "azizi-wasel", "x": 73, "y": 28},
|
||||||
|
{"slug": "creek-views-iii", "x": 67, "y": 43},
|
||||||
|
{"slug": "azizi-emerald", "x": 66, "y": 40},
|
||||||
|
{"slug": "azizi-vista", "x": 53, "y": 74},
|
||||||
|
{"slug": "azizi-ruby", "x": 48, "y": 63},
|
||||||
|
{"slug": "azizi-aura", "x": 33, "y": 62},
|
||||||
|
{"slug": "azizi-arian", "x": 35, "y": 61},
|
||||||
|
{"slug": "al-furjan-ready", "x": 37, "y": 69}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"districts": {
|
||||||
|
"title": "Stadtteile aus der Azizi Folding Map",
|
||||||
|
"subtitle": "Die zweite Seite der PDF beschreibt nicht nur einzelne Projekte, sondern auch Lagecluster. Diese Texte sind als deutsche Arbeitsfassung hinterlegt und koennen spaeter in Karte, Filter und Detailseiten einfliessen.",
|
||||||
|
"items": [
|
||||||
|
{"name": "Dubai South", "projects": "Azizi Venice, Monaco Mansions", "description": "Dubai South wird in der PDF als wasserorientiertes Zukunftsquartier beschrieben: Lagune, Villen, Mansions, Luxus-Apartments, Boutiquen, internationale Gastronomie und Opera House. Fuer B2in ist das die langfristige Airport- und Quartierswette."},
|
||||||
|
{"name": "Dubailand / Azizi Milan", "projects": "Azizi Milan", "description": "Azizi Milan wird als italienisch inspiriertes Fashion- und Lifestyle-Ziel nahe IMG Worlds und Global Village positioniert. Der Fokus liegt auf Gruenflaechen, Einkaufsstrassen, Retail, Hospitality und einem langfristigen Masterplan."},
|
||||||
|
{"name": "Dubai Healthcare City / Al Jaddaf", "projects": "Creek Views I, II, III, Azizi Emerald", "description": "Creek Views wird als moderner, umweltbewusst positionierter Wohncluster in Dubai Healthcare City beschrieben, nahe DXB, Dubai Festival City, Downtown und Dubai Creek. Die Lage ist vor allem fuer zentrale Vermietbarkeit relevant."},
|
||||||
|
{"name": "Dubai Studio City", "projects": "Azizi Beach Oasis, Azizi Vista", "description": "Studio City wird als moderner Wohnstandort mit Beach-Oasis-Lagune, kuenstlichem Strand, zeitgenoessischer Architektur, Gruenflaechen und Freizeitangeboten beschrieben. Fuer B2in ist das ein Einstiegs- und Lifestyle-Cluster."},
|
||||||
|
{"name": "Meydan", "projects": "Azizi Riviera, Park Avenue", "description": "Die PDF beschreibt Riviera als franzoesisch inspirierte Waterfront-Community mit Crystal Lagoon, Promenade, zentralem Boulevard, Restaurants, Sport- und Freizeitangeboten. Die Staerke liegt in Community-Groesse und Downtown-Naehe."},
|
||||||
|
{"name": "Sheikh Zayed Road", "projects": "Burj Azizi", "description": "Burj Azizi wird als architektonisches Wahrzeichen im Herzen Dubais beschrieben. Laut PDF haelt das Projekt mehrere Weltrekorde, darunter hoechste Lobby, hoechstes Kino, hoechster Nachtclub und hoechste Aussichtsplattform."},
|
||||||
|
{"name": "Palm Jumeirah", "projects": "Azizi Mina, Royal Bay", "description": "Mina wird als Luxus-Beachfront-Community auf dem oestlichen Halbmond der Palm Jumeirah beschrieben, nahe Fuenf-Sterne-Hotels und Resorts, mit grosszuegigen Apartments, Penthouses, Pool, Gym und privatem Strandzugang."},
|
||||||
|
{"name": "Al Furjan", "projects": "Al-Furjan-Bestand, Star, ROY Mediterranean, Farishta", "description": "Al Furjan wird als beliebtes Wohnquartier nahe Al Maktoum International Airport, Expo City, Metro, MBZ Road, Jebel Ali und Dubai Marina beschrieben. Fuer B2in ist das ein fertiger, gut angebundener Yield-Cluster."},
|
||||||
|
{"name": "Dubai Islands", "projects": "Azizi Wasel", "description": "Dubai Islands steht in der Leitkarte als neue Inselpositionierung. Fuer die Website wird daraus eine fruehe Lagewette mit Premium- und Waterfront-Potenzial."},
|
||||||
|
{"name": "Jebel Ali", "projects": "Azizi Aura, Azizi Arian", "description": "Jebel Ali wird ueber die Karte als eigener suedwestlicher Wachstumskorridor sichtbar. Fuer Kaeufer zaehlen hier Anbindung, Naehe zu JAFZA und die Entwicklung entlang der Achse Richtung Dubai South."},
|
||||||
|
{"name": "Jumeirah Village Circle", "projects": "Azizi Ruby", "description": "JVC erscheint in der PDF ueber Azizi Ruby als etablierter Wohnkreis im mittleren Dubai. Fuer B2in ist das ein breiter Mietermarkt mit urbaner Alltagslogik statt reiner Trophy-Asset-Positionierung."}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"key": "ready-prestige",
|
||||||
|
"title": "Sofort verfuegbar - Luxus & Prestige",
|
||||||
|
"intro": "Fertiggestellte Adressen fuer Kaeufer, die nicht auf Baufortschritt warten wollen. Verfuegbarkeit laeuft ueber den Resale-Markt."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "meydan",
|
||||||
|
"title": "Flaggschiff Meydan - Riviera & MBR City",
|
||||||
|
"intro": "Master-Planned Communities und kleinere MBR-City-Adressen rund um Crystal Lagoon, Downtown-Naehe und Lifestyle-Vermietung."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "al-furjan-yield",
|
||||||
|
"title": "Ready Rendite - Al-Furjan-Klassiker",
|
||||||
|
"intro": "Etablierte Bestandsobjekte mit Metro- und Strassenanbindung fuer klassische Yield-Strategien."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "near-handover",
|
||||||
|
"title": "Bald bezugsfertig - kurze Wartezeit bis Cashflow",
|
||||||
|
"intro": "Fortgeschrittene Bauphasen fuer Kaeufer, die Off-Plan-Vorteile mit schnellerer Vermietbarkeit verbinden wollen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "healthcare-city",
|
||||||
|
"title": "Dubai Healthcare City - Creek & Commercial",
|
||||||
|
"intro": "Zentrale Creek-nahe Projekte zwischen Healthcare City, Downtown, Festival City und Flughafen - inklusive Commercial-Position Azizi Emerald."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "studio-city",
|
||||||
|
"title": "Dubai Studio City - Lifestyle-Einstieg",
|
||||||
|
"intro": "Beach-, Lagoon- und Studio-City-Logik fuer Kaeufer, die ein bezahlbareres Lifestyle-Segment mit klarer Mietzielgruppe suchen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "growth-corridors",
|
||||||
|
"title": "Weitere Wachstumskorridore der Leitkarte",
|
||||||
|
"intro": "Zusaetzliche PDF-Positionen in Jebel Ali, JVC und Al Furjan, die fuer die Kartenlogik und spaetere Standortfilter wichtig sind."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "mega-communities",
|
||||||
|
"title": "Mega-Communities & Trophy Assets",
|
||||||
|
"intro": "Langfristige Off-Plan-Thesen: Skyline, neue Stadtteile, Dubai South, Dubai Islands und grosse Masterplaene."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"slug": "mina",
|
||||||
|
"title": "Mina",
|
||||||
|
"category": "ready-prestige",
|
||||||
|
"location": "Palm Jumeirah",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Eigennutzer mit Palm-Praeferenz, Bestandsinvestoren",
|
||||||
|
"price_from": "ab AED 2,6 Mio laut Briefing",
|
||||||
|
"handover": "Fertiggestellt 2021",
|
||||||
|
"units": "178 Apartments + 4 Penthouses",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/mina",
|
||||||
|
"short": "Etablierte Palm-Adresse mit starker Lagenlogik statt klassischer Off-Plan-Wette.",
|
||||||
|
"marcel_take": "Mina ist fuer mich eine reine Lagenentscheidung: Wer auf der Palm wohnen oder vermieten will, kauft hier eine etablierte Adresse mit Prestige und Resale-Logik.",
|
||||||
|
"highlights": ["Palm Jumeirah, oestlicher Halbmond", "Bestandsobjekt mit Verfuegbarkeit auf Anfrage", "Prestige-Lage fuer Eigennutzung oder Vermietung"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "burj-azizi",
|
||||||
|
"title": "Burj Azizi",
|
||||||
|
"category": "mega-communities",
|
||||||
|
"location": "Sheikh Zayed Road / Trade Centre",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Trophy-Asset-Kaeufer, Top-Investoren und langfristige Vermoegensanlage",
|
||||||
|
"price_from": "ab AED 8,5 Mio laut offizieller Projektseite",
|
||||||
|
"handover": "Ende des Jahrzehnts",
|
||||||
|
"units": "1.037 Residences laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"official_url": "https://www.burjazizi.com/",
|
||||||
|
"short": "Dubais naechstes Wahrzeichen auf der Sheikh Zayed Road.",
|
||||||
|
"marcel_take": "Burj Azizi ist kein normales Apartmentprojekt. Wer hier einsteigt, kauft eine Skyline-These: Knappheit, Markenstrahlkraft und eine lange Wertentwicklungsphase bis zur Uebergabe.",
|
||||||
|
"highlights": ["725 Meter Towerhoehe laut Azizi Folding Map V.10", "140+ Etagen laut Azizi Folding Map V.10", "1.037 Residences", "Weltrekorde laut PDF: hoechste Lobby, hoechstes Kino, hoechster Nachtclub und hoechste Aussichtsplattform", "7-Sterne-Hotel, vertikale Luxus-Mall und Residences in einer Adresse"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "royal-bay",
|
||||||
|
"title": "Royal Bay",
|
||||||
|
"category": "ready-prestige",
|
||||||
|
"location": "Palm Jumeirah",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Eigennutzer mit Wunsch nach Privatheit",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"units": "90 Apartments + 2 Penthouses",
|
||||||
|
"image": "b2in/accommodation-1.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/palm-jumeirah/royal-bay",
|
||||||
|
"short": "Kleinere, privatere Palm-Jumeirah-Adresse gegenueber Mina.",
|
||||||
|
"marcel_take": "Royal Bay ist interessant, wenn Sie die Palm wollen, aber keine grosse Anlage. Das Projekt wirkt intimer und spricht eher Eigennutzer an.",
|
||||||
|
"highlights": ["Palm Jumeirah", "Bewusst kleinere Hausgemeinschaft", "Resale-Verfuegbarkeit individuell pruefen"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views-iii",
|
||||||
|
"title": "Creek Views III",
|
||||||
|
"category": "healthcare-city",
|
||||||
|
"location": "Dubai Healthcare City / Al Jaddaf",
|
||||||
|
"status": "Im Bau / Creek-Cluster",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Kaeufer mit Fokus auf zentrale Creek-Lage und neuere Bauphase",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "290 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-iii",
|
||||||
|
"short": "Dritte Creek-Views-Position aus der PDF-Leitkarte.",
|
||||||
|
"marcel_take": "Creek Views III ergaenzt die bestehende Creek-Views-Logik um eine weitere Bauphase. Fuer die Beratung ist wichtig, die konkrete Verfuegbarkeit und den Baufortschritt gegen Creek Views I und II abzugleichen.",
|
||||||
|
"highlights": ["Dubai Healthcare City / Al Jaddaf", "290 Apartments laut Azizi Folding Map V.10", "Gebaeudehoehe UG+B+G+2P+19 laut PDF", "Nahe Dubai Creek, Downtown, Festival City und DXB"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-emerald",
|
||||||
|
"title": "Azizi Emerald",
|
||||||
|
"category": "healthcare-city",
|
||||||
|
"location": "Dubai Healthcare City",
|
||||||
|
"status": "Commercial / PDF-Leitkarte",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Commercial-Investoren und Kaeufer mit Retail-/Office-These",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "96 Units laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/integriertes-model.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/azizi-emerald",
|
||||||
|
"short": "Commercial-Position im Healthcare-City-Cluster.",
|
||||||
|
"marcel_take": "Emerald faellt aus der reinen Wohnlogik heraus. Genau deshalb sollte es auf der Seite sichtbar sein: Es ist kein Standard-Apartmentcase, sondern eine Commercial-These fuer Kaeufer mit anderem Risiko- und Nutzungsprofil.",
|
||||||
|
"highlights": ["Commercial-Kategorie laut Azizi Folding Map V.10", "96 Units laut PDF", "Dubai Healthcare City", "Als eigener Beratungsfall statt normale Wohnkarte behandeln"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views",
|
||||||
|
"title": "Creek Views",
|
||||||
|
"category": "ready-prestige",
|
||||||
|
"location": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"status": "Fertiggestellt / Bestand",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Cashflow-orientierte Investoren",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"units": "634 Einheiten laut Briefing",
|
||||||
|
"image": "b2in/hero-immobilien.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views",
|
||||||
|
"short": "Zentrale Creek-Lage mit schneller Erreichbarkeit von Downtown und Flughafen.",
|
||||||
|
"marcel_take": "Creek Views ist kein Hochglanz-Versprechen, sondern ein etablierter Cashflow-Case: zentrale Lage, bestehende Nachfrage, kein Warten auf Uebergabe.",
|
||||||
|
"highlights": ["Dubai Creek ca. 2 Minuten", "Downtown Dubai und DXB ca. 7 Minuten laut Factsheet", "Studios, 1- und 2-Bedroom-Apartments"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "creek-views-ii",
|
||||||
|
"title": "Creek Views II",
|
||||||
|
"category": "ready-prestige",
|
||||||
|
"location": "Al Jaddaf / Dubai Healthcare City",
|
||||||
|
"status": "Kuerzlich uebergeben / Bestand",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Yield-Investoren und Erstkaeufer",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Kuerzlich uebergeben",
|
||||||
|
"units": "Teil des Creek-Views-Ensembles",
|
||||||
|
"image": "b2in/accommodation-2.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-healthcare-city/creek-views-ii",
|
||||||
|
"short": "Jüngere Ergaenzung der bewaehrten Creek-Views-Logik.",
|
||||||
|
"marcel_take": "Gleiche Standortthese wie Creek Views, aber juenger im Bau. Fuer konservative Investoren ist das eine sehr nachvollziehbare Variante.",
|
||||||
|
"highlights": ["DHCC und Dubai Creek", "Bestehende Vermietungsnachfrage", "Jüngeres Gebaeude als Creek Views"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-riviera",
|
||||||
|
"title": "Azizi Riviera",
|
||||||
|
"category": "meydan",
|
||||||
|
"location": "MBR City / Meydan",
|
||||||
|
"status": "Phasenweise fertiggestellt / aktiv",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Renditeorientierte Erstkaeufer und Lifestyle-Familien",
|
||||||
|
"price_from": "Aktuelle Phase pruefen",
|
||||||
|
"handover": "Phase abhaengig",
|
||||||
|
"units": "12.285 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/ecosystem-hero.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera",
|
||||||
|
"short": "Azizis groesste Master-Planned Community mit Crystal Lagoon.",
|
||||||
|
"marcel_take": "Riviera funktioniert doppelt: als Lifestyle-Adresse und als Renditeobjekt. Wer innerhalb der Community mehr Exklusivitaet will, schaut auf Beachfront oder Rêve.",
|
||||||
|
"highlights": ["12.285 Apartments laut Azizi Map", "2,7 km schwimmbare Crystal Lagoon", "Downtown- und Meydan-Naehe", "Mehrere Phasen und Produktlinien"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-reve",
|
||||||
|
"title": "Riviera Rêve",
|
||||||
|
"category": "meydan",
|
||||||
|
"location": "MBR City / Meydan",
|
||||||
|
"status": "Off-Plan / Ultra-Luxus",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Kaeufer mit Wunsch nach Community plus Exklusivitaet",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Phase abhaengig",
|
||||||
|
"units": "5.061 Homes in 24 Gebaeuden laut Webabgleich",
|
||||||
|
"image": "b2in/best-of-two-world.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-reve",
|
||||||
|
"short": "Die gehobenere Linie innerhalb der Riviera-Community.",
|
||||||
|
"marcel_take": "Rêve ist sinnvoll, wenn Sie Riviera grundsaetzlich ueberzeugt, aber nicht in einem Standardturm wohnen wollen.",
|
||||||
|
"highlights": ["24 Ultra-Luxus-Gebaeude", "Studios bis Duplex-Penthouses", "Premium-Positionierung innerhalb Riviera"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "riviera-beachfront",
|
||||||
|
"title": "Riviera Beachfront",
|
||||||
|
"category": "meydan",
|
||||||
|
"location": "MBR City / Meydan",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Lifestyle-Kaeufer und Premium-Mieter-Fokus",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Q4 2025 laut Bauupdates",
|
||||||
|
"units": "555 Einheiten in drei Entwicklungen laut Webabgleich",
|
||||||
|
"image": "b2in/integriertes-model.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/riviera-beachfront",
|
||||||
|
"short": "Premium-Linie direkt am Crystal-Lagoon-Walk.",
|
||||||
|
"marcel_take": "Beachfront ist der seltene Fall: Premium-Lage innerhalb einer grossen Community und gleichzeitig relativ kurze Zeit bis zur Vermietbarkeit.",
|
||||||
|
"highlights": ["Direkte Lagoon-Lage", "Studios, 1BR, 2BR und Retail", "Pools, Gym, BBQ und Yoga-Spaces"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "park-avenue",
|
||||||
|
"title": "Park Avenue",
|
||||||
|
"category": "meydan",
|
||||||
|
"location": "Meydan / MBR City",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Eigennutzer und Resale-Investoren",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "2023/2024 laut Briefing",
|
||||||
|
"units": "274 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/partner-benefits-developer.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/meydan/park-avenue",
|
||||||
|
"short": "Boutique-Community in MBR City, ruhiger als Riviera.",
|
||||||
|
"marcel_take": "Park Avenue ist fuer Kaeufer spannend, die MBR City wollen, aber bewusst keine Grossanlage suchen.",
|
||||||
|
"highlights": ["274 Apartments laut Azizi Map", "Meydan Avenue / MBR City", "Ruhigere Community-Logik in MBR City"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "star",
|
||||||
|
"title": "Star",
|
||||||
|
"category": "al-furjan-yield",
|
||||||
|
"location": "Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Yield-Investoren",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"units": "310 Studios, 46 1BR, 102 2BR laut offizieller Seite",
|
||||||
|
"image": "b2in/accommodation-1.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/star",
|
||||||
|
"short": "Al-Furjan-Klassiker mit Metro-Naehe und breiter Mietzielgruppe.",
|
||||||
|
"marcel_take": "Star ist kein Spekulationsobjekt, sondern ein etablierter Al-Furjan-Case: Lage, Mietmarkt und verschiedene Wohnungstypen sind bereits greifbar.",
|
||||||
|
"highlights": ["Metro ca. 1 Minute laut Azizi", "Dubai Marina und JBR ca. 10 Minuten", "Pool, Gym, Sauna und Parking"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "roy-mediterranean",
|
||||||
|
"title": "ROY Mediterranean",
|
||||||
|
"category": "al-furjan-yield",
|
||||||
|
"location": "Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Volumeninvestoren und Yield-Fokus",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt",
|
||||||
|
"units": "271 Apartments + Retail",
|
||||||
|
"image": "b2in/accommodation-2.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/roy-mediterranean",
|
||||||
|
"short": "Etablierte Al-Furjan-Adresse mit Retail im Erdgeschoss.",
|
||||||
|
"marcel_take": "Wenn Sie in Dubai Volumen und Liquiditaet im Resale-Markt suchen, gehoert ROY Mediterranean zu den nachvollziehbaren Bestandsadressen.",
|
||||||
|
"highlights": ["Al Furjan", "Ground-Floor-Retail", "Bestand mit Vermietungslogik"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "farishta",
|
||||||
|
"title": "Farishta",
|
||||||
|
"category": "al-furjan-yield",
|
||||||
|
"location": "Al Furjan",
|
||||||
|
"status": "Fertiggestellt / Resale",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Erstinvestoren mit niedrigem Risikoappetit",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt 2020",
|
||||||
|
"units": "Studios, 1BR, 2BR und Penthouses",
|
||||||
|
"image": "b2in/room-3.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan/farishta",
|
||||||
|
"short": "Einfacher Einstieg in eine etablierte Al-Furjan-Lage.",
|
||||||
|
"marcel_take": "Farishta ist fuer Erstinvestoren interessant, weil hier wenig erklaert werden muss: fertig, angebunden, bestehender Mietmarkt.",
|
||||||
|
"highlights": ["Zwischen SZR und SMBZ Road", "Route-2020-/Metro-Logik", "SharePoint mit Completion Photos und Floor Plans"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-grand",
|
||||||
|
"title": "Azizi Grand",
|
||||||
|
"category": "near-handover",
|
||||||
|
"location": "Dubai Sports City",
|
||||||
|
"status": "Im Bau / Near Handover",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Investoren mit kurzem Anlagehorizont",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Q1 2026 laut Bauupdates",
|
||||||
|
"units": "411 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/ecosystem_result.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-sports-city/azizi-grand",
|
||||||
|
"short": "Fortgeschrittener Bau in Dubai Sports City.",
|
||||||
|
"marcel_take": "Grand ist interessant, weil die Wartezeit bis zur ersten Mieteinnahme ueberschaubar ist. Die Lage spricht Sport-, Bildungs- und Familienzielgruppen an.",
|
||||||
|
"highlights": ["411 Apartments laut Azizi Map", "B+G+3P+14 laut Azizi Map", "Baufortschritt 57-67 Prozent in 2025-Updates", "Gym, zwei Pools, Kinderspielbereiche, BBQ"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "beach-oasis",
|
||||||
|
"title": "Beach Oasis",
|
||||||
|
"category": "near-handover",
|
||||||
|
"location": "Dubai Studio City",
|
||||||
|
"status": "Im Bau / Phase abhaengig",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Junge Investoren und lifestyle-orientierte Erstkaeufer",
|
||||||
|
"price_from": "ab ca. AED 480k-822k je Phase/Quelle",
|
||||||
|
"handover": "Phase abhaengig",
|
||||||
|
"units": "1.416 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/room-2.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/beach-oasis",
|
||||||
|
"short": "Studio-City-Einstieg mit Lagunen- und Beach-Feeling.",
|
||||||
|
"marcel_take": "Beach Oasis bringt Lifestyle in ein bezahlbares Einstiegssegment. Wichtig ist, Studio City nicht mit Jaddaf Beach Oasis zu verwechseln.",
|
||||||
|
"highlights": ["1.416 Apartments laut Azizi Map", "Vier Residential Buildings laut Azizi Map", "Dubai Studio City", "Lagoon-style Pool und man-made beach"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-vista",
|
||||||
|
"title": "Azizi Vista",
|
||||||
|
"category": "studio-city",
|
||||||
|
"location": "Dubai Studio City",
|
||||||
|
"status": "Residential / PDF-Leitkarte",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Lifestyle-orientierte Kaeufer mit Studio-City-Fokus",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "163 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/room-2.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/studio-city/vista",
|
||||||
|
"short": "Kompakter Studio-City-Baustein neben Beach Oasis.",
|
||||||
|
"marcel_take": "Vista gehoert in die gleiche Standortlogik wie Beach Oasis, aber mit kleinerem Volumen. Fuer Kaeufer ist der direkte Vergleich beider Studio-City-Optionen wichtiger als ein isolierter Blick auf Renderings.",
|
||||||
|
"highlights": ["163 Apartments laut Azizi Folding Map V.10", "Dubai Studio City", "Gebaeudehoehe 2B+G+8 laut PDF", "Ergaenzt den Beach-Oasis-Cluster"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "monaco-mansions",
|
||||||
|
"title": "Monaco Mansions",
|
||||||
|
"category": "mega-communities",
|
||||||
|
"location": "Dubai South / Azizi Venice",
|
||||||
|
"status": "Im Bau / Off-Plan",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "HNI-Kaeufer, Familien, Trophy-Asset-Investoren",
|
||||||
|
"price_from": "ab AED 45 Mio laut Briefing",
|
||||||
|
"handover": "Q4 2026 laut Briefing, final pruefen",
|
||||||
|
"units": "109 Villas/Mansions im Azizi-Venice-Kontext laut Azizi Map",
|
||||||
|
"image": "b2in/best-of-two-worlds.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/monaco-mansions",
|
||||||
|
"short": "Das Villen- und Mansion-Segment innerhalb der Venice-These.",
|
||||||
|
"marcel_take": "Monaco Mansions ist kein breites Investmentprodukt. Das ist eine Trophy-Asset-These fuer Kaeufer, die Venice verstehen und im obersten Segment einsteigen wollen.",
|
||||||
|
"highlights": ["109 Villas/Mansions im Venice-Kontext laut Azizi Map", "6-, 7- und 8-Bedroom Mansions", "Teil der Azizi-Venice-Community", "Dubai-South-Wachstumsthese"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-ruby",
|
||||||
|
"title": "Azizi Ruby",
|
||||||
|
"category": "growth-corridors",
|
||||||
|
"location": "Jumeirah Village Circle",
|
||||||
|
"status": "Residential / PDF-Leitkarte",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Kaeufer mit Fokus auf etablierten Mietermarkt und JVC-Alltagslage",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "260 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/accommodation-1.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jumeirah-village-circle/azizi-ruby",
|
||||||
|
"short": "JVC-Position aus der PDF-Leitkarte.",
|
||||||
|
"marcel_take": "Ruby bringt JVC in die Auswahl. Das ist weniger Skyline-Erzaehlung und mehr Alltagsmarkt: ein etablierter Wohnkreis mit breiter Mietzielgruppe und guter Vergleichbarkeit.",
|
||||||
|
"highlights": ["260 Apartments laut Azizi Folding Map V.10", "Jumeirah Village Circle", "Gebaeudehoehe 3B+G+5P+14 laut PDF", "Als eigener Standortfilter fuer JVC relevant"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-aura",
|
||||||
|
"title": "Azizi Aura",
|
||||||
|
"category": "growth-corridors",
|
||||||
|
"location": "Jebel Ali",
|
||||||
|
"status": "Residential / PDF-Leitkarte",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Kaeufer mit Fokus auf suedwestliche Anbindung, Jebel Ali und Expo-/DWC-Achse",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "479 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/accommodation-2.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/aura",
|
||||||
|
"short": "Jebel-Ali-Wohnposition auf der Achse Richtung Dubai South.",
|
||||||
|
"marcel_take": "Aura ist ein Standortcase fuer Kaeufer, die nicht nur Downtown denken. Jebel Ali, JAFZA, Expo City und die suedwestliche Wachstumsachse koennen fuer Vermietung und Alltag relevanter sein als ein klassischer Touristenblick.",
|
||||||
|
"highlights": ["479 Apartments laut Azizi Folding Map V.10", "Jebel Ali", "Gebaeudehoehe B+G+2P+17 laut PDF", "Relevant fuer JAFZA-/Dubai-South-Achse"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-arian",
|
||||||
|
"title": "Azizi Arian",
|
||||||
|
"category": "growth-corridors",
|
||||||
|
"location": "Jebel Ali",
|
||||||
|
"status": "Residential / PDF-Leitkarte",
|
||||||
|
"status_group": "construction",
|
||||||
|
"buyer_profile": "Investoren mit Fokus auf Jebel Ali und suedwestliche Dubai-Entwicklung",
|
||||||
|
"price_from": "Aktuelle Verfuegbarkeit pruefen",
|
||||||
|
"handover": "Final pruefen",
|
||||||
|
"units": "623 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/room-3.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/jebel-ali/azizi-arian",
|
||||||
|
"short": "Groesserer Jebel-Ali-Baustein aus der PDF-Leitkarte.",
|
||||||
|
"marcel_take": "Arian ist im Vergleich zu Aura der groessere Jebel-Ali-Case. Fuer B2in sollte hier besonders geprueft werden, welche Einheitstypen aktiv verfuegbar sind und wie stark die Mietnachfrage aus JAFZA, Expo City und DWC wirkt.",
|
||||||
|
"highlights": ["623 Apartments laut Azizi Folding Map V.10", "Jebel Ali", "Gebaeudehoehe 3B+G+M+5P+17 laut PDF", "Suedwestlicher Wachstumskorridor"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "al-furjan-ready",
|
||||||
|
"title": "Al Furjan Ready-to-Move Portfolio",
|
||||||
|
"category": "growth-corridors",
|
||||||
|
"location": "Al Furjan",
|
||||||
|
"status": "Ready to Move In / Portfolio",
|
||||||
|
"status_group": "ready",
|
||||||
|
"buyer_profile": "Bestandskaeufer mit Yield-Fokus und Bedarf an konkreter Verfuegbarkeitspruefung",
|
||||||
|
"price_from": "Verfuegbarkeit auf Anfrage",
|
||||||
|
"handover": "Fertiggestellt / Ready to Move In laut PDF",
|
||||||
|
"units": "5.172 Apartments laut Azizi Folding Map V.10",
|
||||||
|
"image": "b2in/accommodation-1.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/al-furjan",
|
||||||
|
"short": "PDF-Portfolioeintrag fuer Azizis fertige Al-Furjan-Bestandsprojekte.",
|
||||||
|
"marcel_take": "Die PDF fuehrt Al Furjan als Portfolio-Position, nicht nur als einzelnes Gebaeude. Fuer die Website ist das nuetzlich: Star, ROY Mediterranean und Farishta bleiben konkrete Beispiele, waehrend dieser Eintrag den gesamten fertigen Al-Furjan-Bestand erklaert.",
|
||||||
|
"highlights": ["5.172 Apartments laut Azizi Folding Map V.10", "Ready to Move In laut PDF", "Nahe Metro, MBZ Road, Jebel Ali, Dubai Marina, Expo City und Al Maktoum International Airport", "Portfolio-Logik fuer mehrere fertige Al-Furjan-Projekte"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-venice",
|
||||||
|
"title": "Azizi Venice",
|
||||||
|
"category": "mega-communities",
|
||||||
|
"location": "Dubai South",
|
||||||
|
"status": "Im Bau / Mega-Community",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Off-Plan-Investoren mit Wachstumsthese",
|
||||||
|
"price_from": "ab ca. AED 650k laut Briefing",
|
||||||
|
"handover": "Phasenweise ab 2026",
|
||||||
|
"units": "34.795+ Apartments, 102 Apartment Buildings, 109 Villas laut Azizi Map",
|
||||||
|
"image": "b2in/ecosystem_start.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-south/azizi-venice",
|
||||||
|
"short": "Grosses Dubai-South-Quartier mit Lagoon, Cultural District und Airport-These.",
|
||||||
|
"marcel_take": "Venice ist eine langfristige Quartierswette. Wer frueh einsteigt, investiert nicht nur in ein Gebaeude, sondern in die Entwicklung eines neuen Dubai-South-Clusters.",
|
||||||
|
"highlights": ["34.795+ Apartments laut Azizi Map", "102 Apartment Buildings und 109 Villas laut Azizi Map", "Crystal Lagoon, Opera House, Retail Boulevard und Hotels", "Nahe Al Maktoum International Airport"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-milan",
|
||||||
|
"title": "Azizi Milan",
|
||||||
|
"category": "mega-communities",
|
||||||
|
"location": "Sheikh Mohammed Bin Zayed Road",
|
||||||
|
"status": "Im Bau / Masterplan",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Strategische Investoren und Portfoliodiversifikation",
|
||||||
|
"price_from": "Aktuelle Gebaeudephase pruefen",
|
||||||
|
"handover": "Phase abhaengig",
|
||||||
|
"units": "100 Buildings und 80.000 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/partner-hero.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/azizi-milan/azizi-milan",
|
||||||
|
"short": "AED-75-Mrd.-Masterplan mit italienischer Design- und Fashion-Positionierung.",
|
||||||
|
"marcel_take": "Milan ist eine Quartiersentwicklung, kein schneller Flip. Der Wert entsteht ueber Jahre, wenn Infrastruktur, Retail und Hospitality zusammenwachsen.",
|
||||||
|
"highlights": ["100 Buildings laut Azizi Map", "80.000 Apartments laut Azizi Map", "AED 75 Mrd. Masterplan laut Webabgleich", "Mixed Use: Wohnen, Retail, Hospitality, Lifestyle"],
|
||||||
|
"data_confidence": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "azizi-wasel",
|
||||||
|
"title": "Azizi Wasel",
|
||||||
|
"category": "mega-communities",
|
||||||
|
"location": "Dubai Islands",
|
||||||
|
"status": "Off-Plan / New Launch",
|
||||||
|
"status_group": "offplan",
|
||||||
|
"buyer_profile": "Off-Plan-Investoren mit Insel-These",
|
||||||
|
"price_from": "ab ca. AED 1,04-1,1 Mio je Quelle",
|
||||||
|
"handover": "Q2 2027 bis Q1 2028 je Quelle, final pruefen",
|
||||||
|
"units": "221 Apartments laut Azizi Map",
|
||||||
|
"image": "b2in/about-hero.jpg",
|
||||||
|
"official_url": "https://www.azizidevelopments.com/dubai/dubai-islands/azizi-wasel",
|
||||||
|
"short": "Frueher Einstieg in Dubai Islands als neue Premium-Inseldestination.",
|
||||||
|
"marcel_take": "Wasel ist eine bewusste Lagewette. Wer Dubai Islands frueh versteht, kauft nicht Mainstream, sondern Entwicklungsfantasie mit Inselpositionierung.",
|
||||||
|
"highlights": ["221 Apartments laut Azizi Map", "3B+G+13 laut Azizi Map", "Dubai Islands / Deira Waterfront", "Studios bis 3BR und Penthouses"],
|
||||||
|
"data_confidence": "yellow"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"market_context": {
|
||||||
|
"title": "Noch unentschlossen?",
|
||||||
|
"subtitle": "Warum Dubai fuer viele internationale Investoren relevant bleibt - und warum trotzdem nicht jedes Projekt automatisch passt.",
|
||||||
|
"facts": [
|
||||||
|
{"icon": "receipt-percent", "title": "0 % Einkommensteuer", "description": "Dubai bleibt fuer viele Investoren steuerlich attraktiv. Entscheidend bleibt die persoenliche steuerliche Situation im Heimatland."},
|
||||||
|
{"icon": "chart-bar", "title": "Mietnachfrage", "description": "Starke Zuwanderung, Tourismus und Business-Nachfrage schaffen Vermietungspotenzial in den richtigen Lagen."},
|
||||||
|
{"icon": "shield-check", "title": "Regulierung", "description": "DLD, RERA und Escrow-Strukturen schaffen bei Off-Plan-Kaeufen mehr Transparenz als viele Erstkaeufer erwarten."},
|
||||||
|
{"icon": "banknotes", "title": "AED an USD gekoppelt", "description": "Die Dollarbindung des Dirham gibt vielen internationalen Kaeufern planbarere Waehrungslogik."},
|
||||||
|
{"icon": "identification", "title": "Golden Visa", "description": "Ab bestimmten Investmentgroessen kann der Immobilienkauf Aufenthaltsoptionen eroeffnen."},
|
||||||
|
{"icon": "building-office-2", "title": "Projektqualitaet zaehlt", "description": "Nicht Dubai allein entscheidet, sondern Lage, Entwickler, Baufortschritt, Zahlungsplan und Exit-Strategie."}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Der Kaufprozess mit B2in",
|
||||||
|
"steps": [
|
||||||
|
{"number": "01", "title": "Strategie klaeren", "description": "Eigennutzung, Cashflow, Wertzuwachs oder Trophy Asset - zuerst wird die Logik festgelegt."},
|
||||||
|
{"number": "02", "title": "Projekt shortlisten", "description": "Aus der Auswahl entstehen 2-4 passende Projekte statt einer endlosen Linkliste."},
|
||||||
|
{"number": "03", "title": "Verfuegbarkeit pruefen", "description": "Aktive Phasen, Preise, Zahlungsplan, Floor Plans und Resale-Angebote werden aktuell geprueft."},
|
||||||
|
{"number": "04", "title": "Kauf begleiten", "description": "Reservierung, SPA, DLD/RERA-Prozess, Zahlungsschritte und Uebergabe werden strukturiert begleitet."}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mindset": {
|
||||||
|
"title": "Sind Sie der richtige Dubai-Investor?",
|
||||||
|
"positive": "Dubai passt, wenn Sie internationale Dynamik suchen, Entscheidungen zuegig treffen koennen und Projektqualitaet wichtiger nehmen als reine Renderings.",
|
||||||
|
"negative": "Dubai passt nicht, wenn Sie absolute Garantien erwarten, keine Wechselkurs- oder Marktrisiken tragen wollen oder jede Entscheidung erst nach Monaten treffen koennen.",
|
||||||
|
"cta": "Persoenliche Einschaetzung anfragen"
|
||||||
|
},
|
||||||
|
"furniture": {
|
||||||
|
"title": "Immobilie gekauft - Einrichtung mitdenken.",
|
||||||
|
"text": "Als B2in-Kunde profitieren Sie perspektivisch vom Interior-Netzwerk: Moebel, Ausstattung und Vermietbarkeit sollen nicht getrennt gedacht werden.",
|
||||||
|
"button": "Mehr zum B2in-Netzwerk"
|
||||||
|
}
|
||||||
|
}
|
||||||
173
resources/views/web/dev/immobilien-azizi-show.blade.php
Normal file
173
resources/views/web/dev/immobilien-azizi-show.blade.php
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
@extends('web.layouts.web-master')
|
||||||
|
|
||||||
|
@php
|
||||||
|
$statusClasses = [
|
||||||
|
'ready' => 'bg-emerald-500',
|
||||||
|
'construction' => 'bg-sky-500',
|
||||||
|
'offplan' => 'bg-amber-400 text-zinc-950',
|
||||||
|
];
|
||||||
|
$confidenceLabels = [
|
||||||
|
'green' => 'Direkt belegt',
|
||||||
|
'yellow' => 'Vor Livegang final pruefen',
|
||||||
|
'red' => 'Nur als Anfragewert nutzen',
|
||||||
|
];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@section('title', ($project['title'] ?? 'Projekt') . ' - B2in Dubai Preview')
|
||||||
|
@section('meta_description', ($project['short'] ?? 'Kuratierte Dubai-Immobilie von Azizi Developments.'))
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="bg-background">
|
||||||
|
<livewire:web.components.ui.header />
|
||||||
|
|
||||||
|
<main class="variante-glass-flow">
|
||||||
|
<section class="relative h-[62vh] min-h-[460px] overflow-hidden">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url($project['image'] ?? 'b2in/hero-immobilien.jpg') }}"
|
||||||
|
alt="{{ $project['title'] ?? '' }}"
|
||||||
|
class="absolute inset-0 h-full w-full object-cover"
|
||||||
|
loading="" />
|
||||||
|
<div class="absolute inset-0 bg-gradient-to-t from-black/80 via-black/35 to-black/10"></div>
|
||||||
|
<div class="absolute inset-x-0 bottom-0 p-8 lg:p-12">
|
||||||
|
<div class="container-padding">
|
||||||
|
<a href="{{ route('dev.immobilien-azizi') }}" class="mb-6 inline-flex items-center gap-2 text-sm font-semibold text-white/75 hover:text-white">
|
||||||
|
@svg('heroicon-o-arrow-left', 'h-4 w-4')
|
||||||
|
Zurueck zur Projektuebersicht
|
||||||
|
</a>
|
||||||
|
<div class="max-w-4xl">
|
||||||
|
<span class="inline-flex rounded-full px-3 py-1 text-xs font-semibold text-white {{ $statusClasses[$project['status_group'] ?? 'ready'] ?? 'bg-secondary' }}">
|
||||||
|
{{ $project['status'] ?? '' }}
|
||||||
|
</span>
|
||||||
|
<h1 class="mt-4 text-4xl font-bold text-white lg:text-6xl">{{ $project['title'] ?? '' }}</h1>
|
||||||
|
<p class="mt-3 text-xl text-white/80">{{ $project['location'] ?? '' }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="bg-accent py-8">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="grid gap-5 md:grid-cols-2 lg:grid-cols-4">
|
||||||
|
<div class="card-elevated rounded-2xl p-5">
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Preis / Verfuegbarkeit</p>
|
||||||
|
<p class="mt-2 font-semibold text-secondary">{{ $project['price_from'] ?? 'Auf Anfrage' }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-elevated rounded-2xl p-5">
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Uebergabe</p>
|
||||||
|
<p class="mt-2 font-semibold text-foreground">{{ $project['handover'] ?? 'Phase abhaengig' }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-elevated rounded-2xl p-5">
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Einheiten</p>
|
||||||
|
<p class="mt-2 font-semibold text-foreground">{{ $project['units'] ?? 'Aktuell pruefen' }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-elevated rounded-2xl p-5">
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Datenstand</p>
|
||||||
|
<p class="mt-2 font-semibold text-foreground">{{ $confidenceLabels[$project['data_confidence'] ?? 'yellow'] ?? 'Pruefen' }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="grid gap-12 lg:grid-cols-[0.72fr_0.28fr]">
|
||||||
|
<article>
|
||||||
|
<p class="mb-4 text-sm font-semibold uppercase tracking-[0.22em] text-secondary">
|
||||||
|
Investment Case
|
||||||
|
</p>
|
||||||
|
<h2 class="text-section-title">{{ $project['short'] ?? '' }}</h2>
|
||||||
|
<p class="mt-6 text-large leading-relaxed text-muted-foreground">
|
||||||
|
{{ $project['marcel_take'] ?? '' }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="mt-10 rounded-2xl border border-secondary/20 bg-secondary/5 p-6">
|
||||||
|
<h3 class="text-lg font-semibold text-foreground">Fuer wen eignet sich das Projekt?</h3>
|
||||||
|
<p class="mt-3 leading-relaxed text-muted-foreground">{{ $project['buyer_profile'] ?? '' }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-10">
|
||||||
|
<h3 class="text-2xl font-semibold text-foreground">Harte Punkte fuer die Einordnung</h3>
|
||||||
|
<ul class="mt-5 grid gap-3">
|
||||||
|
@foreach ($project['highlights'] ?? [] as $highlight)
|
||||||
|
<li class="flex gap-3 rounded-xl bg-accent p-4 text-muted-foreground">
|
||||||
|
@svg('heroicon-o-check-circle', 'mt-0.5 h-5 w-5 shrink-0 text-secondary')
|
||||||
|
<span>{{ $highlight }}</span>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<aside class="space-y-5">
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<h3 class="font-semibold text-foreground">Projektquelle</h3>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">
|
||||||
|
Offizieller Azizi-Link als Projektanker. Preise und Verfuegbarkeit werden vor Beratung aktuell geprueft.
|
||||||
|
</p>
|
||||||
|
@if (! empty($project['official_url']))
|
||||||
|
<a href="{{ $project['official_url'] }}" target="_blank" rel="noopener" class="mt-5 inline-flex items-center gap-2 font-semibold text-secondary hover:text-secondary/80">
|
||||||
|
Azizi-Projektseite
|
||||||
|
@svg('heroicon-o-arrow-up-right', 'h-4 w-4')
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<h3 class="font-semibold text-foreground">Naechster Schritt</h3>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">
|
||||||
|
Marcel prueft aktive Einheiten, aktuellen Zahlungsplan, Floor Plans und ob Resale oder Off-Plan fuer Ihre Strategie sinnvoller ist.
|
||||||
|
</p>
|
||||||
|
<a href="/contact" class="mt-5 inline-flex w-full justify-center btn-primary-accent">
|
||||||
|
Verfuegbarkeit anfragen
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding bg-accent">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-3xl text-center">
|
||||||
|
<h2 class="text-section-title">Wie B2in dieses Projekt prueft</h2>
|
||||||
|
<p class="mt-4 text-large text-muted-foreground">
|
||||||
|
Diese Preview trennt redaktionelle Einordnung von beweglichen Vertriebsdaten. Der Live-Stand wird immer vor einer konkreten Empfehlung geprueft.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mx-auto mt-10 grid max-w-5xl gap-5 md:grid-cols-3">
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<h3 class="font-semibold text-foreground">1. Strategische Passung</h3>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">Cashflow, Eigennutzung, Wertzuwachs oder Trophy Asset.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<h3 class="font-semibold text-foreground">2. Aktive Verfuegbarkeit</h3>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">Einheiten, Etagen, Views, Zahlungsplan und Resale-Angebote.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<h3 class="font-semibold text-foreground">3. Exit-Logik</h3>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">Vermietbarkeit, Haltezeit, Zielgruppe und Wiederverkauf.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-3xl rounded-2xl border border-secondary/20 bg-secondary/5 p-8 text-center lg:p-12">
|
||||||
|
<h2 class="text-section-title">Interesse an {{ $project['title'] ?? 'diesem Projekt' }}?</h2>
|
||||||
|
<p class="mt-4 text-large text-muted-foreground">
|
||||||
|
Fragen Sie keine Broschuere an. Fragen Sie eine Einordnung an: Passt dieses Projekt zu Ihrer Strategie, Ihrem Budget und Ihrem Zeithorizont?
|
||||||
|
</p>
|
||||||
|
<div class="mt-8 flex flex-col justify-center gap-3 sm:flex-row">
|
||||||
|
<a href="/contact" class="btn-primary-accent px-8 py-4 text-lg">Beratung anfragen</a>
|
||||||
|
<a href="{{ route('dev.immobilien-azizi') }}#projekte" class="btn-secondary-accent px-8 py-4 text-lg">Weitere Projekte ansehen</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<livewire:web.components.ui.footer />
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
416
resources/views/web/dev/immobilien-azizi.blade.php
Normal file
416
resources/views/web/dev/immobilien-azizi.blade.php
Normal file
|
|
@ -0,0 +1,416 @@
|
||||||
|
@extends('web.layouts.web-master')
|
||||||
|
|
||||||
|
@php
|
||||||
|
$projects = collect($content['projects'] ?? []);
|
||||||
|
$featured = $content['featured'] ?? [];
|
||||||
|
$featuredProject = $projects->firstWhere('slug', $featured['slug'] ?? '');
|
||||||
|
$categories = collect($content['categories'] ?? []);
|
||||||
|
$districts = collect(data_get($content, 'districts.items', []));
|
||||||
|
$gridProjectsCount = $projects->reject(fn ($project) => $project['slug'] === data_get($featured, 'slug'))->count();
|
||||||
|
$statusLabels = [
|
||||||
|
'ready' => 'Sofort verfuegbar',
|
||||||
|
'construction' => 'Im Bau',
|
||||||
|
'offplan' => 'Off-Plan',
|
||||||
|
];
|
||||||
|
$statusClasses = [
|
||||||
|
'ready' => 'bg-emerald-500',
|
||||||
|
'construction' => 'bg-sky-500',
|
||||||
|
'offplan' => 'bg-amber-400 text-zinc-950',
|
||||||
|
];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@section('title', data_get($content, 'meta.title', 'Dubai Immobilien - B2in'))
|
||||||
|
@section('meta_description', data_get($content, 'meta.description', 'Kuratierte Immobilienprojekte in Dubai.'))
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="bg-background">
|
||||||
|
<livewire:web.components.ui.header />
|
||||||
|
|
||||||
|
<main class="variante-glass-flow">
|
||||||
|
<section class="relative min-h-[76vh] flex items-center overflow-hidden">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url(data_get($content, 'hero.image')) }}"
|
||||||
|
alt="Dubai Skyline - kuratierte Immobilienprojekte"
|
||||||
|
class="absolute inset-0 h-full w-full object-cover"
|
||||||
|
loading="" />
|
||||||
|
<div class="absolute inset-0 bg-gradient-to-r from-black/85 via-black/65 to-black/35"></div>
|
||||||
|
|
||||||
|
<div class="relative z-10 container-padding py-24 lg:py-32">
|
||||||
|
<div class="max-w-4xl">
|
||||||
|
<p class="mb-5 text-sm font-semibold uppercase tracking-[0.24em] text-secondary">
|
||||||
|
{{ data_get($content, 'hero.eyebrow') }}
|
||||||
|
</p>
|
||||||
|
<h1 class="max-w-3xl text-4xl font-bold leading-tight text-white lg:text-6xl">
|
||||||
|
{{ data_get($content, 'hero.title') }}
|
||||||
|
</h1>
|
||||||
|
<p class="mt-6 max-w-2xl text-lg leading-relaxed text-white/80 lg:text-xl">
|
||||||
|
{{ data_get($content, 'hero.subtitle') }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="mt-10 flex flex-col gap-3 sm:flex-row">
|
||||||
|
<a href="#projekte" class="btn-primary-accent px-8 py-4 text-lg">
|
||||||
|
{{ data_get($content, 'hero.cta_primary') }}
|
||||||
|
</a>
|
||||||
|
<a href="/contact" class="btn-secondary-accent px-8 py-4 text-lg">
|
||||||
|
{{ data_get($content, 'hero.cta_secondary') }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="mt-5 max-w-xl text-sm font-medium text-white/70">
|
||||||
|
{{ data_get($content, 'hero.microcopy') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="grid items-center gap-12 lg:grid-cols-[0.9fr_1.1fr]">
|
||||||
|
<div class="card-elevated overflow-hidden rounded-3xl">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url(data_get($content, 'intro.image')) }}"
|
||||||
|
alt="Marcel Scheibe - B2in Immobilienberatung"
|
||||||
|
class="h-[460px] w-full object-cover" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<p class="mb-4 text-sm font-semibold uppercase tracking-[0.22em] text-secondary">
|
||||||
|
Kuratiert statt katalogisiert
|
||||||
|
</p>
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'intro.title') }}</h2>
|
||||||
|
<blockquote class="mt-6 border-l-4 border-secondary pl-5 text-xl font-medium leading-relaxed text-foreground">
|
||||||
|
"{{ data_get($content, 'intro.quote') }}"
|
||||||
|
</blockquote>
|
||||||
|
<div class="mt-6 space-y-4 text-large leading-relaxed text-muted-foreground">
|
||||||
|
@foreach (data_get($content, 'intro.paragraphs', []) as $paragraph)
|
||||||
|
<p>{{ $paragraph }}</p>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding relative isolate overflow-hidden bg-zinc-950 text-white">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url($featured['image'] ?? 'b2in/hero-immobilien.jpg') }}"
|
||||||
|
alt="{{ $featured['title'] ?? 'Burj Azizi' }}"
|
||||||
|
class="absolute inset-0 -z-20 h-full w-full object-cover"
|
||||||
|
loading="" />
|
||||||
|
<div class="absolute inset-0 -z-10 bg-gradient-to-r from-zinc-950 via-zinc-950/90 to-zinc-950/65"></div>
|
||||||
|
<div class="absolute inset-x-0 top-0 -z-10 h-28 bg-gradient-to-b from-zinc-950 to-transparent"></div>
|
||||||
|
<div class="absolute inset-x-0 bottom-0 -z-10 h-28 bg-gradient-to-t from-zinc-950 to-transparent"></div>
|
||||||
|
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="grid gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:items-center">
|
||||||
|
<div class="relative overflow-hidden rounded-3xl border border-white/10 bg-[#142f34] shadow-2xl shadow-black/20">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url($featured['image'] ?? 'b2in/hero-immobilien.jpg') }}"
|
||||||
|
alt="{{ $featured['title'] ?? 'Burj Azizi' }}"
|
||||||
|
class="h-[520px] w-full object-cover opacity-75" />
|
||||||
|
<div class="absolute inset-0 bg-gradient-to-t from-[#071316]/95 via-[#071316]/35 to-[#071316]/10"></div>
|
||||||
|
<div class="absolute bottom-6 left-6 right-6">
|
||||||
|
<span class="inline-flex rounded-full bg-white px-3 py-1 text-xs font-semibold text-[#0e2226]">
|
||||||
|
Headline-Projekt
|
||||||
|
</span>
|
||||||
|
<h2 class="mt-4 text-3xl font-bold lg:text-5xl">{{ $featured['title'] ?? '' }}</h2>
|
||||||
|
<p class="mt-2 text-white/75">{{ $featured['location'] ?? '' }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<p class="inline-flex rounded-full bg-white px-3 py-1 text-xs font-semibold uppercase tracking-[0.18em] text-[#0e2226]">
|
||||||
|
{{ $featured['status'] ?? '' }}
|
||||||
|
</p>
|
||||||
|
<h2 class="mt-4 text-3xl font-bold leading-tight lg:text-5xl">
|
||||||
|
{{ $featured['headline'] ?? '' }}
|
||||||
|
</h2>
|
||||||
|
<p class="mt-6 text-lg leading-relaxed text-white/75">
|
||||||
|
{{ $featured['text'] ?? '' }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="mt-6 rounded-2xl border border-white/10 bg-white/10 p-6">
|
||||||
|
<p class="text-sm font-semibold text-white">Marcels Einschätzung</p>
|
||||||
|
<p class="mt-3 leading-relaxed text-white/80">{{ $featured['marcel_take'] ?? '' }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<dl class="mt-8 grid gap-3 sm:grid-cols-2">
|
||||||
|
<div class="rounded-2xl bg-white/5 p-4">
|
||||||
|
<dt class="text-xs uppercase tracking-wider text-white/50">Preis</dt>
|
||||||
|
<dd class="mt-1 font-semibold">{{ $featured['price_from'] ?? '' }}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-2xl bg-white/5 p-4">
|
||||||
|
<dt class="text-xs uppercase tracking-wider text-white/50">Uebergabe</dt>
|
||||||
|
<dd class="mt-1 font-semibold">{{ $featured['handover'] ?? '' }}</dd>
|
||||||
|
</div>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<ul class="mt-6 grid gap-2 text-sm text-white/70 sm:grid-cols-2">
|
||||||
|
@foreach ($featured['facts'] ?? [] as $fact)
|
||||||
|
<li class="flex gap-2">
|
||||||
|
@svg('heroicon-o-check-circle', 'mt-0.5 h-4 w-4 shrink-0 text-secondary')
|
||||||
|
<span>{{ $fact }}</span>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
@if ($featuredProject)
|
||||||
|
<div class="mt-8">
|
||||||
|
<a href="{{ route('dev.immobilien-azizi.show', $featuredProject['slug']) }}" class="btn-primary-accent px-7 py-3">
|
||||||
|
Burj Azizi im Detail ansehen
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="karte" class="section-padding bg-accent">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mb-10 max-w-3xl">
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'map.title') }}</h2>
|
||||||
|
<p class="mt-4 text-large leading-relaxed text-muted-foreground">
|
||||||
|
{{ data_get($content, 'map.subtitle') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gap-8 lg:grid-cols-[1.2fr_0.8fr]">
|
||||||
|
<div class="relative min-h-[520px] overflow-hidden rounded-3xl border border-border bg-gradient-to-br from-sky-100 via-white to-emerald-50 p-6 shadow-sm dark:from-slate-900 dark:via-slate-950 dark:to-emerald-950">
|
||||||
|
<div class="absolute left-[8%] top-[10%] h-[78%] w-[62%] rotate-[-18deg] rounded-[55%] border border-sky-400/30 bg-sky-300/20"></div>
|
||||||
|
<div class="absolute right-[8%] top-[5%] h-[86%] w-[32%] rounded-[48%] border border-emerald-500/20 bg-emerald-300/20"></div>
|
||||||
|
<div class="absolute bottom-[8%] left-[24%] h-[26%] w-[46%] rounded-[48%] border border-secondary/20 bg-secondary/10"></div>
|
||||||
|
|
||||||
|
<span class="absolute left-[56%] top-[44%] text-xs font-semibold uppercase tracking-wider text-zinc-500">Downtown</span>
|
||||||
|
<span class="absolute left-[34%] top-[70%] text-xs font-semibold uppercase tracking-wider text-zinc-500">Al Furjan</span>
|
||||||
|
<span class="absolute left-[29%] top-[87%] text-xs font-semibold uppercase tracking-wider text-zinc-500">Dubai South</span>
|
||||||
|
<span class="absolute left-[21%] top-[42%] text-xs font-semibold uppercase tracking-wider text-zinc-500">Palm</span>
|
||||||
|
<span class="absolute left-[70%] top-[24%] text-xs font-semibold uppercase tracking-wider text-zinc-500">Dubai Islands</span>
|
||||||
|
|
||||||
|
@foreach (data_get($content, 'map.pins', []) as $pin)
|
||||||
|
@php
|
||||||
|
$pinProject = $projects->firstWhere('slug', $pin['slug']);
|
||||||
|
$group = $pinProject['status_group'] ?? 'ready';
|
||||||
|
@endphp
|
||||||
|
@if ($pinProject)
|
||||||
|
<a href="{{ route('dev.immobilien-azizi.show', $pinProject['slug']) }}"
|
||||||
|
title="{{ $pinProject['title'] }}"
|
||||||
|
class="group absolute flex h-8 w-8 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-white shadow-lg transition hover:z-20 hover:scale-110 {{ $statusClasses[$group] ?? 'bg-secondary' }}"
|
||||||
|
style="left: {{ $pin['x'] }}%; top: {{ $pin['y'] }}%;">
|
||||||
|
<span class="h-2.5 w-2.5 rounded-full bg-white/90"></span>
|
||||||
|
<span class="pointer-events-none absolute bottom-full left-1/2 mb-3 hidden w-56 -translate-x-1/2 rounded-xl bg-zinc-950 p-3 text-left text-xs text-white shadow-xl group-hover:block">
|
||||||
|
<strong class="block text-sm">{{ $pinProject['title'] }}</strong>
|
||||||
|
<span class="mt-1 block text-white/70">{{ $pinProject['location'] }}</span>
|
||||||
|
<span class="mt-2 block text-secondary">{{ $statusLabels[$group] ?? $pinProject['status'] }}</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid content-start gap-4">
|
||||||
|
@foreach ($statusLabels as $key => $label)
|
||||||
|
<div class="card-elevated rounded-2xl p-5">
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<span class="h-4 w-4 rounded-full {{ $statusClasses[$key] ?? 'bg-secondary' }}"></span>
|
||||||
|
<h3 class="font-semibold text-foreground">{{ $label }}</h3>
|
||||||
|
</div>
|
||||||
|
<p class="mt-2 text-sm text-muted-foreground">
|
||||||
|
{{ $projects->where('status_group', $key)->count() }} Projekte in dieser Auswahl.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
@if ($districts->isNotEmpty())
|
||||||
|
<section class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mb-10 max-w-3xl">
|
||||||
|
<p class="mb-4 text-sm font-semibold uppercase tracking-[0.22em] text-secondary">
|
||||||
|
Stadtteil-Kontext
|
||||||
|
</p>
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'districts.title') }}</h2>
|
||||||
|
<p class="mt-4 text-large leading-relaxed text-muted-foreground">
|
||||||
|
{{ data_get($content, 'districts.subtitle') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gap-5 md:grid-cols-2 xl:grid-cols-3">
|
||||||
|
@foreach ($districts as $district)
|
||||||
|
<article class="card-elevated rounded-2xl p-6">
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-[0.18em] text-secondary">
|
||||||
|
{{ $district['projects'] ?? '' }}
|
||||||
|
</p>
|
||||||
|
<h3 class="mt-3 text-xl font-semibold text-foreground">{{ $district['name'] ?? '' }}</h3>
|
||||||
|
<p class="mt-3 text-sm leading-relaxed text-muted-foreground">
|
||||||
|
{{ $district['description'] ?? '' }}
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<section id="projekte" class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mb-12 max-w-3xl">
|
||||||
|
<p class="mb-4 text-sm font-semibold uppercase tracking-[0.22em] text-secondary">
|
||||||
|
Projektgrid
|
||||||
|
</p>
|
||||||
|
<h2 class="text-section-title">{{ $gridProjectsCount }} Projekte im Vergleich</h2>
|
||||||
|
<p class="mt-4 text-large text-muted-foreground">
|
||||||
|
Burj Azizi steht bewusst als eigenes Flaggschiff oben. Die restlichen PDF-Positionen und kuratierten Zusatzprojekte sind nach Käuferlogik, Stadtteil und Entwicklungsstatus sortiert.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="space-y-16">
|
||||||
|
@foreach ($categories as $category)
|
||||||
|
@php
|
||||||
|
$categoryProjects = $projects
|
||||||
|
->where('category', $category['key'])
|
||||||
|
->reject(fn ($project) => $project['slug'] === data_get($featured, 'slug'));
|
||||||
|
@endphp
|
||||||
|
@if ($categoryProjects->isNotEmpty())
|
||||||
|
<section>
|
||||||
|
<div class="mb-6 max-w-3xl">
|
||||||
|
<h3 class="text-2xl font-semibold text-foreground">{{ $category['title'] }}</h3>
|
||||||
|
<p class="mt-2 text-muted-foreground">{{ $category['intro'] }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gap-6 md:grid-cols-2 xl:grid-cols-3">
|
||||||
|
@foreach ($categoryProjects as $project)
|
||||||
|
<article class="card-elevated flex h-full flex-col overflow-hidden rounded-2xl">
|
||||||
|
<div class="relative h-52 overflow-hidden">
|
||||||
|
<x-web-picture
|
||||||
|
src="{{ theme_image_url($project['image']) }}"
|
||||||
|
alt="{{ $project['title'] }}"
|
||||||
|
class="h-full w-full object-cover transition duration-500 hover:scale-105" />
|
||||||
|
<span class="absolute left-4 top-4 rounded-full px-3 py-1 text-xs font-semibold text-white {{ $statusClasses[$project['status_group']] ?? 'bg-secondary' }}">
|
||||||
|
{{ $project['status'] }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-1 flex-col p-6">
|
||||||
|
<p class="text-sm text-muted-foreground">{{ $project['location'] }}</p>
|
||||||
|
<h4 class="mt-1 text-xl font-semibold text-foreground">{{ $project['title'] }}</h4>
|
||||||
|
<p class="mt-4 text-sm leading-relaxed text-muted-foreground">{{ $project['short'] }}</p>
|
||||||
|
|
||||||
|
<dl class="mt-5 grid gap-3 text-sm">
|
||||||
|
<div>
|
||||||
|
<dt class="font-medium text-foreground">Geeignet fuer</dt>
|
||||||
|
<dd class="text-muted-foreground">{{ $project['buyer_profile'] }}</dd>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<dt class="font-medium text-foreground">Preis / Verfuegbarkeit</dt>
|
||||||
|
<dd class="text-secondary">{{ $project['price_from'] }}</dd>
|
||||||
|
</div>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<div class="mt-auto pt-6">
|
||||||
|
<a href="{{ route('dev.immobilien-azizi.show', $project['slug']) }}" class="inline-flex items-center gap-2 font-semibold text-secondary hover:text-secondary/80">
|
||||||
|
Details ansehen
|
||||||
|
@svg('heroicon-o-arrow-right', 'h-4 w-4')
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding bg-accent">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-3xl text-center">
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'market_context.title') }}</h2>
|
||||||
|
<p class="mt-4 text-large text-muted-foreground">{{ data_get($content, 'market_context.subtitle') }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mx-auto mt-12 grid max-w-6xl gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
|
@foreach (data_get($content, 'market_context.facts', []) as $fact)
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<div class="mb-5 inline-flex h-12 w-12 items-center justify-center rounded-full bg-secondary/10 text-secondary">
|
||||||
|
@svg('heroicon-o-' . $fact['icon'], 'h-6 w-6')
|
||||||
|
</div>
|
||||||
|
<h3 class="font-semibold text-foreground">{{ $fact['title'] }}</h3>
|
||||||
|
<p class="mt-2 text-sm leading-relaxed text-muted-foreground">{{ $fact['description'] }}</p>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-4xl">
|
||||||
|
<div class="mb-10 text-center">
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'process.title') }}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="grid gap-5 md:grid-cols-2">
|
||||||
|
@foreach (data_get($content, 'process.steps', []) as $step)
|
||||||
|
<div class="card-elevated rounded-2xl p-6">
|
||||||
|
<div class="flex gap-5">
|
||||||
|
<span class="flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-secondary text-lg font-bold text-white">
|
||||||
|
{{ $step['number'] }}
|
||||||
|
</span>
|
||||||
|
<div>
|
||||||
|
<h3 class="font-semibold text-foreground">{{ $step['title'] }}</h3>
|
||||||
|
<p class="mt-2 text-sm leading-relaxed text-muted-foreground">{{ $step['description'] }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding bg-secondary/5">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-4xl rounded-2xl border border-secondary/20 bg-background p-8 text-center lg:p-12">
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'mindset.title') }}</h2>
|
||||||
|
<div class="mt-8 grid gap-5 text-left md:grid-cols-2">
|
||||||
|
<p class="rounded-2xl bg-emerald-500/10 p-5 leading-relaxed text-foreground">
|
||||||
|
{{ data_get($content, 'mindset.positive') }}
|
||||||
|
</p>
|
||||||
|
<p class="rounded-2xl bg-amber-500/10 p-5 leading-relaxed text-muted-foreground">
|
||||||
|
{{ data_get($content, 'mindset.negative') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="mt-8">
|
||||||
|
<a href="/contact" class="btn-primary-accent px-8 py-4 text-lg">
|
||||||
|
{{ data_get($content, 'mindset.cta') }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-padding bg-accent">
|
||||||
|
<div class="container-padding">
|
||||||
|
<div class="mx-auto max-w-3xl text-center">
|
||||||
|
<h2 class="text-section-title">{{ data_get($content, 'furniture.title') }}</h2>
|
||||||
|
<p class="mt-4 text-large text-muted-foreground">{{ data_get($content, 'furniture.text') }}</p>
|
||||||
|
<div class="mt-8">
|
||||||
|
<a href="/netzwerk" class="btn-secondary-accent">
|
||||||
|
{{ data_get($content, 'furniture.button') }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<livewire:web.components.sections.c-t-a-section />
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<livewire:web.components.ui.footer />
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
@ -110,6 +110,29 @@ Route::get('/theme-demo', function () {
|
||||||
Route::prefix('dev')->group(function () {
|
Route::prefix('dev')->group(function () {
|
||||||
Route::get('/sitemap', fn () => view('web.dev.sitemap'))->name('dev.sitemap');
|
Route::get('/sitemap', fn () => view('web.dev.sitemap'))->name('dev.sitemap');
|
||||||
Route::get('/immobilien-v1', fn () => view('web.dev.immobilien-v1'))->name('dev.immobilien-v1');
|
Route::get('/immobilien-v1', fn () => view('web.dev.immobilien-v1'))->name('dev.immobilien-v1');
|
||||||
|
Route::get('/immobilien-azizi', function () {
|
||||||
|
$content = json_decode(
|
||||||
|
file_get_contents(resource_path('lang/de/immobilien-azizi.json')),
|
||||||
|
true,
|
||||||
|
512,
|
||||||
|
JSON_THROW_ON_ERROR,
|
||||||
|
);
|
||||||
|
|
||||||
|
return view('web.dev.immobilien-azizi', compact('content'));
|
||||||
|
})->name('dev.immobilien-azizi');
|
||||||
|
Route::get('/immobilien-azizi/{slug}', function (string $slug) {
|
||||||
|
$content = json_decode(
|
||||||
|
file_get_contents(resource_path('lang/de/immobilien-azizi.json')),
|
||||||
|
true,
|
||||||
|
512,
|
||||||
|
JSON_THROW_ON_ERROR,
|
||||||
|
);
|
||||||
|
|
||||||
|
$project = collect($content['projects'] ?? [])->firstWhere('slug', $slug);
|
||||||
|
abort_unless($project, 404);
|
||||||
|
|
||||||
|
return view('web.dev.immobilien-azizi-show', compact('content', 'project'));
|
||||||
|
})->name('dev.immobilien-azizi.show');
|
||||||
Route::get('/interior-v1', fn () => view('web.dev.interior-v1'))->name('dev.interior-v1');
|
Route::get('/interior-v1', fn () => view('web.dev.interior-v1'))->name('dev.interior-v1');
|
||||||
Route::get('/partner-v1', fn () => view('web.dev.partner-v1'))->name('dev.partner-v1');
|
Route::get('/partner-v1', fn () => view('web.dev.partner-v1'))->name('dev.partner-v1');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -63,3 +63,38 @@ it('ecosystem redirects to netzwerk via partner', function () {
|
||||||
$this->get('/ecosystem')
|
$this->get('/ecosystem')
|
||||||
->assertRedirect('/partner');
|
->assertRedirect('/partner');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('dev azizi immobilien page shows curated projects', function () {
|
||||||
|
$this->get('/dev/immobilien-azizi')
|
||||||
|
->assertSuccessful()
|
||||||
|
->assertSee('19 Azizi-Leitprojekte')
|
||||||
|
->assertSee('Burj Azizi')
|
||||||
|
->assertSee('Sofort verfuegbar')
|
||||||
|
->assertSee('Ready Rendite')
|
||||||
|
->assertSee('Azizi Milan')
|
||||||
|
->assertSee('Azizi Vista')
|
||||||
|
->assertSee('Azizi Arian')
|
||||||
|
->assertSee('Stadtteile aus der Azizi Folding Map');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('dev azizi project detail page loads for valid slug', function () {
|
||||||
|
$this->get('/dev/immobilien-azizi/burj-azizi')
|
||||||
|
->assertSuccessful()
|
||||||
|
->assertSee('Burj Azizi')
|
||||||
|
->assertSee('Sheikh Zayed Road')
|
||||||
|
->assertSee('Investment Case')
|
||||||
|
->assertSee('Azizi-Projektseite');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('dev azizi project detail page loads for folding map additions', function () {
|
||||||
|
$this->get('/dev/immobilien-azizi/azizi-vista')
|
||||||
|
->assertSuccessful()
|
||||||
|
->assertSee('Azizi Vista')
|
||||||
|
->assertSee('Dubai Studio City')
|
||||||
|
->assertSee('163 Apartments');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('dev azizi project detail page returns 404 for invalid slug', function () {
|
||||||
|
$this->get('/dev/immobilien-azizi/not-a-project')
|
||||||
|
->assertNotFound();
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue