Nuxt 3 + Vuetify marketing website for Beasylink Projects, a Witbank (Emalahleni), Mpumalanga service business offering welding, plumbing, and construction work.
This project is a static-first, SEO-ready business site focused on local lead generation:
- Sales-focused landing page with call and WhatsApp CTAs
- Dedicated services pages for welding, plumbing, and construction
- Gallery, about, and contact pages
- Structured SEO (meta tags, OG, Twitter, canonical URLs, JSON-LD, robots)
- Image strategy based on
@nuxt/imagewith responsive lazy-loaded assets - Shared composables for business details and SEO metadata
- Nuxt 3
- Vuetify 3
- @nuxt/image for responsive images and optimization workflow
npm install
npm run devOpen http://localhost:3000.
npm run build
npm run generate
npm run previewStatic output is generated to .output/public and is ready for Netlify deployment.
- Shared SEO helper:
composables/useSeo.ts - Per-page title/description/path defined directly in each page (
pages/*.vue)
- Home page LocalBusiness schema:
pages/index.vue - Service schema per service page:
pages/services/welding.vuepages/services/plumbing.vuepages/services/construction.vue
- Robots:
public/robots.txt
Placeholder images live in public/images/ with descriptive filenames.
To replace with real project photos:
- Keep the same filenames or update references in pages/composables.
- Prefer modern compressed formats (
.webpor.avif) when available. - Keep descriptive filenames and alt text aligned (e.g.
welding-gate-installation-witbank). - Keep dimensions proportional and avoid oversized source files.
Nuxt Image (<NuxtImg>) already handles responsive sizes and lazy loading on non-critical images.
netlify.toml is included with:
- build command:
npm run generate - publish directory:
.output/public
Deploy steps:
- Push repository to your Git provider.
- Create a Netlify site from the repo.
- Confirm build command and publish dir from
netlify.toml. - Trigger deploy.
Update business-wide details in one place:
composables/useBusinessDetails.ts
This composable contains phone, WhatsApp, service areas, opening hours, and core services.