A modern e-commerce shopping app built with Vue 3. Supports separate user and admin experiences, full cart management, and order checkout.
🛍️ Live demo: allure-neon.vercel.app
Customers
- Register and log in with JWT-based authentication
- Browse the active product catalog
- View individual product details
- Add items to cart, update quantities, and remove items
- See per-item subtotals and cart total
- Checkout and place orders
- View order confirmation and order history
- View and manage profile details
Admins
- Access a dedicated admin dashboard
- Create, update, and deactivate/reactivate products
- View all orders across all users
General
- Dynamic navbar (shows Register/Login for guests, Logout for authenticated users)
- Light / Dark mode toggle
- Toast notifications via Notyf
- Role-based route access (admins cannot add to cart; guests cannot access protected pages)
- Single-page app with client-side routing via Vue Router
| Layer | Technology |
|---|---|
| Framework | Vue 3 |
| Build Tool | Vite |
| State Management | Pinia |
| HTTP Client | Axios |
| Styling | Bootstrap 5 + Bootstrap Icons |
| Notifications | Notyf |
| Deployment | Vercel |
- Node.js v18 or higher
- npm
- A running backend API (configure the URL in your
.envfile)
# Clone the repository
git clone https://github.com/deyperfect/allure.git
cd allure
# Install dependencies
npm installCreate a .env.local file in the project root for local development:
VITE_JOB_TRACKER_API=http://localhost:4000For production, update .env.production with your hosted API URL.
# Start the development server
npm run devThe app will be available at http://localhost:5173.
npm run buildnpm run previewsrc/
├── api.js # Axios instance with auth interceptor
├── main.js # App entry point
├── App.vue # Root component
├── stores/
│ └── global.js # Pinia store (user state, cart count)
├── components/
│ ├── NavbarComponent.vue
│ ├── ThemeToggle.vue
│ ├── EditProductButton.vue
│ └── ToggleProductStatusButton.vue
└── pages/
├── RegisterPage.vue
├── LoginPage.vue
├── ProductsPage.vue
├── ProductDetailsPage.vue
├── CartViewPage.vue
├── CheckoutPage.vue
├── OrderConfirmationPage.vue
├── AdminDashboardPage.vue
├── AddProductPage.vue
├── EditProductPage.vue
└── ProfilePage.vue
This project is deployed via Vercel. Connect the repository to Vercel and it will automatically build and deploy on every push to main. Make sure to set the VITE_JOB_TRACKER_API environment variable in your Vercel project settings.
- Edryl Palinis
- Norman Chingcuanco