This project is a Laravel 11 full-stack web application being built as the Webverse Creation platform — an all-in-one digital solutions agency website based in Vapi, Gujarat, India. The codebase was originally a fire safety business template and is being systematically converted.
Webverse Creation is a full-service digital agency offering: Web Design & Development, Mobile App Development, Digital Marketing & SEO, Cybersecurity Solutions, UI/UX Design, E-commerce & Brand Identity, Social Media Marketing, and Business Automation.
| Layer | Technology |
|---|---|
| Framework | Laravel 11.31+ (PHP 8.4) |
| Frontend | Livewire 3.5, Alpine.js 3, Tailwind CSS 3/4, Vite 6 |
| Admin Panel | Filament 3.2 (full admin CMS) |
| Database | PostgreSQL 18.2 |
| Cache / Sessions / Queue | Redis 8.0 (AOF, 256MB, LRU eviction) |
| Web Server | Nginx 1.27-alpine (reverse proxy) |
| Containerization | Docker Compose (custom, 7 services) |
| Component Library | Preline UI |
| SEO | Custom comprehensive seo_meta system (40+ fields) + ralphjsmit/laravel-seo (legacy) |
| Site Settings | Custom SiteSetting model (JSON key-value groups, Redis-cached) |
| Activity Logging | spatie/laravel-activitylog |
| Newsletter | spatie/laravel-newsletter |
| Image Processing | Intervention Image 3.0 |
| Geo/Location | stevebauman/location |
| Minification | fahlisaputra/laravel-minify |
| Analytics/Trends | flowframe/laravel-trend |
| Notes | tomatophp/filament-notes |
| Logs Viewer | saade/filament-laravel-log |
| Testing | Pest 3.7 |
| Dev Tools | Laravel Pail, Laravel Pint, Makefile (20+ commands) |
| Build | Vite 6 + PostCSS + Tailwind |
├── app/
│ ├── Console/Commands/ # Artisan custom commands
│ ├── Filament/ # Admin panel (Filament 3)
│ │ ├── Pages/Dashboard.php # Custom admin dashboard
│ │ ├── Resources/ # 18 Filament resources (CRUD for all entities)
│ │ └── Widgets/ # InquiryChart, Logs, VisitOverview
│ ├── Http/
│ │ ├── Controllers/ # DatabaseBackup, Sitemap, Visit controllers
│ │ └── Middleware/
│ ├── Livewire/ # 18+ Livewire components (full-page + partials)
│ │ ├── Homepage/ # Homepage sub-components
│ │ ├── Layouts/ # Layout components
│ │ └── Partials/ # Shared partials
│ ├── Models/ # 29 Eloquent models
│ ├── Providers/
│ ├── Services/ # Service layer (e.g., OgImageService)
│ ├── Support/
│ └── Traits/ # HasStructuredData, etc.
├── config/ # 16 config files
├── database/
│ ├── migrations/ # 40+ migrations
│ ├── factories/
│ └── seeders/
├── resources/
│ ├── css/ # Tailwind entry
│ ├── js/ # Alpine.js / app entry
│ └── views/
│ ├── components/ # Blade layouts & UI components
│ ├── livewire/ # 18+ Livewire view templates
│ └── filament/ # Filament customizations
├── routes/
│ └── web.php # All web routes
├── public/
│ ├── css/ js/ img/ # Static assets
│ ├── sitemap.xml # Auto-generated sitemap
│ ├── robots.txt
│ └── llms.txt # LLM context file
├── index.html # Standalone landing page design (Webverse Creation)
└── tests/ # Pest test suite
| Model | Description |
|---|---|
User |
Admin authentication |
Service |
Business services (name, slug, description, image, price, duration, meta) |
SeoMeta |
NEW Comprehensive SEO storage (40+ fields, polymorphic + page_identifier) |
SiteSetting |
NEW Key-value site settings with JSON data per group, Redis-cached |
TickerItem |
NEW Homepage ticker strip items |
PortfolioItem |
NEW Homepage portfolio/work grid items |
PhilosophyPhase |
NEW Philosophy section phases (scroll-pinned left panel) |
PhilosophyCard |
NEW Philosophy section cards (right panel) |
SocialLink |
NEW Social media links with SVG icons |
FooterColumn |
NEW Footer navigation columns with JSON links |
Product |
Products with SKU, barcode, images, pricing, stock status |
ProductCategory |
Product categorization |
ProductFaq |
Per-product FAQ |
Blog |
Blog posts with sections, how-to steps, structured data |
BlogCategory |
Blog categorization |
BlogFaq |
Per-blog FAQ |
Category |
General categorization |
City |
City-specific landing pages (local SEO) |
CityFaq |
Per-city FAQ |
Contact |
Contact form submissions |
ContactPage |
Contact page CMS content |
Faq |
Global FAQ entries |
FeatureSection |
Feature/highlight sections |
Home |
Homepage CMS content |
Inquiry |
Customer inquiries |
OgImage |
Open Graph image management |
Page |
Generic CMS pages |
PrivacyPolicy |
Privacy policy content |
Tag |
Tagging system |
About / AboutPage |
About page content |
Visit |
Visitor tracking |
Full CRUD admin panel for: AboutPage, BlogCategory, Blog, City, ContactPage, FAQ, FeatureSection, Inquiry, OgImage, PrivacyPolicy, ProductCategory, Product, Service, Visit.
New Filament Resources: TickerItem, PortfolioItem, PhilosophyPhase, PhilosophyCard, SocialLink, FooterColumn.
New Filament Pages: ManageBrandSettings, ManageContactSettings, ManageHeroSection, ManageCtaSection, ManageHomepageSeo.
Widgets: InquiryChart, Logs viewer, VisitOverview dashboard.
| Component | Route | Description |
|---|---|---|
HomePage |
/ |
Main homepage |
BlogsPage |
/blogs |
Blog listing |
BlogDetail |
/blogs/{slug} |
Single blog post |
ServicesPage |
/services |
Services listing |
ServiceDetail |
/services/{slug} |
Single service |
ProductsPage |
/products |
Products listing |
ProductDetailPage |
/product/{slug} |
Single product |
ProductCategoryPage |
/product-categories/{slug} |
Category filtered products |
ContactUsPage |
/contact-us |
Contact form |
CityPage |
/{slug} |
City-specific SEO pages (catch-all) |
PrivacyPolicyPage |
/privacy-policy |
Privacy policy |
FeatureSectionComponent |
– | Feature highlights |
NewsletterSection |
– | Newsletter signup |
GET / → HomePage
GET /blogs → BlogsPage
GET /blogs/{slug} → BlogDetail
GET /services → ServicesPage
GET /services/{slug} → ServiceDetail
GET /products → ProductsPage
GET /product/{slug} → ProductDetailPage
GET /product-categories/{slug} → ProductCategoryPage
GET /contact-us → ContactUsPage
GET /privacy-policy → PrivacyPolicyPage
POST /track-visit → VisitController
POST /database/download → DatabaseBackupController (auth)
POST /sitemap/generate → SitemapController (auth)
GET /{slug} → CityPage (catch-all, last route)
- Full CMS Admin (Filament 3) — manage all content, pages, services, products, blogs, FAQs, cities
- SEO Engine — structured data (JSON-LD), Open Graph, per-page SEO meta, sitemap generation
- City-based Local SEO — dynamic city landing pages with city-specific FAQs
- Activity Logging — all model changes tracked via Spatie Activity Log
- Newsletter Integration — Spatie Newsletter (Mailchimp compatible)
- Visit Tracking — custom visitor analytics with geo-location
- Database Backup — one-click DB download from admin
- Image Optimization — Intervention Image with configurable variants
- Blog System — full blog with categories, FAQs, how-to schema, sections
- Product Catalog — products with categories, SKUs, FAQs, images gallery
- Docker Compose — 7 services: PHP 8.4 FPM (Bookworm), Nginx 1.27-alpine, PostgreSQL 18.2, Redis 8.0-alpine, Node 22-alpine, Mailpit, Queue worker + Scheduler
- PostgreSQL 18.2 — Migrated from MySQL. All migrations PG-compatible (
->after()calls removed,enumnoted as behavioral difference) - Redis 8.0 — Cache, sessions, queue all running on Redis with AOF persistence
- Git — Initialized on
main, active work ondevelopbranch - Makefile — 20+ Docker shortcuts (
make up,make dev,make shell,make db,make fresh, etc.) - Note: PG18 uses
/var/lib/postgresql(not/var/lib/postgresql/data) for PGDATA
All fire safety / Munshi references have been replaced with Webverse Creation branding across:
Config files:
config/app.php— Full business info rewrite (name, address, contact, 10 service types, social links, founding date)config/seo.php— Homepage title updated.env/.env.example— PG + Redis config, Webverse branding
Livewire Components (8 files):
HomePage.php,BlogsPage.php,ServicesPage.php,ServiceDetail.php,CityPage.php,ProductsPage.php,ProductCategoryPage.php,ProductDetailPage.php
Models (11 files):
Blog.php,Product.php,City.php,Tag.php,Home.php,About.php,Service.php,Category.php,Page.php,Contact.php,ContactPage.php
Filament Resources (2 files):
FeatureSectionResource.php,CityResource.php
Blade Templates (7 files):
feature-section.blade.php,404.blade.php,newsletter-section.blade.php,blog-detail.blade.php,city-page.blade.php,blogs-page.blade.php,a-c-section.blade.php
Public Files:
robots.txt— Sitemap URL → webverse.inllms.txt— Complete rewrite for Webversesite.webmanifest— Name, description, theme colors updated
Migration Compatibility:
- Removed 11
->after()calls (MySQL-only column positioning, silently ignored on PG) - 5
->enum()columns work on PG but behave differently for ALTER operations unsigned*()types in jobs migration handled by Laravel's grammar layer
Comprehensive SEO System (seo_meta table — 40+ fields):
- Polymorphic (
seoable_type/seoable_id) +page_identifierfor non-model pages - Fields: basic meta (title, description, keywords, canonical), Open Graph (title, desc, image, type, url, site_name, locale, dimensions), Twitter Card (card type, site, creator, title, desc, image), Article meta (author, section, published/modified times, tags), Schema.org (type + custom JSON-LD), Robots (full string + individual toggles + snippet controls), Geo (region, placename, position), Sitemap (include, changefreq, priority), Advanced (hreflang JSON, custom meta tags JSON, custom head HTML)
SeoMetamodel with Redis-cached static helpers (forPage(),setForPage())HasSeoMetatrait — added to all 11 existing models +PortfolioItemSeoMetaForm— reusable 9-tab Filament form component<x-seo-head>Blade component — renders all meta tags from aSeoMetainstance
Site Settings System:
site_settingstable withgroup(unique string) +data(JSON) per groupSiteSettingmodel with staticget(),set(),merge()— all Redis-cached- Convenience accessors:
::brand(),::contact(),::hero(),::cta(),::whatsapp() - Filament pages: ManageBrandSettings, ManageContactSettings, ManageHeroSection, ManageCtaSection, ManageHomepageSeo
Homepage Architecture (ported from index.html):
- New
webverse.blade.phplayout — dark theme, Cormorant Garamond + Jost fonts, CSS custom properties, loader, custom cursor, WhatsApp FAB, smooth scroll wrapper - CSS extracted to
public/css/webverse.css(2216 lines) - JS extracted to
public/js/webverse.js(1485 lines) — all vanilla, zero dependencies - 8 Blade partials in
resources/views/partials/homepage/: hero, ticker, services, philosophy, work, faq, cta, contact, footer HomePage.phpLivewire component loads all data from Redis-cached models- 6 new database tables:
ticker_items,portfolio_items,philosophy_phases,philosophy_cards,social_links,footer_columns - 6 new Filament resources for repeatable homepage items
- Services table extended with
short_description,icon_svg,sort_order,is_active
Still in seeders (Phase 3 work): ProductPpeSeeder, ProductConsumablesSeeder, ProductCategorySeeder contain old domain seed data — will be replaced when new content is seeded.
From the index.html landing page design:
- Brand: Webverse / Webverse Creation
- Domain: webverse.in
- Tagline: "Everything Digital. One Agency."
- Location: Vapi, Gujarat, India (396191)
- Email: webverse.creation@gmail.com
- Services: Web Design & Development, Mobile App Development, Digital Marketing & SEO, Cybersecurity Solutions, UI/UX Design, E-commerce & Brand Identity, Social Media Marketing, Business Automation
- Design Language: Dark theme (#06080f), teal (#2dd4bf) + indigo (#818cf8) accents, Cormorant Garamond + Jost fonts, glass-morphism UI, cinematic scroll animations
- Stats: 50+ projects, 95% retention, 2yr agency
- WhatsApp: +91 6356929824
| Service | Image | Ports | Notes |
|---|---|---|---|
| app | Custom PHP 8.4 FPM | 9000 | Extensions: pdo_pgsql, redis, gd (avif/webp), intl, bcmath, opcache+JIT, pcntl, exif |
| nginx | nginx:1.27-alpine | 80 | Reverse proxy, Docker DNS resolver, variable-based Vite HMR upstream |
| postgres | postgres:18.2-bookworm | 5432 | PGDATA: /var/lib/postgresql, named volume |
| redis | redis:8.0-alpine | 6379 | AOF persistence, 256MB max, allkeys-lru |
| node | node:22-alpine | 5173 | Vite HMR dev server (dev profile only) |
| mailpit | axllent/mailpit | 8025/1025 | Email testing (dev profile only) |
| queue | Same as app | — | php artisan queue:work redis |
| scheduler | Same as app | — | php artisan schedule:work |
docker-compose.yml— Service definitionsdocker/php/Dockerfile— Multi-stage PHP 8.4 builddocker/nginx/default.conf— Nginx config with Vite HMR proxydocker/php/entrypoint.sh— Auto setup (composer, migrate, cache)docker/php/php-local.ini— PHP dev settingsdocker/php/opcache.ini— OPcache + JIT settingsMakefile— 20+ Docker shortcuts
main— production-readydevelop— active development- Feature branches as needed
- Docker & Docker Compose v2
- Git
git clone <repo-url> && cd Webverse
cp .env.example .env
make up # Start all services
make shell # Enter PHP container
# Inside container: composer install, migrate, etc. are auto-run by entrypoint.sh
make node-dev # Start Vite HMR (optional, for frontend dev)make up # Start containers (detached)
make down # Stop containers
make dev # Start with dev profile (Vite HMR + Mailpit)
make shell # Enter PHP container shell
make db # Enter PostgreSQL shell
make redis # Enter Redis CLI
make artisan # Run artisan commands (e.g., make artisan CMD="migrate")
make migrate # Run migrations
make fresh # Fresh migrate + seed
make seed # Run seeders
make clear # Clear all caches
make cache # Cache config + routes + views
make test # Run Pest tests
make nuke # Destroy everything (volumes + orphans)
make status # Show container statuscomposer install
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan storage:link
npm run dev
composer run dev # Starts server, queue, logs, and Vite concurrently# Dev server (concurrent: serve + queue + pail + vite)
composer run dev
# Build assets for production
npm run build
# Run tests
./vendor/bin/pest
# Code style
./vendor/bin/pint
# Generate sitemap
php artisan sitemap:generate- Initialize Git repository with proper .gitignore
- Create Docker setup (docker-compose.yml, Dockerfile, nginx config)
- Switch database from MySQL to PostgreSQL 18.2
- Add Redis configuration (cache, session, queue drivers)
- Create Makefile with 20+ shortcuts
- Fix nginx crash-loop (Vite HMR proxy + DNS resolver)
- Rebrand: config/app.php — full business info rewrite
- Rebrand: config/seo.php — homepage title
- Rebrand: .env / .env.example — PG + Redis + Webverse
- Rebrand: All 8 Livewire component SEO metadata
- Rebrand: All 11 Model SEO fallbacks + schema data
- Rebrand: 2 Filament admin resource helper texts
- Rebrand: 7 Blade template view files
- Rebrand: robots.txt, llms.txt, site.webmanifest
- Fix: MySQL → PG migration compatibility (11
->after()calls removed)
- Replace fire safety product seeders with digital agency services
- Seed Webverse services (10 service types from config)
- Create digital agency blog content seeds
- Update FAQ seeds with digital agency FAQs (from index.html)
- Seed city pages with relevant Gujarat cities
- Import index.html design into Laravel Blade layout
- Update fonts (Cormorant Garamond + Jost) in Blade/Tailwind
- Update color scheme (dark #06080f, teal/indigo accents)
- Implement glass-morphism components
- Update WhatsApp FAB and contact details
- Update OG images and branding assets
- Configure newsletter for Webverse
- Update sitemap generation
- Portfolio/case studies section
- Service request/quote system
- Client portal groundwork
- Write Pest tests for all rebranded pages
- Production Docker config (SSL, optimization)
- CI/CD pipeline
- Performance audit