feat: add City10 platform with Laravel 13, AI agents, 3D viewer, and LGPD compliance
Initial commit of the complete City10 virtual city simulation platform. Backend (Laravel 13): - REST API with Sanctum tokens and session-based web authentication - Role-based access control (admin/user) with middleware protection - AI agent CRUD with OpenRouter.ai integration restricted to free models - Store management with 3D coordinates and AI shopkeeper assignment - Versioned legal documents (Terms, Privacy, Cookies) with LGPD audit trail - Math CAPTCHA on public forms and multi-language support (pt_BR, en, es) Frontend: - Responsive Blade templates with Tailwind CSS v4 - Three.js 3D city viewer with SSE chat streaming to AI agents - Admin panel for store and user administration Infrastructure: - MariaDB/MySQL database with comprehensive migrations - Database seeders for demo content and test accounts - PHPUnit test suite and Laravel Pint code styling - Vite build configuration with hot reload
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('Dashboard'))
|
||||
|
||||
@section('content')
|
||||
<div style="max-width: 960px; margin: 0 auto;">
|
||||
<div class="card" style="margin-bottom:1.25rem;">
|
||||
<h1 style="margin-top:0; color:#fff;">👋 Olá, {{ $user->name }}</h1>
|
||||
<p style="color:var(--muted); margin-bottom:.5rem;">
|
||||
Você está autenticado como
|
||||
<span class="badge {{ $isAdmin ? 'badge-admin' : 'badge-user' }}">{{ $isAdmin ? 'Administrador' : 'Usuário' }}</span>
|
||||
— idioma: {{ $user->locale }}.
|
||||
</p>
|
||||
<p style="color:var(--muted); font-size:.9rem;">
|
||||
Último acesso: {{ $user->last_login_at?->format('d/m/Y H:i:s') ?? '—' }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid-3">
|
||||
<div class="card">
|
||||
<h3 style="margin-top:0; color:#fff;">🏙️ {{ __('nav.city') }}</h3>
|
||||
<p style="color:var(--muted); font-size:.95rem;">
|
||||
<a href="{{ route('city.viewer') }}">{{ __('dashboard.open_viewer') }}</a><br>
|
||||
{{ __('dashboard.viewer_desc') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@if ($isAdmin)
|
||||
<div class="card" style="border-color:rgba(99,102,241,.5);">
|
||||
<h3 style="margin-top:0; color:#fff;">⚙️ {{ __('nav.admin') }}</h3>
|
||||
<p style="color:var(--muted); font-size:.95rem;">
|
||||
<a href="{{ route('admin.stores.index') }}">{{ __('admin.stores.manage') }}</a><br>
|
||||
{{ __('admin.stores.admin_desc') }}
|
||||
</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card">
|
||||
<h3 style="margin-top:0; color:#fff;">🏪 {{ __('dashboard.stores_title') }}</h3>
|
||||
<p style="font-size:2rem; margin:.2rem 0; color:var(--brand);">{{ $storeCount }}</p>
|
||||
<p style="color:var(--muted); font-size:.9rem;">{{ __('dashboard.stores_desc') }}</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3 style="margin-top:0; color:#fff;">📜 {{ __('dashboard.legal_title') }}</h3>
|
||||
<p style="color:var(--muted); font-size:.95rem;">
|
||||
<a href="{{ route('terms.history') }}">{{ __('dashboard.consent_history') }}</a><br>
|
||||
<a href="{{ route('legal.show', 'terms') }}">{{ __('legal.terms_label') }}</a> ·
|
||||
<a href="{{ route('legal.show', 'privacy') }}">{{ __('legal.privacy_label') }}</a> ·
|
||||
<a href="{{ route('legal.show', 'cookies') }}">{{ __('legal.cookies_label') }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user