
Protekt — Medical Mask Shop Vue.js Website Template
by MetropolitanHost · updated Apr 27, 2026
Download this template, and every other one, with All-Access.
- Monthlybilled $27 every month$27/mo
- Yearlybilled $117 every year$9.75/mo
- Lifetimeone payment$349
Also in these formats
Need only this one? Buy it alone for $16 on MetropolitanHost
- Framework
- Vue 3+
- Libraries
- Swiper, Isotope, Slick, Magnific Popup
- Browsers
- Chrome, Firefox, Safari, Edge
- Responsive
- Yes - Mobile First
- Documentation
- Included
- Updates
- Free lifetime updates
- W3C valid
- Yes
- Version
- 11.2.0
About This Item
Protekt Vue is a feature-rich Medical Mask Shop web application built as a fully functional Vue 3 app using the Composition API, Vite, and Bootstrap 4. It ships with 21+ view components, a filterable mask shop grid, a news blog module, a certifications dashboard, written entirely with script setup and the Composition API — zero Options API usage.
Built for Vue developers delivering medical mask shop and PPE e-commerce sites. The codebase uses Vue 3 Composition API throughout — ref(), reactive(), computed(), watch(), and composables for shared logic. Single File Components (.vue) keep template, script setup, and scoped styles co-located. Replace the static JSON data sources with any REST API or headless CMS and the reactive layer adapts immediately.
Everything in the Package
- 21+ view-level Single File Components with Vue Router 4 history mode routing
- Vue 3 with script setup syntax and Vite — fast HMR dev server and optimised production build
- Vue Router 4 — history mode with lazy-loaded routes via defineAsyncComponent
- Pinia store for global state management — state, getters, and actions with localStorage persist plugin
- Bootstrap 4 — responsive grid and utility classes
- VeeValidate 4 — schema-based form validation with v-model two-way binding on all forms
- Swiper Vue — touch-friendly carousels via SwiperSlide components
- All data sourced from typed JSON in src/data/ — swap to fetch() or axios for live API
- Scoped CSS inside each .vue file — no global style bleed between components
- Retina-ready, fully responsive from 320px to 1920px+
- Vue DevTools compatible — Pinia store fully inspectable in browser
Composition API and Component Architecture
- All views use script setup — defineProps, defineEmits, ref(), computed(), and watch()
- Composables encapsulate reusable logic — useFilter, useCart, useForm, and feature-specific hooks
- Pinia store: defineStore with typed state, computed getters, and async actions
- defineAsyncComponent applied to secondary view bundles — route-level code splitting
- v-model, v-for, v-if, v-show used throughout — idiomatic Vue 3 template syntax
- storeToRefs used for reactive destructuring of Pinia store properties in setup()
- Folder structure: src/views/, src/components/, src/composables/, src/stores/, src/data/
All 21 Views
- /home-v1 — v2 — Two distinct hero and PPE product showcase layouts
- /about — Company story and quality mission
- /shop — Mask product grid, left-sidebar shop, and shop detail
- /services — Mask and PPE service offerings
- /portfolio — Mask product and certification showcase archive
- /news — PPE guidance and face mask editorial
- /news-details — Full article view
- /contact — Contact form and quote enquiry
Key Features
- 21 Fully Designed HTML5 Pages across home, shop, services, portfolio, news, and contact
- 2 Unique Home Layouts — distinct hero styles and PPE product showcase arrangements
- Bootstrap 4 — responsive, mobile-first grid system
- Shop Section — mask product grid, left-sidebar shop, and shop detail pages
- Portfolio Gallery — mask product and certification showcase archive
- News Blog — PPE guidance and face mask editorial content
- ionRangeSlider — price range filtering for mask and PPE browsing
- CounterUp Animated Statistics — masks sold, customers, and lab-tests counters
- EasyPieChart — animated certification and product quality charts
- Isotope Grid Filtering — filter products by mask type or category
- MeanMenu — mobile-optimised responsive navigation
- Slick Carousel — featured mask and customer testimonial sliders
Performance and SEO
- useHead (VueUse) sets per-route title and meta description reactively for SEO
- defineAsyncComponent and Suspense code-split secondary view bundles on route change
- Vite production build applies Rollup tree-shaking, chunk splitting, and asset fingerprinting
- All images carry descriptive :alt bindings meeting WCAG 1.1.1
- Google Fonts loaded with font-display: swap to prevent invisible-text flash
Use Cases
- Medical Mask Shops: Fast Vue 3 SPA storefront with Composition API — reactive, composable, and easy to maintain
- Vue Developers: Composables, Pinia stores, and Vue Router 4 patterns — production architecture from day one
- Freelancers and Agencies: Deliver a polished medical mask shop site to clients with Vite build tooling and DevTools support
- Startups: Lightweight bundle, defineAsyncComponent code-splitting, and VeeValidate forms ready to go
Credits and Dependencies
- Vue 3 — MIT License
- Vite — MIT License
- Vue Router 4 — MIT License
- Pinia — MIT License
- VeeValidate 4 — MIT License
- Bootstrap 4 — MIT License
- Swiper Vue — MIT License
- Slick — MIT License
- Isotope — MIT License
- CounterUp — MIT License
- Magnific — MIT License
- Lightbox — MIT License
- ionRange — MIT License
- Chart — MIT License
- Font Awesome 6 — Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT
- Google Fonts — SIL Open Font License
- Demo images: Unsplash — Unsplash License (free for commercial use, no attribution required)
- Demo images: Freepik — Freepik License (free for commercial use with attribution)
- All demo images are for preview purposes only and are NOT included in the download.
Changelog
v1.0 2026-03-22
- Vue 3 Composition API with script setup syntax throughout
- Vite build tooling with fast HMR and optimised production output
- 21+ view-level Single File Components with Vue Router 4 history mode
- Pinia store with localStorage persist plugin for global state management
- VeeValidate 4 schema-based form validation on all form views
- defineAsyncComponent route-level code splitting on secondary views
- useHead per-route SEO meta tags via VueUse