├── docker └── .gitkeep ├── modules ├── .gitkeep ├── sentry │ └── templates │ │ └── server.config.txt └── vuetify │ └── index.ts ├── packages ├── .gitkeep └── config │ └── eslint │ ├── pinia │ └── index.mjs │ └── index.d.ts ├── server ├── api │ ├── users │ │ ├── .gitkeep │ │ └── [userId] │ │ │ ├── devices │ │ │ ├── index.get.ts │ │ │ └── index.delete.ts │ │ │ ├── notifications │ │ │ ├── mark-all-read.patch.ts │ │ │ ├── mark-all-unread.patch.ts │ │ │ ├── unread.get.ts │ │ │ └── index.get.ts │ │ │ └── shortcuts │ │ │ ├── [shortcutUId].delete.ts │ │ │ └── index.get.ts │ ├── payments │ │ ├── stripe │ │ │ ├── products │ │ │ │ ├── index.get.ts │ │ │ │ ├── [productId] │ │ │ │ │ ├── index.get.ts │ │ │ │ │ ├── prices │ │ │ │ │ │ ├── [priceId].get.ts │ │ │ │ │ │ ├── free.get.ts │ │ │ │ │ │ ├── index.get.ts │ │ │ │ │ │ ├── [priceId].patch.ts │ │ │ │ │ │ └── index.post.ts │ │ │ │ │ ├── index.delete.ts │ │ │ │ │ └── index.patch.ts │ │ │ │ └── index.post.ts │ │ │ └── customers │ │ │ │ ├── [customerId] │ │ │ │ ├── subscriptions │ │ │ │ │ ├── index.get.ts │ │ │ │ │ ├── [subscriptionId] │ │ │ │ │ │ ├── index.get.ts │ │ │ │ │ │ ├── resume.put.ts │ │ │ │ │ │ ├── cancel.delete.ts │ │ │ │ │ │ └── index.patch.ts │ │ │ │ │ └── index.post.ts │ │ │ │ ├── index.patch.ts │ │ │ │ ├── portal.get.ts │ │ │ │ └── checkout.post.ts │ │ │ │ └── index.post.ts │ │ ├── payos │ │ │ └── checkout.post.ts │ │ └── vnpay │ │ │ └── checkout.post.ts │ ├── scopes.get.ts │ ├── faq.get.ts │ └── health.get.ts ├── utils │ ├── auth │ │ └── index.ts │ ├── payment │ │ └── index.ts │ ├── array.ts │ ├── stripe │ │ ├── portal.ts │ │ └── index.ts │ ├── s3.ts │ ├── index.ts │ ├── params.ts │ ├── error.ts │ ├── url.ts │ └── db.ts ├── db │ ├── seeds │ │ ├── index.seed.ts │ │ └── all.seed.ts │ └── schemas │ │ ├── user_shortcuts.schema.ts │ │ ├── user_devices.schema.ts │ │ ├── credit_histories.schema.ts │ │ ├── sys_notifications.schema.ts │ │ ├── index.ts │ │ └── credit_packages.schema.ts ├── templates │ ├── magic_link.html │ ├── recovery.html │ ├── email_change.html │ ├── invite.html │ └── confirmation.html ├── tsconfig.json └── plugins │ └── vuetify.fix.ts ├── app ├── @core │ ├── scss │ │ ├── base │ │ │ ├── skins │ │ │ │ └── _index.scss │ │ │ ├── libs │ │ │ │ └── vuetify │ │ │ │ │ └── _index.scss │ │ │ ├── placeholders │ │ │ │ ├── _default-layout.scss │ │ │ │ ├── _index.scss │ │ │ │ └── _misc.scss │ │ │ ├── _default-layout.scss │ │ │ ├── _dark.scss │ │ │ └── _misc.scss │ │ └── template │ │ │ ├── skins │ │ │ └── _index.scss │ │ │ ├── libs │ │ │ ├── vuetify │ │ │ │ ├── index.scss │ │ │ │ └── components │ │ │ │ │ ├── _tooltip.scss │ │ │ │ │ ├── _otp-input.scss │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── _dialog.scss │ │ │ │ │ ├── _list.scss │ │ │ │ │ └── _avatar.scss │ │ │ └── swiper.scss │ │ │ ├── placeholders │ │ │ ├── _index.scss │ │ │ ├── _misc.scss │ │ │ ├── _default-layout-horizontal-nav.scss │ │ │ ├── _nav.scss │ │ │ └── _default-layout-vertical-nav.scss │ │ │ ├── index.scss │ │ │ └── _default-layout-w-horizontal-nav.scss │ ├── utils │ │ ├── formatDistanceToNow.ts │ │ ├── vuetify.ts │ │ └── createUrl.ts │ ├── components │ │ ├── DialogCloseBtn.vue │ │ ├── CustomizerSection.vue │ │ └── AppDrawerHeaderSection.vue │ └── enums.ts ├── plugins │ ├── iconify │ │ ├── package.json │ │ └── index.ts │ ├── casl.ts │ ├── loading.client.ts │ ├── auth.ts │ ├── confirmation.client.ts │ └── layouts.ts ├── utils │ ├── constants.ts │ ├── types │ │ ├── stripe.ts │ │ └── index.ts │ ├── array.ts │ ├── error.ts │ └── browser.ts ├── @layouts │ ├── styles │ │ ├── _classes.scss │ │ ├── index.scss │ │ ├── _rtl.scss │ │ ├── _global.scss │ │ └── _mixins.scss │ ├── symbols.ts │ ├── components │ │ ├── VNodeRenderer.tsx │ │ └── NavbarThemeSwitcher.vue │ ├── plugins │ │ └── casl.ts │ └── enums.ts ├── assets │ ├── styles │ │ ├── styles.scss │ │ └── variables │ │ │ ├── _template.scss │ │ │ └── _vuetify.scss │ └── images │ │ ├── pages │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 401.png │ │ ├── 404.png │ │ ├── pose_m1.png │ │ ├── iphone-11.png │ │ ├── pose-fs-9.png │ │ ├── tree-pot.png │ │ ├── background-1.jpg │ │ ├── background-2.jpg │ │ ├── background-3.jpg │ │ ├── empty-cart.png │ │ ├── google-home.png │ │ ├── guitar-course.png │ │ ├── shopping-girl.png │ │ ├── singing-course.png │ │ ├── boy-with-tablet.png │ │ ├── illustration-john.png │ │ ├── misc-401-object.png │ │ ├── misc-404-object.png │ │ ├── misc-coming-soon.png │ │ ├── themeselection-qr.png │ │ ├── TimelineRectangle1.png │ │ ├── TimelineRectangle2.png │ │ ├── TimelineRectangle3.png │ │ ├── TimelineRectangle4.png │ │ ├── app-academy-tutor-1.png │ │ ├── app-academy-tutor-2.png │ │ ├── app-academy-tutor-3.png │ │ ├── app-academy-tutor-4.png │ │ ├── app-academy-tutor-5.png │ │ ├── app-academy-tutor-6.png │ │ ├── section-title-icon.png │ │ ├── app-search-header-bg.png │ │ ├── misc-under-maintenance.png │ │ ├── user-profile-header-bg.png │ │ ├── auth-v1-login-mask-dark.png │ │ ├── auth-v1-login-mask-light.png │ │ ├── auth-v2-login-mask-dark.png │ │ ├── auth-v2-login-mask-light.png │ │ ├── boy-academy-illustration.png │ │ ├── instructor-poster-image.png │ │ ├── misc-coming-soon-object.png │ │ ├── auth-v1-register-mask-dark.png │ │ ├── auth-v1-register-mask-light.png │ │ ├── auth-v2-register-mask-dark.png │ │ ├── auth-v2-register-mask-light.png │ │ ├── create-deal-review-complete.png │ │ ├── girl-academy-illustration.png │ │ ├── academy-course-illustration1.png │ │ ├── misc-under-maintenance-object.png │ │ ├── auth-v1-reset-password-mask-dark.png │ │ ├── auth-v2-login-illustration-dark.png │ │ ├── auth-v2-login-illustration-light.png │ │ ├── auth-v2-reset-password-mask-dark.png │ │ ├── register-multi-step-illustration.png │ │ ├── academy-course-illustration2-dark.png │ │ ├── academy-course-illustration2-light.png │ │ ├── auth-v1-forgot-password-mask-dark.png │ │ ├── auth-v1-forgot-password-mask-light.png │ │ ├── auth-v1-reset-password-mask-light.png │ │ ├── auth-v2-forgot-password-mask-dark.png │ │ ├── auth-v2-forgot-password-mask-light.png │ │ ├── auth-v2-register-illustration-dark.png │ │ ├── auth-v2-reset-password-mask-light.png │ │ ├── auth-v2-register-illustration-light.png │ │ ├── auth-v2-two-steps-illustration-dark.png │ │ ├── auth-v2-two-steps-illustration-light.png │ │ ├── auth-v2-verify-email-illustration-dark.png │ │ ├── auth-v2-verify-email-illustration-light.png │ │ ├── auth-v2-forgot-password-illustration-dark.png │ │ ├── auth-v2-forgot-password-illustration-light.png │ │ ├── auth-v2-login-illustration-bordered-dark.png │ │ ├── auth-v2-login-illustration-bordered-light.png │ │ ├── auth-v2-reset-password-illustration-dark.png │ │ ├── auth-v2-reset-password-illustration-light.png │ │ ├── auth-v2-register-illustration-bordered-dark.png │ │ ├── auth-v2-register-illustration-bordered-light.png │ │ ├── auth-v2-two-steps-illustration-bordered-dark.png │ │ ├── auth-v2-two-steps-illustration-bordered-light.png │ │ ├── auth-v2-verify-email-illustration-bordered-dark.png │ │ ├── auth-v2-reset-password-illustration-bordered-dark.png │ │ ├── auth-v2-verify-email-illustration-bordered-light.png │ │ ├── auth-v2-forgot-password-illustration-bordered-dark.png │ │ ├── auth-v2-forgot-password-illustration-bordered-light.png │ │ └── auth-v2-reset-password-illustration-bordered-light.png │ │ ├── cards │ │ ├── trophy.png │ │ ├── 4-square.png │ │ ├── cellphone.png │ │ ├── iPhone-bg.png │ │ ├── pose-m-9.png │ │ ├── awesome-icon.png │ │ ├── hp-envy-x360.png │ │ ├── samsung-s22.png │ │ ├── tabs-console.png │ │ ├── tabs-desktop.png │ │ ├── tabs-mobile.png │ │ ├── 4-square-dark.png │ │ ├── apple-mac-mini.png │ │ ├── delta-web-app.png │ │ ├── google-pixel-6.png │ │ ├── illustration-1.png │ │ ├── illustration-2.png │ │ ├── illustration-3.png │ │ ├── illustration-4.png │ │ ├── oneplus-9-pro.png │ │ ├── paypal-primary.png │ │ ├── xbox-series-x.png │ │ ├── 3d-illustration.png │ │ ├── accounting-logo.png │ │ ├── apple-iphone-x-lg.png │ │ ├── bank-credit-card.png │ │ ├── ecommerce-website.png │ │ ├── nintendo-switch.png │ │ ├── ps4-joystick-lg.png │ │ ├── apple-iPhone-13-pro.png │ │ ├── dell-inspiron-3000.png │ │ ├── delta-web-app-dark.png │ │ ├── finance-app-design.png │ │ ├── logo-credit-card-2.png │ │ ├── sales-overview-logo.png │ │ ├── sony-play-station-5.png │ │ ├── 3d-illustration-dark.png │ │ ├── apple-watch-green-lg.png │ │ ├── cleaning-service-icon.png │ │ ├── ecommerce-website-dark.png │ │ ├── illustration-john-dark.png │ │ ├── logo-mastercard-small.png │ │ ├── marketing-expense-logo.png │ │ ├── finance-app-design-dark.png │ │ ├── illustration-daisy-dark.png │ │ ├── illustration-daisy-light.png │ │ └── illustration-john-light.png │ │ ├── eCommerce │ │ ├── 1.png │ │ ├── 10.png │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 14.png │ │ ├── 15.png │ │ ├── 16.png │ │ ├── 17.png │ │ ├── 18.png │ │ ├── 19.png │ │ ├── 2.png │ │ ├── 20.png │ │ ├── 21.png │ │ ├── 22.png │ │ ├── 23.png │ │ ├── 24.png │ │ ├── 25.png │ │ ├── 26.png │ │ ├── 27.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── 9.png │ │ └── rocket.png │ │ ├── logos │ │ ├── aviato.png │ │ ├── bitbank.png │ │ ├── chrome.png │ │ ├── google.png │ │ ├── paypal.png │ │ ├── reddit.png │ │ ├── twitter.png │ │ ├── zipcar.png │ │ ├── facebook.png │ │ ├── instagram.png │ │ ├── linkedin.png │ │ └── mastercard.png │ │ ├── banner │ │ ├── banner-1.jpg │ │ ├── banner-2.jpg │ │ ├── banner-3.jpg │ │ ├── banner-4.jpg │ │ ├── banner-5.jpg │ │ ├── banner-6.jpg │ │ ├── banner-7.jpg │ │ ├── banner-8.jpg │ │ ├── banner-9.jpg │ │ ├── banner-10.jpg │ │ ├── banner-11.jpg │ │ ├── banner-12.jpg │ │ ├── banner-13.jpg │ │ ├── banner-14.jpg │ │ ├── banner-15.jpg │ │ ├── banner-16.jpg │ │ ├── banner-17.jpg │ │ ├── banner-18.jpg │ │ ├── banner-19.jpg │ │ ├── banner-20.jpg │ │ ├── banner-21.jpg │ │ ├── banner-22.jpg │ │ ├── banner-23.jpg │ │ ├── banner-24.jpg │ │ ├── banner-25.jpg │ │ ├── banner-26.jpg │ │ ├── banner-27.jpg │ │ ├── banner-28.jpg │ │ ├── banner-29.jpg │ │ ├── banner-30.jpg │ │ ├── banner-31.jpg │ │ ├── banner-32.jpg │ │ ├── banner-33.jpg │ │ ├── banner-34.jpg │ │ ├── banner-35.jpg │ │ ├── banner-36.jpg │ │ ├── banner-37.jpg │ │ ├── banner-38.jpg │ │ ├── banner-39.jpg │ │ └── banner-40.jpg │ │ ├── icons │ │ ├── file │ │ │ ├── txt.png │ │ │ └── xls.png │ │ ├── brands │ │ │ ├── asana.png │ │ │ ├── aws.png │ │ │ ├── mysql.png │ │ │ ├── react.png │ │ │ ├── slack.png │ │ │ ├── vue.png │ │ │ ├── angular.png │ │ │ ├── behance.png │ │ │ ├── github.png │ │ │ ├── google.png │ │ │ ├── laravel.png │ │ │ ├── twitter.png │ │ │ ├── dribbble.png │ │ │ ├── facebook.png │ │ │ ├── firebase.png │ │ │ ├── instagram.png │ │ │ ├── linkedin.png │ │ │ └── mailchimp.png │ │ ├── countries │ │ │ ├── au.png │ │ │ ├── br.png │ │ │ ├── cn.png │ │ │ ├── fr.png │ │ │ ├── in.png │ │ │ └── us.png │ │ ├── payments │ │ │ ├── visa.png │ │ │ ├── paypal.png │ │ │ ├── mastercard.png │ │ │ ├── visa-dark.png │ │ │ ├── visa-light.png │ │ │ ├── img │ │ │ │ ├── ae-dark.png │ │ │ │ ├── dc-dark.png │ │ │ │ ├── dc-light.png │ │ │ │ ├── jcb-dark.png │ │ │ │ ├── jcb-light.png │ │ │ │ ├── visa-dark.png │ │ │ │ ├── master-dark.png │ │ │ │ ├── mastercard.png │ │ │ │ ├── paypal-dark.png │ │ │ │ ├── visa-light.png │ │ │ │ ├── paypal-light.png │ │ │ │ └── american-express.png │ │ │ └── american-express.png │ │ └── project-icons │ │ │ ├── pdf.png │ │ │ ├── vue.png │ │ │ ├── xd.png │ │ │ ├── event.png │ │ │ ├── figma.png │ │ │ ├── html5.png │ │ │ ├── react.png │ │ │ ├── python.png │ │ │ ├── sketch.png │ │ │ ├── social.png │ │ │ ├── support.png │ │ │ ├── twitter.png │ │ │ └── xamarin.png │ │ ├── misc │ │ ├── fleet-car.png │ │ ├── misc-mask-dark.png │ │ ├── misc-mask-light.png │ │ ├── pricing-illustration-1.png │ │ ├── pricing-illustration-2.png │ │ └── pricing-illustration-3.png │ │ ├── avatars │ │ ├── avatar-1.png │ │ ├── avatar-10.png │ │ ├── avatar-11.png │ │ ├── avatar-12.png │ │ ├── avatar-13.png │ │ ├── avatar-14.png │ │ ├── avatar-15.png │ │ ├── avatar-2.png │ │ ├── avatar-3.png │ │ ├── avatar-4.png │ │ ├── avatar-5.png │ │ ├── avatar-6.png │ │ ├── avatar-7.png │ │ ├── avatar-8.png │ │ └── avatar-9.png │ │ ├── front-pages │ │ ├── misc │ │ │ ├── nav-img.png │ │ │ ├── product-image.png │ │ │ └── checkout-image.png │ │ ├── branding │ │ │ ├── logo-1.png │ │ │ ├── logo-2.png │ │ │ ├── logo-3.png │ │ │ ├── logo-4.png │ │ │ ├── logo-5.png │ │ │ ├── logo-1-dark.png │ │ │ ├── logo-1-light.png │ │ │ ├── logo-2-dark.png │ │ │ ├── logo-2-light.png │ │ │ ├── logo-3-dark.png │ │ │ ├── logo-3-light.png │ │ │ ├── logo-4-dark.png │ │ │ ├── logo-4-light.png │ │ │ ├── logo-5-dark.png │ │ │ └── logo-5-light.png │ │ ├── backgrounds │ │ │ ├── cta-bg.png │ │ │ ├── footer-bg.png │ │ │ ├── hero-bg.png │ │ │ └── hero-bg-dark.png │ │ └── landing-page │ │ │ ├── apple-icon.png │ │ │ ├── cta-dashboard.png │ │ │ ├── lets-contact.png │ │ │ ├── team-member-1.png │ │ │ ├── team-member-2.png │ │ │ ├── team-member-3.png │ │ │ ├── team-member-4.png │ │ │ ├── google-play-icon.png │ │ │ ├── hero-elements-dark.png │ │ │ ├── hero-dashboard-dark.png │ │ │ ├── hero-dashboard-light.png │ │ │ ├── hero-elements-light.png │ │ │ └── sitting-girl-with-laptop.png │ │ ├── ecommerce-images │ │ ├── product-1.png │ │ ├── product-10.png │ │ ├── product-11.png │ │ ├── product-12.png │ │ ├── product-13.png │ │ ├── product-14.png │ │ ├── product-15.png │ │ ├── product-16.png │ │ ├── product-17.png │ │ ├── product-18.png │ │ ├── product-19.png │ │ ├── product-2.png │ │ ├── product-20.png │ │ ├── product-21.png │ │ ├── product-22.png │ │ ├── product-23.png │ │ ├── product-24.png │ │ ├── product-25.png │ │ ├── product-26.png │ │ ├── product-27.png │ │ ├── product-28.png │ │ ├── product-29.png │ │ ├── product-3.png │ │ ├── product-30.png │ │ ├── product-4.png │ │ ├── product-5.png │ │ ├── product-6.png │ │ ├── product-7.png │ │ ├── product-8.png │ │ └── product-9.png │ │ ├── illustrations │ │ ├── faq-illustration.png │ │ └── account-settings-security-illustration.png │ │ └── svg │ │ ├── check.svg │ │ ├── radio-unchecked.svg │ │ ├── vector.svg │ │ ├── radio-checked.svg │ │ ├── checkbox-unchecked.svg │ │ ├── stepper-check.svg │ │ ├── checkbox-indeterminate.svg │ │ ├── checkbox-checked.svg │ │ ├── edit.svg │ │ └── google-docs.svg ├── composables │ ├── useAbility.ts │ └── useMessaging.ts ├── pages │ ├── index.vue │ ├── settings │ │ └── pricing.vue │ └── sandbox.vue ├── components │ └── VueApexCharts.client.vue ├── stores │ ├── faq.ts │ ├── s3.ts │ ├── health.ts │ └── payment.ts ├── layouts │ └── blank.vue ├── middleware │ ├── 01.health.global.ts │ ├── 02.authentication.global.ts │ └── 04.subscription.global.ts └── error.vue ├── pnpm-workspace.yaml ├── doppler.yaml ├── .npmrc ├── public ├── favicon.ico ├── images │ ├── pages │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 401.png │ │ ├── 404.png │ │ ├── 500.png │ │ ├── app-academy-tutor-1.png │ │ ├── app-academy-tutor-2.png │ │ ├── app-academy-tutor-3.png │ │ ├── app-academy-tutor-4.png │ │ ├── app-academy-tutor-5.png │ │ ├── app-academy-tutor-6.png │ │ └── user-profile-header-bg.png │ ├── eCommerce │ │ ├── 1.png │ │ ├── 10.png │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 14.png │ │ ├── 15.png │ │ ├── 16.png │ │ ├── 17.png │ │ ├── 18.png │ │ ├── 19.png │ │ ├── 2.png │ │ ├── 20.png │ │ ├── 21.png │ │ ├── 22.png │ │ ├── 23.png │ │ ├── 24.png │ │ ├── 25.png │ │ ├── 26.png │ │ ├── 27.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── 9.png │ │ └── rocket.png │ ├── icons │ │ ├── file │ │ │ ├── txt.png │ │ │ └── xls.png │ │ ├── countries │ │ │ ├── au.png │ │ │ ├── br.png │ │ │ ├── cn.png │ │ │ ├── fr.png │ │ │ ├── in.png │ │ │ └── us.png │ │ └── project-icons │ │ │ ├── xd.png │ │ │ ├── pdf.png │ │ │ ├── vue.png │ │ │ ├── event.png │ │ │ ├── figma.png │ │ │ ├── html5.png │ │ │ ├── python.png │ │ │ ├── react.png │ │ │ ├── sketch.png │ │ │ ├── social.png │ │ │ ├── support.png │ │ │ ├── twitter.png │ │ │ └── xamarin.png │ ├── avatars │ │ ├── avatar-1.png │ │ ├── avatar-10.png │ │ ├── avatar-11.png │ │ ├── avatar-12.png │ │ ├── avatar-13.png │ │ ├── avatar-14.png │ │ ├── avatar-15.png │ │ ├── avatar-2.png │ │ ├── avatar-3.png │ │ ├── avatar-4.png │ │ ├── avatar-5.png │ │ ├── avatar-6.png │ │ ├── avatar-7.png │ │ ├── avatar-8.png │ │ └── avatar-9.png │ ├── misc │ │ ├── checkout-image.png │ │ └── product-image.png │ └── ecommerce-images │ │ ├── product-1.png │ │ ├── product-10.png │ │ ├── product-11.png │ │ ├── product-12.png │ │ ├── product-13.png │ │ ├── product-14.png │ │ ├── product-15.png │ │ ├── product-16.png │ │ ├── product-17.png │ │ ├── product-18.png │ │ ├── product-19.png │ │ ├── product-2.png │ │ ├── product-20.png │ │ ├── product-21.png │ │ ├── product-22.png │ │ ├── product-23.png │ │ ├── product-24.png │ │ ├── product-25.png │ │ ├── product-26.png │ │ ├── product-27.png │ │ ├── product-28.png │ │ ├── product-29.png │ │ ├── product-3.png │ │ ├── product-30.png │ │ ├── product-4.png │ │ ├── product-5.png │ │ ├── product-6.png │ │ ├── product-7.png │ │ ├── product-8.png │ │ └── product-9.png └── firebase-messaging-sw.js ├── e2e ├── gui │ ├── __screenshots__ │ │ ├── should-display-the-dashboard.png │ │ ├── should-display-the-pricing-page.png │ │ ├── shoud-display-the-list-project-page.png │ │ ├── should-display-the-billing-plan-page.png │ │ ├── should-display-the-account-setting-page.png │ │ ├── should-display-the-create-project-page.png │ │ └── should-display-the-list-project-page-dark-theme.png │ └── dashboard.test.ts └── function │ └── dashboard.test.ts ├── tsconfig.json ├── puppeteer.config.mjs ├── shims.d.ts ├── i18n.config.ts ├── .vscode ├── extensions.json ├── vue-ts.code-snippets └── anchor-comments.code-snippets ├── eslint.config.mjs ├── vitest.config.ts ├── scripts └── generate-stripe.ts └── sentry.server.config.ts /docker/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server/api/users/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/@core/scss/base/skins/_index.scss: -------------------------------------------------------------------------------- 1 | @use "bordered"; 2 | -------------------------------------------------------------------------------- /server/utils/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './scope' 2 | -------------------------------------------------------------------------------- /app/@core/scss/template/skins/_index.scss: -------------------------------------------------------------------------------- 1 | @use "bordered"; 2 | -------------------------------------------------------------------------------- /server/utils/payment/index.ts: -------------------------------------------------------------------------------- 1 | export * from './vn/index' 2 | -------------------------------------------------------------------------------- /app/@core/scss/base/libs/vuetify/_index.scss: -------------------------------------------------------------------------------- 1 | @use "overrides"; 2 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - './' 3 | - 'packages/**' 4 | -------------------------------------------------------------------------------- /server/utils/array.ts: -------------------------------------------------------------------------------- 1 | export { omit } from '@base/utils/array' 2 | -------------------------------------------------------------------------------- /app/plugins/iconify/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "commonjs" 3 | } 4 | -------------------------------------------------------------------------------- /app/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const COOKIE_MAX_AGE_1_YEAR = 365 * 24 * 60 * 60 2 | -------------------------------------------------------------------------------- /doppler.yaml: -------------------------------------------------------------------------------- 1 | setup: 2 | - project: nuxt-template 3 | config: dev_personal 4 | -------------------------------------------------------------------------------- /app/@layouts/styles/_classes.scss: -------------------------------------------------------------------------------- 1 | .cursor-pointer { 2 | cursor: pointer; 3 | } 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | package-manager-strict=false 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /app/assets/styles/styles.scss: -------------------------------------------------------------------------------- 1 | // Write your overrides 2 | p { 3 | padding: 0; 4 | margin: 0; 5 | } 6 | -------------------------------------------------------------------------------- /public/images/pages/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/1.png -------------------------------------------------------------------------------- /public/images/pages/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/2.png -------------------------------------------------------------------------------- /public/images/pages/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/3.png -------------------------------------------------------------------------------- /public/images/pages/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/5.jpg -------------------------------------------------------------------------------- /public/images/pages/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/6.jpg -------------------------------------------------------------------------------- /app/@layouts/styles/index.scss: -------------------------------------------------------------------------------- 1 | @use "global"; 2 | @use "vue3-perfect-scrollbar/style.css"; 3 | @use "classes"; 4 | -------------------------------------------------------------------------------- /public/images/pages/401.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/401.png -------------------------------------------------------------------------------- /public/images/pages/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/404.png -------------------------------------------------------------------------------- /public/images/pages/500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/500.png -------------------------------------------------------------------------------- /app/assets/images/pages/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/1.png -------------------------------------------------------------------------------- /app/assets/images/pages/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/2.png -------------------------------------------------------------------------------- /app/assets/images/pages/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/3.png -------------------------------------------------------------------------------- /app/assets/images/pages/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/5.jpg -------------------------------------------------------------------------------- /app/assets/images/pages/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/6.jpg -------------------------------------------------------------------------------- /public/images/eCommerce/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/1.png -------------------------------------------------------------------------------- /public/images/eCommerce/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/10.png -------------------------------------------------------------------------------- /public/images/eCommerce/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/11.png -------------------------------------------------------------------------------- /public/images/eCommerce/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/12.png -------------------------------------------------------------------------------- /public/images/eCommerce/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/13.png -------------------------------------------------------------------------------- /public/images/eCommerce/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/14.png -------------------------------------------------------------------------------- /public/images/eCommerce/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/15.png -------------------------------------------------------------------------------- /public/images/eCommerce/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/16.png -------------------------------------------------------------------------------- /public/images/eCommerce/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/17.png -------------------------------------------------------------------------------- /public/images/eCommerce/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/18.png -------------------------------------------------------------------------------- /public/images/eCommerce/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/19.png -------------------------------------------------------------------------------- /public/images/eCommerce/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/2.png -------------------------------------------------------------------------------- /public/images/eCommerce/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/20.png -------------------------------------------------------------------------------- /public/images/eCommerce/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/21.png -------------------------------------------------------------------------------- /public/images/eCommerce/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/22.png -------------------------------------------------------------------------------- /public/images/eCommerce/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/23.png -------------------------------------------------------------------------------- /public/images/eCommerce/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/24.png -------------------------------------------------------------------------------- /public/images/eCommerce/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/25.png -------------------------------------------------------------------------------- /public/images/eCommerce/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/26.png -------------------------------------------------------------------------------- /public/images/eCommerce/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/27.png -------------------------------------------------------------------------------- /public/images/eCommerce/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/3.png -------------------------------------------------------------------------------- /public/images/eCommerce/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/4.png -------------------------------------------------------------------------------- /public/images/eCommerce/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/5.png -------------------------------------------------------------------------------- /public/images/eCommerce/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/6.png -------------------------------------------------------------------------------- /public/images/eCommerce/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/7.png -------------------------------------------------------------------------------- /public/images/eCommerce/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/8.png -------------------------------------------------------------------------------- /public/images/eCommerce/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/9.png -------------------------------------------------------------------------------- /app/assets/images/pages/401.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/401.png -------------------------------------------------------------------------------- /app/assets/images/pages/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/404.png -------------------------------------------------------------------------------- /app/plugins/iconify/index.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtPlugin(() => { 2 | // This plugin just requires icons import 3 | }) 4 | -------------------------------------------------------------------------------- /public/images/icons/file/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/file/txt.png -------------------------------------------------------------------------------- /public/images/icons/file/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/file/xls.png -------------------------------------------------------------------------------- /app/assets/images/cards/trophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/trophy.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/1.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/10.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/11.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/12.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/13.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/14.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/15.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/16.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/17.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/18.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/19.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/2.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/20.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/21.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/22.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/23.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/24.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/25.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/26.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/27.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/3.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/4.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/5.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/6.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/7.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/8.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/9.png -------------------------------------------------------------------------------- /app/assets/images/logos/aviato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/aviato.png -------------------------------------------------------------------------------- /app/assets/images/logos/bitbank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/bitbank.png -------------------------------------------------------------------------------- /app/assets/images/logos/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/chrome.png -------------------------------------------------------------------------------- /app/assets/images/logos/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/google.png -------------------------------------------------------------------------------- /app/assets/images/logos/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/paypal.png -------------------------------------------------------------------------------- /app/assets/images/logos/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/reddit.png -------------------------------------------------------------------------------- /app/assets/images/logos/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/twitter.png -------------------------------------------------------------------------------- /app/assets/images/logos/zipcar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/zipcar.png -------------------------------------------------------------------------------- /app/assets/images/pages/pose_m1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/pose_m1.png -------------------------------------------------------------------------------- /app/utils/types/stripe.ts: -------------------------------------------------------------------------------- 1 | export interface StripePricingMetadata { 2 | name: string 3 | marketing_features: string[] 4 | } 5 | -------------------------------------------------------------------------------- /public/images/avatars/avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-1.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-10.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-11.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-12.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-13.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-14.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-15.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-2.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-3.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-4.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-5.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-6.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-7.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-8.png -------------------------------------------------------------------------------- /public/images/avatars/avatar-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/avatars/avatar-9.png -------------------------------------------------------------------------------- /public/images/eCommerce/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/eCommerce/rocket.png -------------------------------------------------------------------------------- /app/@layouts/symbols.ts: -------------------------------------------------------------------------------- 1 | export const injectionKeyIsVerticalNavHovered: InjectionKey> = Symbol('isVerticalNavHovered') 2 | -------------------------------------------------------------------------------- /app/assets/images/banner/banner-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-1.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-2.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-3.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-4.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-5.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-6.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-7.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-8.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-9.jpg -------------------------------------------------------------------------------- /app/assets/images/cards/4-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/4-square.png -------------------------------------------------------------------------------- /app/assets/images/cards/cellphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/cellphone.png -------------------------------------------------------------------------------- /app/assets/images/cards/iPhone-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/iPhone-bg.png -------------------------------------------------------------------------------- /app/assets/images/cards/pose-m-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/pose-m-9.png -------------------------------------------------------------------------------- /app/assets/images/icons/file/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/file/txt.png -------------------------------------------------------------------------------- /app/assets/images/icons/file/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/file/xls.png -------------------------------------------------------------------------------- /app/assets/images/logos/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/facebook.png -------------------------------------------------------------------------------- /app/assets/images/logos/instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/instagram.png -------------------------------------------------------------------------------- /app/assets/images/logos/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/linkedin.png -------------------------------------------------------------------------------- /app/assets/images/misc/fleet-car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/fleet-car.png -------------------------------------------------------------------------------- /app/assets/images/pages/iphone-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/iphone-11.png -------------------------------------------------------------------------------- /app/assets/images/pages/pose-fs-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/pose-fs-9.png -------------------------------------------------------------------------------- /app/assets/images/pages/tree-pot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/tree-pot.png -------------------------------------------------------------------------------- /public/images/icons/countries/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/au.png -------------------------------------------------------------------------------- /public/images/icons/countries/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/br.png -------------------------------------------------------------------------------- /public/images/icons/countries/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/cn.png -------------------------------------------------------------------------------- /public/images/icons/countries/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/fr.png -------------------------------------------------------------------------------- /public/images/icons/countries/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/in.png -------------------------------------------------------------------------------- /public/images/icons/countries/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/countries/us.png -------------------------------------------------------------------------------- /public/images/misc/checkout-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/misc/checkout-image.png -------------------------------------------------------------------------------- /public/images/misc/product-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/misc/product-image.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-1.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-10.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-11.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-12.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-13.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-14.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-15.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-2.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-3.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-4.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-5.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-6.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-7.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-8.png -------------------------------------------------------------------------------- /app/assets/images/avatars/avatar-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/avatars/avatar-9.png -------------------------------------------------------------------------------- /app/assets/images/banner/banner-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-10.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-11.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-12.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-13.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-14.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-15.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-16.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-17.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-18.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-19.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-20.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-21.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-22.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-23.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-24.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-25.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-26.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-27.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-28.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-29.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-30.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-31.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-32.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-33.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-34.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-35.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-36.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-37.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-38.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-39.jpg -------------------------------------------------------------------------------- /app/assets/images/banner/banner-40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/banner/banner-40.jpg -------------------------------------------------------------------------------- /app/assets/images/cards/awesome-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/awesome-icon.png -------------------------------------------------------------------------------- /app/assets/images/cards/hp-envy-x360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/hp-envy-x360.png -------------------------------------------------------------------------------- /app/assets/images/cards/samsung-s22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/samsung-s22.png -------------------------------------------------------------------------------- /app/assets/images/cards/tabs-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/tabs-console.png -------------------------------------------------------------------------------- /app/assets/images/cards/tabs-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/tabs-desktop.png -------------------------------------------------------------------------------- /app/assets/images/cards/tabs-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/tabs-mobile.png -------------------------------------------------------------------------------- /app/assets/images/eCommerce/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/eCommerce/rocket.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/asana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/asana.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/aws.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/mysql.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/react.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/slack.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/vue.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/au.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/br.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/cn.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/fr.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/in.png -------------------------------------------------------------------------------- /app/assets/images/icons/countries/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/countries/us.png -------------------------------------------------------------------------------- /app/assets/images/logos/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/logos/mastercard.png -------------------------------------------------------------------------------- /app/assets/images/pages/background-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/background-1.jpg -------------------------------------------------------------------------------- /app/assets/images/pages/background-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/background-2.jpg -------------------------------------------------------------------------------- /app/assets/images/pages/background-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/background-3.jpg -------------------------------------------------------------------------------- /app/assets/images/pages/empty-cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/empty-cart.png -------------------------------------------------------------------------------- /app/assets/images/pages/google-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/google-home.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/xd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/xd.png -------------------------------------------------------------------------------- /app/assets/images/cards/4-square-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/4-square-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/apple-mac-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/apple-mac-mini.png -------------------------------------------------------------------------------- /app/assets/images/cards/delta-web-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/delta-web-app.png -------------------------------------------------------------------------------- /app/assets/images/cards/google-pixel-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/google-pixel-6.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-1.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-2.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-3.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-4.png -------------------------------------------------------------------------------- /app/assets/images/cards/oneplus-9-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/oneplus-9-pro.png -------------------------------------------------------------------------------- /app/assets/images/cards/paypal-primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/paypal-primary.png -------------------------------------------------------------------------------- /app/assets/images/cards/xbox-series-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/xbox-series-x.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/angular.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/behance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/behance.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/github.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/google.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/laravel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/laravel.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/twitter.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/visa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/visa.png -------------------------------------------------------------------------------- /app/assets/images/misc/misc-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/misc-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/misc/misc-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/misc-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/guitar-course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/guitar-course.png -------------------------------------------------------------------------------- /app/assets/images/pages/shopping-girl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/shopping-girl.png -------------------------------------------------------------------------------- /app/assets/images/pages/singing-course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/singing-course.png -------------------------------------------------------------------------------- /app/composables/useAbility.ts: -------------------------------------------------------------------------------- 1 | export function useAbility() { 2 | const caslStore = useCaslStore() 3 | 4 | return caslStore.ability 5 | } 6 | -------------------------------------------------------------------------------- /public/images/icons/project-icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/pdf.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/vue.png -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/index.scss: -------------------------------------------------------------------------------- 1 | @use "@base/@core/scss/base/libs/vuetify"; 2 | @use "overrides"; 3 | @use "components/index.scss"; 4 | -------------------------------------------------------------------------------- /app/assets/images/cards/3d-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/3d-illustration.png -------------------------------------------------------------------------------- /app/assets/images/cards/accounting-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/accounting-logo.png -------------------------------------------------------------------------------- /app/assets/images/cards/apple-iphone-x-lg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/apple-iphone-x-lg.png -------------------------------------------------------------------------------- /app/assets/images/cards/bank-credit-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/bank-credit-card.png -------------------------------------------------------------------------------- /app/assets/images/cards/ecommerce-website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/ecommerce-website.png -------------------------------------------------------------------------------- /app/assets/images/cards/nintendo-switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/nintendo-switch.png -------------------------------------------------------------------------------- /app/assets/images/cards/ps4-joystick-lg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/ps4-joystick-lg.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/dribbble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/dribbble.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/facebook.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/firebase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/firebase.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/instagram.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/linkedin.png -------------------------------------------------------------------------------- /app/assets/images/icons/brands/mailchimp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/brands/mailchimp.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/paypal.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/pdf.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/vue.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/xd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/xd.png -------------------------------------------------------------------------------- /app/assets/images/pages/boy-with-tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/boy-with-tablet.png -------------------------------------------------------------------------------- /app/assets/images/pages/illustration-john.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/illustration-john.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-401-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-401-object.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-404-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-404-object.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-coming-soon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-coming-soon.png -------------------------------------------------------------------------------- /app/assets/images/pages/themeselection-qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/themeselection-qr.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-1.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-10.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-11.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-12.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-13.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-14.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-15.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-16.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-17.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-18.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-19.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-2.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-20.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-21.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-22.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-23.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-24.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-25.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-26.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-27.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-28.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-29.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-3.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-30.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-4.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-5.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-6.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-7.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-8.png -------------------------------------------------------------------------------- /public/images/ecommerce-images/product-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/ecommerce-images/product-9.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/event.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/figma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/figma.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/html5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/html5.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/python.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/react.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/sketch.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/social.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/support.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/twitter.png -------------------------------------------------------------------------------- /public/images/icons/project-icons/xamarin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/icons/project-icons/xamarin.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-1.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-2.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-3.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-4.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-5.png -------------------------------------------------------------------------------- /public/images/pages/app-academy-tutor-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/app-academy-tutor-6.png -------------------------------------------------------------------------------- /server/db/seeds/index.seed.ts: -------------------------------------------------------------------------------- 1 | import { seed } from './all.seed' 2 | 3 | (async function () { 4 | await seed() 5 | 6 | process.exit(0) 7 | })() 8 | -------------------------------------------------------------------------------- /app/@core/scss/base/placeholders/_default-layout.scss: -------------------------------------------------------------------------------- 1 | %layout-navbar { 2 | color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity)); 3 | } 4 | -------------------------------------------------------------------------------- /app/assets/images/cards/apple-iPhone-13-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/apple-iPhone-13-pro.png -------------------------------------------------------------------------------- /app/assets/images/cards/dell-inspiron-3000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/dell-inspiron-3000.png -------------------------------------------------------------------------------- /app/assets/images/cards/delta-web-app-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/delta-web-app-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/finance-app-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/finance-app-design.png -------------------------------------------------------------------------------- /app/assets/images/cards/logo-credit-card-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/logo-credit-card-2.png -------------------------------------------------------------------------------- /app/assets/images/cards/sales-overview-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/sales-overview-logo.png -------------------------------------------------------------------------------- /app/assets/images/cards/sony-play-station-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/sony-play-station-5.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/misc/nav-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/misc/nav-img.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/mastercard.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/visa-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/visa-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/visa-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/visa-light.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/event.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/figma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/figma.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/html5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/html5.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/react.png -------------------------------------------------------------------------------- /app/assets/images/pages/TimelineRectangle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/TimelineRectangle1.png -------------------------------------------------------------------------------- /app/assets/images/pages/TimelineRectangle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/TimelineRectangle2.png -------------------------------------------------------------------------------- /app/assets/images/pages/TimelineRectangle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/TimelineRectangle3.png -------------------------------------------------------------------------------- /app/assets/images/pages/TimelineRectangle4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/TimelineRectangle4.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-1.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-2.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-3.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-4.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-5.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-academy-tutor-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-academy-tutor-6.png -------------------------------------------------------------------------------- /app/assets/images/pages/section-title-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/section-title-icon.png -------------------------------------------------------------------------------- /public/images/pages/user-profile-header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/public/images/pages/user-profile-header-bg.png -------------------------------------------------------------------------------- /server/templates/magic_link.html: -------------------------------------------------------------------------------- 1 |

Magic Link

2 | 3 |

Follow this link to login:

4 |

Log In

5 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.nuxt/tsconfig.server.json", 3 | "compilerOptions": { 4 | "outDir": "../.nuxt/dist/server" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/assets/images/cards/3d-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/3d-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/apple-watch-green-lg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/apple-watch-green-lg.png -------------------------------------------------------------------------------- /app/assets/images/cards/cleaning-service-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/cleaning-service-icon.png -------------------------------------------------------------------------------- /app/assets/images/cards/ecommerce-website-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/ecommerce-website-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-john-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-john-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/logo-mastercard-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/logo-mastercard-small.png -------------------------------------------------------------------------------- /app/assets/images/cards/marketing-expense-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/marketing-expense-logo.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-1.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-10.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-11.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-12.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-13.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-14.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-15.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-16.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-17.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-18.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-19.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-2.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-20.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-21.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-22.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-23.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-24.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-25.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-26.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-27.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-28.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-29.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-3.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-30.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-4.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-5.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-6.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-7.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-8.png -------------------------------------------------------------------------------- /app/assets/images/ecommerce-images/product-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/ecommerce-images/product-9.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-1.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-2.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-3.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-4.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-5.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/ae-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/ae-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/dc-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/dc-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/dc-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/dc-light.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/jcb-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/jcb-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/jcb-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/jcb-light.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/visa-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/visa-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/python.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/sketch.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/social.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/support.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/twitter.png -------------------------------------------------------------------------------- /app/assets/images/icons/project-icons/xamarin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/project-icons/xamarin.png -------------------------------------------------------------------------------- /app/assets/images/misc/pricing-illustration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/pricing-illustration-1.png -------------------------------------------------------------------------------- /app/assets/images/misc/pricing-illustration-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/pricing-illustration-2.png -------------------------------------------------------------------------------- /app/assets/images/misc/pricing-illustration-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/misc/pricing-illustration-3.png -------------------------------------------------------------------------------- /app/assets/images/pages/app-search-header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/app-search-header-bg.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-under-maintenance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-under-maintenance.png -------------------------------------------------------------------------------- /app/assets/images/pages/user-profile-header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/user-profile-header-bg.png -------------------------------------------------------------------------------- /server/db/seeds/all.seed.ts: -------------------------------------------------------------------------------- 1 | export async function seed() { 2 | try { 3 | // 4 | } 5 | catch (error: any) { 6 | console.error(error) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/assets/images/cards/finance-app-design-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/finance-app-design-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-daisy-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-daisy-dark.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-daisy-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-daisy-light.png -------------------------------------------------------------------------------- /app/assets/images/cards/illustration-john-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/cards/illustration-john-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/backgrounds/cta-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/backgrounds/cta-bg.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/misc/product-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/misc/product-image.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/master-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/master-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/mastercard.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/paypal-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/paypal-dark.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/visa-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/visa-light.png -------------------------------------------------------------------------------- /app/assets/images/illustrations/faq-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/illustrations/faq-illustration.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-login-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-login-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-login-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-login-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/boy-academy-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/boy-academy-illustration.png -------------------------------------------------------------------------------- /app/assets/images/pages/instructor-poster-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/instructor-poster-image.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-coming-soon-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-coming-soon-object.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/backgrounds/footer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/backgrounds/footer-bg.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/backgrounds/hero-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/backgrounds/hero-bg.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-1-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-1-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-1-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-1-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-2-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-2-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-2-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-2-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-3-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-3-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-3-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-3-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-4-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-4-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-4-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-4-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-5-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-5-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/branding/logo-5-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/branding/logo-5-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/misc/checkout-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/misc/checkout-image.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/american-express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/american-express.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/paypal-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/paypal-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-register-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-register-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-register-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-register-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/create-deal-review-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/create-deal-review-complete.png -------------------------------------------------------------------------------- /app/assets/images/pages/girl-academy-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/girl-academy-illustration.png -------------------------------------------------------------------------------- /app/pages/index.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /app/@layouts/styles/_rtl.scss: -------------------------------------------------------------------------------- 1 | @use "./mixins"; 2 | 3 | .layout-vertical-nav .nav-group-arrow { 4 | @include mixins.rtl { 5 | transform: rotate(180deg); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/apple-icon.png -------------------------------------------------------------------------------- /app/assets/images/icons/payments/img/american-express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/icons/payments/img/american-express.png -------------------------------------------------------------------------------- /app/assets/images/pages/academy-course-illustration1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/academy-course-illustration1.png -------------------------------------------------------------------------------- /app/assets/images/pages/misc-under-maintenance-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/misc-under-maintenance-object.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-dashboard.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/backgrounds/hero-bg-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/backgrounds/hero-bg-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/cta-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/cta-dashboard.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/lets-contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/lets-contact.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/team-member-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/team-member-1.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/team-member-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/team-member-2.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/team-member-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/team-member-3.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/team-member-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/team-member-4.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-reset-password-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-reset-password-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-illustration-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/register-multi-step-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/register-multi-step-illustration.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-pricing-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-pricing-page.png -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/_tooltip.scss: -------------------------------------------------------------------------------- 1 | // 👉 Tooltip 2 | .v-tooltip.v-overlay { 3 | .v-overlay__content { 4 | font-weight: 500 !important; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/assets/images/pages/academy-course-illustration2-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/academy-course-illustration2-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/academy-course-illustration2-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/academy-course-illustration2-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-forgot-password-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-forgot-password-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-forgot-password-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-forgot-password-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v1-reset-password-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v1-reset-password-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-mask-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-mask-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-mask-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-mask-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/google-play-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/google-play-icon.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/hero-elements-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/hero-elements-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-illustration-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-two-steps-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-two-steps-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-two-steps-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-two-steps-illustration-light.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/shoud-display-the-list-project-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/shoud-display-the-list-project-page.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-billing-plan-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-billing-plan-page.png -------------------------------------------------------------------------------- /server/templates/recovery.html: -------------------------------------------------------------------------------- 1 |

Reset Password

2 | 3 |

Follow this link to reset the password for your user:

4 |

Reset Password

5 | -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/hero-dashboard-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/hero-dashboard-dark.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/hero-dashboard-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/hero-dashboard-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/hero-elements-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/hero-elements-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-verify-email-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-verify-email-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-verify-email-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-verify-email-illustration-light.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-account-setting-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-account-setting-page.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-create-project-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-create-project-page.png -------------------------------------------------------------------------------- /app/@layouts/styles/_global.scss: -------------------------------------------------------------------------------- 1 | *, 2 | ::before, 3 | ::after { 4 | box-sizing: inherit; 5 | background-repeat: no-repeat; 6 | } 7 | 8 | html { 9 | box-sizing: border-box; 10 | } 11 | -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-illustration-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-illustration-bordered-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-login-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-login-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-illustration-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-illustration-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-illustration-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-illustration-light.png -------------------------------------------------------------------------------- /app/assets/images/front-pages/landing-page/sitting-girl-with-laptop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/front-pages/landing-page/sitting-girl-with-laptop.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-illustration-bordered-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-register-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-register-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-two-steps-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-two-steps-illustration-bordered-dark.png -------------------------------------------------------------------------------- /app/assets/images/illustrations/account-settings-security-illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/illustrations/account-settings-security-illustration.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-two-steps-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-two-steps-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-verify-email-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-verify-email-illustration-bordered-dark.png -------------------------------------------------------------------------------- /e2e/gui/__screenshots__/should-display-the-list-project-page-dark-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/e2e/gui/__screenshots__/should-display-the-list-project-page-dark-theme.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-illustration-bordered-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-verify-email-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-verify-email-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-illustration-bordered-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-illustration-bordered-dark.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-forgot-password-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-forgot-password-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/assets/images/pages/auth-v2-reset-password-illustration-bordered-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecodeorigin/nuxt-template/HEAD/app/assets/images/pages/auth-v2-reset-password-illustration-bordered-light.png -------------------------------------------------------------------------------- /app/composables/useMessaging.ts: -------------------------------------------------------------------------------- 1 | import { getMessaging } from 'firebase/messaging' 2 | import { useFirebaseApp } from 'vuefire' 3 | 4 | export function useMessaging() { 5 | return getMessaging(useFirebaseApp()) 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json", 4 | "compilerOptions": { 5 | "types": [ 6 | "vitest/globals" 7 | ] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/config/eslint/pinia/index.mjs: -------------------------------------------------------------------------------- 1 | import { noDestructuringPiniaStore } from './no-destructuring.mjs' 2 | 3 | export default { 4 | rules: { 5 | 'no-destructuring-pinia-store': noDestructuringPiniaStore, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/swiper.scss: -------------------------------------------------------------------------------- 1 | swiper-container { 2 | --swiper-navigation-color: rgb(var(--v-theme-primary)); 3 | --swiper-navigation-size: 1.75rem; 4 | --swiper-pagination-color: rgb(var(--v-theme-primary)); 5 | } 6 | -------------------------------------------------------------------------------- /app/@core/scss/template/placeholders/_index.scss: -------------------------------------------------------------------------------- 1 | @forward "horizontal-nav"; 2 | @forward "nav"; 3 | @forward "default-layout-vertical-nav"; 4 | @forward "default-layout-horizontal-nav"; 5 | @forward "vertical-nav"; 6 | @forward "misc"; 7 | -------------------------------------------------------------------------------- /app/utils/array.ts: -------------------------------------------------------------------------------- 1 | import { omit as _omit } from 'lodash-es' 2 | 3 | export function omit>( 4 | obj: A, 5 | keys: B, 6 | ) { 7 | return _omit(obj, keys) as Omit 8 | } 9 | -------------------------------------------------------------------------------- /server/plugins/vuetify.fix.ts: -------------------------------------------------------------------------------- 1 | export default defineNitroPlugin((nitroApp: any) => { 2 | nitroApp.hooks.hook('render:response', (response: any) => { 3 | response.body = response.body.replaceAll('/_nuxt/\0', '/_nuxt/') 4 | }) 5 | }) 6 | -------------------------------------------------------------------------------- /server/templates/email_change.html: -------------------------------------------------------------------------------- 1 |

Confirm Change of Email

2 | 3 |

Follow this link to confirm the update of your email from {{ .Email }} to {{ .NewEmail }}:

4 |

Change Email

5 | -------------------------------------------------------------------------------- /server/templates/invite.html: -------------------------------------------------------------------------------- 1 |

You have been invited

2 | 3 |

You have been invited to create a user on {{ .SiteURL }}. Follow this link to accept the invite:

4 |

Accept the invite

5 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/index.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | await defineEventOptions(event, { auth: true }) 3 | 4 | const products = await getStripeAllProducts() 5 | 6 | return products 7 | }) 8 | -------------------------------------------------------------------------------- /app/assets/images/svg/check.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/@core/scss/base/placeholders/_index.scss: -------------------------------------------------------------------------------- 1 | @forward "horizontal-nav"; 2 | @forward "vertical-nav"; 3 | @forward "nav"; 4 | @forward "default-layout"; 5 | @forward "default-layout-vertical-nav"; 6 | @forward "default-layout-horizontal-nav"; 7 | @forward "misc"; 8 | -------------------------------------------------------------------------------- /app/assets/images/svg/radio-unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/config/eslint/index.d.ts: -------------------------------------------------------------------------------- 1 | import type antfu from '@antfu/eslint-config' 2 | import type { OptionsConfig, TypedFlatConfigItem } from '@antfu/eslint-config' 3 | 4 | export default (options: OptionsConfig & TypedFlatConfigItem) => ReturnType 5 | -------------------------------------------------------------------------------- /server/templates/confirmation.html: -------------------------------------------------------------------------------- 1 |

Confirm your signup

2 | 3 |

Follow this link to confirm your user:

4 | 5 | 6 | Confirm your signup 7 | 8 | -------------------------------------------------------------------------------- /app/components/VueApexCharts.client.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/index.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { productId } = await defineEventOptions(event, { auth: true, params: ['productId'] }) 3 | 4 | return await getStripeProduct(productId) 5 | }) 6 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/prices/[priceId].get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { priceId } = await defineEventOptions(event, { auth: true, params: ['priceId'] }) 3 | 4 | return await getStripePrice(priceId) 5 | }) 6 | -------------------------------------------------------------------------------- /app/assets/images/svg/vector.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/stores/faq.ts: -------------------------------------------------------------------------------- 1 | export const useFaqStore = defineStore('faq', () => { 2 | async function fetchFaqs(query: Partial) { 3 | return $api('/api/faq', { 4 | query, 5 | }) 6 | } 7 | 8 | return { 9 | fetchFaqs, 10 | } 11 | }) 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/index.delete.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { productId } = await defineEventOptions(event, { auth: true, params: ['productId'] }) 3 | 4 | return await deleteStripeProduct(productId) 5 | }) 6 | -------------------------------------------------------------------------------- /app/@core/scss/base/placeholders/_misc.scss: -------------------------------------------------------------------------------- 1 | %blurry-bg { 2 | /* stylelint-disable property-no-vendor-prefix */ 3 | -webkit-backdrop-filter: blur(6px); 4 | backdrop-filter: blur(6px); 5 | /* stylelint-enable */ 6 | background-color: rgb(var(--v-theme-surface), 0.7); 7 | } 8 | -------------------------------------------------------------------------------- /server/api/scopes.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | try { 3 | await defineEventOptions(event, { auth: true }) 4 | 5 | return await getUserScopes() 6 | } 7 | catch (error: any) { 8 | throw parseError(error) 9 | } 10 | }) 11 | -------------------------------------------------------------------------------- /app/@core/scss/template/placeholders/_misc.scss: -------------------------------------------------------------------------------- 1 | %blurry-bg { 2 | /* stylelint-disable property-no-vendor-prefix */ 3 | -webkit-backdrop-filter: blur(10px); 4 | backdrop-filter: blur(10px); 5 | /* stylelint-enable */ 6 | background-color: rgb(var(--v-theme-surface), 0.7); 7 | } 8 | -------------------------------------------------------------------------------- /app/assets/styles/variables/_template.scss: -------------------------------------------------------------------------------- 1 | @forward "@base/@core/scss/template/variables"; 2 | 3 | // ℹ️ Remove above import and uncomment below to override core variables. 4 | // @forward "@base/@core/scss/template/variables" with ( 5 | // $: 6 | // ) 7 | -------------------------------------------------------------------------------- /puppeteer.config.mjs: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | 3 | /** 4 | * @type {import("puppeteer").Configuration} 5 | */ 6 | export default { 7 | // Changes the cache location for Puppeteer. 8 | cacheDirectory: path.join(__dirname, './node_modules/.cache', 'puppeteer'), 9 | } 10 | -------------------------------------------------------------------------------- /app/assets/images/svg/radio-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/stores/s3.ts: -------------------------------------------------------------------------------- 1 | export const useS3Store = defineStore('s3', () => { 2 | function getSignedUrl(filename: string) { 3 | return $api('/api/s3', { 4 | method: 'PUT', 5 | body: { filename }, 6 | }) 7 | } 8 | 9 | return { 10 | getSignedUrl, 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /shims.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'vue-prism-component' { 2 | import type { ComponentOptions } from 'vue' 3 | 4 | const component: ComponentOptions 5 | export default component 6 | } 7 | 8 | declare module 'vue-shepherd'; 9 | declare module '@videojs-player/vue'; 10 | 11 | export {} 12 | -------------------------------------------------------------------------------- /i18n.config.ts: -------------------------------------------------------------------------------- 1 | import { en, vi } from 'vuetify/locale' 2 | 3 | export default defineI18nConfig(() => ({ 4 | legacy: false, 5 | silentTranslationWarn: true, 6 | silentFallbackWarn: true, 7 | messages: { 8 | en: { $vuetify: en }, 9 | vi: { $vuetify: vi }, 10 | }, 11 | })) 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/index.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { customerId } = await defineEventOptions(event, { auth: true, params: ['customerId'] }) 3 | 4 | return await getStripeCustomerSubscriptions(customerId) 5 | }) 6 | -------------------------------------------------------------------------------- /app/@core/scss/template/index.scss: -------------------------------------------------------------------------------- 1 | @use "sass:map"; 2 | @use "@base/@core/scss/base"; 3 | 4 | // layouts 5 | @use "vertical-nav"; 6 | @use "default-layout-w-vertical-nav"; 7 | @use "default-layout-w-horizontal-nav"; 8 | 9 | // Utilities 10 | @use "utilities"; 11 | 12 | // Skins 13 | @use "skins"; 14 | -------------------------------------------------------------------------------- /app/@core/scss/template/placeholders/_default-layout-horizontal-nav.scss: -------------------------------------------------------------------------------- 1 | @use "misc"; 2 | @use "@base/@core/scss/base/mixins.scss"; 3 | 4 | %default-layout-horizontal-nav-navbar-and-nav-container { 5 | @include mixins.elevation(2); 6 | 7 | &.header-blur { 8 | @extend %blurry-bg; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/prices/free.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { productId } = await defineEventOptions(event, { auth: true, params: ['productId'] }) 3 | 4 | const prices = await getStripeFreePrices(productId) 5 | 6 | return prices 7 | }) 8 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/prices/index.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { productId } = await defineEventOptions(event, { auth: true, params: ['productId'] }) 3 | 4 | const prices = await getStripeAllPrices(productId) 5 | 6 | return prices 7 | }) 8 | -------------------------------------------------------------------------------- /server/db/schemas/user_shortcuts.schema.ts: -------------------------------------------------------------------------------- 1 | import { pgTable, text, uuid } from 'drizzle-orm/pg-core' 2 | 3 | export const userShortcutTable = pgTable('user_shortcuts', { 4 | id: uuid('id').defaultRandom().primaryKey().notNull(), 5 | route: text('route').notNull(), 6 | user_id: text('user_id').notNull(), 7 | }) 8 | -------------------------------------------------------------------------------- /app/assets/images/svg/checkbox-unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/index.patch.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { customerId } = await defineEventOptions(event, { auth: true, params: ['customerId'] }) 3 | 4 | const body = await readBody(event) 5 | 6 | return await updateStripeCustomer(customerId, body) 7 | }) 8 | -------------------------------------------------------------------------------- /server/api/faq.get.ts: -------------------------------------------------------------------------------- 1 | import { useFaqCrud } from '@base/server/composables/useFaqCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | const { getFaqQuestions } = useFaqCrud() 5 | 6 | const faqs = await getFaqQuestions(getFilter(event)) 7 | setResponseStatus(event, 200) 8 | 9 | return faqs 10 | }) 11 | -------------------------------------------------------------------------------- /app/@layouts/components/VNodeRenderer.tsx: -------------------------------------------------------------------------------- 1 | export const VNodeRenderer = defineComponent({ 2 | name: 'VNodeRenderer', 3 | props: { 4 | nodes: { 5 | type: [Array, Object] as PropType, 6 | required: true, 7 | }, 8 | }, 9 | setup(props) { 10 | return () => props.nodes 11 | }, 12 | }) 13 | -------------------------------------------------------------------------------- /app/assets/images/svg/stepper-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/pages/settings/pricing.vue: -------------------------------------------------------------------------------- 1 | 3 | 4 | 15 | -------------------------------------------------------------------------------- /app/plugins/casl.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtPlugin({ 2 | dependsOn: ['auth'], 3 | async setup() { 4 | const caslStore = useCaslStore() 5 | 6 | return { 7 | provide: { 8 | ability: caslStore.ability, 9 | can: caslStore.ability.can.bind(caslStore.ability), 10 | }, 11 | } 12 | }, 13 | }) 14 | -------------------------------------------------------------------------------- /app/assets/styles/variables/_vuetify.scss: -------------------------------------------------------------------------------- 1 | // ❗ Path must be relative 2 | @forward "../../../@core/scss/template/libs/vuetify/variables"; 3 | 4 | // ℹ️ Remove above import and uncomment below to override core variables. 5 | // @forward "../../../@core/scss/template/libs/vuetify/variables" with ( 6 | // $: 7 | // ) 8 | -------------------------------------------------------------------------------- /app/pages/sandbox.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /app/utils/error.ts: -------------------------------------------------------------------------------- 1 | import type { NuxtError } from '#app' 2 | 3 | export function getNuxtError(error: any) { 4 | const _error = (error.cause || error) as NuxtError 5 | 6 | return { 7 | code: _error.statusCode || 500, 8 | message: _error.statusMessage || 'Internal Server Error', 9 | stack: _error.stack, 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/assets/images/svg/checkbox-indeterminate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/utils/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface DrawerConfig { 2 | isVisible: boolean 3 | type: 'add' | 'edit' 4 | } 5 | 6 | type DialogType = 'warning' | 'info' 7 | 8 | export interface DialogConfig { 9 | isDialogVisible: boolean 10 | title: string 11 | label: string 12 | type: DialogType 13 | } 14 | 15 | export type DrawerActionTypes = 'add' | 'edit' 16 | -------------------------------------------------------------------------------- /server/api/health.get.ts: -------------------------------------------------------------------------------- 1 | import { sql } from 'drizzle-orm' 2 | 3 | export default defineEventHandler(async () => { 4 | try { 5 | await db.execute(sql`SELECT 1`) 6 | 7 | return { success: true } 8 | } 9 | catch (error: any) { 10 | throw createError({ 11 | statusCode: 503, 12 | statusMessage: error.message, 13 | }) 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /server/utils/stripe/portal.ts: -------------------------------------------------------------------------------- 1 | export function createStripeSelfServicePortal(customerUId: string, currentPath: string) { 2 | return tryWithCache( 3 | getStorageStripeKey(`customer:${customerUId}:portal`), 4 | () => getStripeAdmin().billingPortal.sessions.create({ 5 | customer: customerUId, 6 | return_url: getURL(currentPath), 7 | }), 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /app/@core/scss/base/_default-layout.scss: -------------------------------------------------------------------------------- 1 | @use "@base/@core/scss/base/placeholders"; 2 | @use "@base/@core/scss/base/variables"; 3 | 4 | .layout-vertical-nav, 5 | .layout-horizontal-nav { 6 | ol, 7 | ul { 8 | list-style: none; 9 | } 10 | } 11 | 12 | .layout-navbar { 13 | @if variables.$navbar-high-emphasis-text { 14 | @extend %layout-navbar; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/assets/images/svg/checkbox-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /e2e/function/dashboard.test.ts: -------------------------------------------------------------------------------- 1 | describe('/dashboard', () => { 2 | it('should display the dashboard', { timeout: 0 }, async () => { 3 | await $page.goto('http://localhost:3000/dashboard') 4 | 5 | const dashboardHTML = await $page.$eval('[data-test="dashboard"]', el => el.innerHTML) 6 | 7 | expect(dashboardHTML).toContain('Welcome to Nuxt Dashboard') 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /server/utils/s3.ts: -------------------------------------------------------------------------------- 1 | import { S3Client } from '@aws-sdk/client-s3' 2 | 3 | export function getS3Client() { 4 | return new S3Client({ 5 | forcePathStyle: true, 6 | region: process.env.AWS_S3_REGION!, 7 | credentials: { 8 | accessKeyId: process.env.AWS_S3_ACCESS_KEY!, 9 | secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY!, 10 | }, 11 | }) 12 | } 13 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/[subscriptionId]/index.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { subscriptionId } = await defineEventOptions(event, { 3 | auth: true, 4 | params: [ 5 | 'customerId', 6 | 'subscriptionId', 7 | ], 8 | }) 9 | 10 | return await getStripeSubscriptionById(subscriptionId) 11 | }) 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/[subscriptionId]/resume.put.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { subscriptionId } = await defineEventOptions(event, { 3 | auth: true, 4 | params: [ 5 | 'customerId', 6 | 'subscriptionId', 7 | ], 8 | }) 9 | 10 | return await resumeStripeSubscription(subscriptionId) 11 | }) 12 | -------------------------------------------------------------------------------- /app/plugins/loading.client.ts: -------------------------------------------------------------------------------- 1 | import { loading } from '#imports' 2 | 3 | export default defineNuxtPlugin({ 4 | name: 'loading-service', 5 | parallel: true, 6 | setup(nuxtApp) { 7 | nuxtApp.hook('app:created', (vueApp) => { 8 | loading._context = vueApp._context 9 | }) 10 | 11 | return { 12 | provide: { 13 | loading, 14 | }, 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/[subscriptionId]/cancel.delete.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { subscriptionId } = await defineEventOptions(event, { 3 | auth: true, 4 | params: [ 5 | 'customerId', 6 | 'subscriptionId', 7 | ], 8 | }) 9 | 10 | return await cancelStripeSubscription(subscriptionId) 11 | }) 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/prices/[priceId].patch.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { priceId } = await defineEventOptions(event, { auth: true, params: ['priceId'] }) 3 | 4 | const body = await readBody(event) 5 | 6 | return await updateStripePrice(priceId, { 7 | lookup_key: body.lookup_key, 8 | active: body.active, 9 | }) 10 | }) 11 | -------------------------------------------------------------------------------- /app/plugins/auth.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtPlugin({ 2 | name: 'auth', 3 | async setup() { 4 | const authStore = useAuthStore() 5 | 6 | if (authStore.currentUser) { 7 | try { 8 | await authStore.fetchToken() 9 | } 10 | catch { 11 | notifyError({ 12 | content: 'Failed to retrieve user token.', 13 | }) 14 | } 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/index.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | await defineEventOptions(event, { auth: true }) 3 | 4 | const body = await readBody(event) 5 | 6 | return await createStripeProduct({ 7 | name: body.name, 8 | description: body.description, 9 | features: body.features.map((feature: string) => ({ name: feature })), 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /server/db/schemas/user_devices.schema.ts: -------------------------------------------------------------------------------- 1 | import { pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core' 2 | 3 | export const userDeviceTable = pgTable('user_devices', { 4 | id: uuid('id').defaultRandom().primaryKey().notNull(), 5 | user_id: text('user_id').notNull(), 6 | token_device: text('token_device'), 7 | created_at: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 8 | }) 9 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/portal.get.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { customerId } = await defineEventOptions(event, { auth: true, params: ['customerId'] }) 3 | 4 | const query = getQuery(event) 5 | 6 | const { url } = await createStripeSelfServicePortal(customerId, query.redirectPath as string) 7 | 8 | return sendRedirect(event, url) 9 | }) 10 | -------------------------------------------------------------------------------- /app/@core/scss/template/placeholders/_nav.scss: -------------------------------------------------------------------------------- 1 | @use "@base/@core/scss/base/mixins"; 2 | 3 | %nav-link-active { 4 | 5 | i { color: rgb(var(--v-theme-on-primary)) !important; } 6 | 7 | @include mixins.elevation(2); 8 | } 9 | 10 | // ℹ️ This is common style that needs to be applied to both navs 11 | %nav { 12 | .nav-item-title { 13 | letter-spacing: normal; 14 | line-height: 1.375rem; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/stores/health.ts: -------------------------------------------------------------------------------- 1 | export const useHealthStore = defineStore('health', () => { 2 | const isHealthy = ref(false) 3 | 4 | async function fetchHealthCheck() { 5 | try { 6 | await $api('/api/health') 7 | 8 | isHealthy.value = true 9 | } 10 | catch { 11 | isHealthy.value = false 12 | } 13 | } 14 | 15 | return { 16 | isHealthy, 17 | fetchHealthCheck, 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /app/utils/browser.ts: -------------------------------------------------------------------------------- 1 | export function isInAppBrowser() { 2 | const { userAgent, isMobile } = useDevice() 3 | 4 | const inAppKeywords = [ 5 | 'FBAN', 6 | 'FBAV', 7 | 'Instagram', 8 | 'Messenger', 9 | 'Line', 10 | 'Snapchat', 11 | 'Twitter', 12 | 'WeChat', 13 | 'WhatsApp', 14 | ] 15 | 16 | return isMobile && inAppKeywords.some(keyword => userAgent.includes(keyword)) 17 | } 18 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/_otp-input.scss: -------------------------------------------------------------------------------- 1 | // otp input 2 | .v-otp-input { 3 | .v-otp-input__content { 4 | max-inline-size: 100%; 5 | 6 | .v-field.v-field--focused { 7 | .v-field__outline { 8 | .v-field__outline__start, 9 | .v-field__outline__end { 10 | border-color: rgb(var(--v-theme-primary)) !important; 11 | } 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/layouts/blank.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/middleware/01.health.global.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtRouteMiddleware(async (to) => { 2 | if (to.meta.public || import.meta.prerender) 3 | return 4 | 5 | const healthStore = useHealthStore() 6 | 7 | try { 8 | await healthStore.fetchHealthCheck() 9 | } 10 | catch { 11 | throw createError({ 12 | statusCode: 503, 13 | statusMessage: 'Service Unavailable', 14 | }) 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /app/plugins/confirmation.client.ts: -------------------------------------------------------------------------------- 1 | import { confirmation } from '#imports' 2 | 3 | export default defineNuxtPlugin({ 4 | name: 'confirmation-service', 5 | parallel: true, 6 | setup(nuxtApp) { 7 | nuxtApp.hook('app:created', (vueApp) => { 8 | confirmation._context = vueApp._context 9 | }) 10 | 11 | return { 12 | provide: { 13 | confirmation, 14 | }, 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /server/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './stripe' 2 | 3 | export * from './array' 4 | 5 | export * from './db' 6 | 7 | export * from './error' 8 | 9 | export * from './filter' 10 | 11 | export * from './firebase' 12 | 13 | export * from './options' 14 | 15 | export * from './params' 16 | 17 | export * from './s3' 18 | 19 | export * from './storage' 20 | 21 | export * from './url' 22 | 23 | export * from './payment' 24 | -------------------------------------------------------------------------------- /server/utils/params.ts: -------------------------------------------------------------------------------- 1 | import type { H3Event } from 'h3' 2 | import { template } from 'lodash-es' 3 | 4 | export function getParam(event: H3Event, key = 'uuid') { 5 | const value = getRouterParam(event, key) 6 | 7 | if (!value) { 8 | throw createError({ 9 | statusCode: 404, 10 | statusMessage: template(ErrorMessage.INVALID_PARAMS)({ key, value }), 11 | }) 12 | } 13 | 14 | return value 15 | } 16 | -------------------------------------------------------------------------------- /app/@core/utils/formatDistanceToNow.ts: -------------------------------------------------------------------------------- 1 | import { enGB, vi } from 'date-fns/locale' 2 | import { formatDistanceToNow as _formatDistanceToNow } from 'date-fns' 3 | 4 | export function formatDistanceToNow(date: string) { 5 | const { locale } = useI18n() 6 | 7 | return _formatDistanceToNow( 8 | new Date(date), 9 | { 10 | locale: locale.value === 'en' 11 | ? enGB 12 | : vi, 13 | }, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/index.patch.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { productId } = await defineEventOptions(event, { auth: true, params: ['productId'] }) 3 | 4 | const body = await readBody(event) 5 | 6 | return await updateStripeProduct(productId, { 7 | name: body.name, 8 | description: body.description, 9 | features: body.features, 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /app/@core/scss/base/_dark.scss: -------------------------------------------------------------------------------- 1 | @use "@base/configured-variables" as variables; 2 | 3 | // ———————————————————————————————————— 4 | // * ——— Perfect Scrollbar 5 | // ———————————————————————————————————— 6 | 7 | body.v-theme--dark { 8 | .ps__rail-y, 9 | .ps__rail-x { 10 | background-color: transparent !important; 11 | } 12 | 13 | .ps__thumb-y { 14 | background-color: variables.$plugin-ps-thumb-y-dark; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/index.scss: -------------------------------------------------------------------------------- 1 | @use "alert"; 2 | @use "avatar"; 3 | @use "button"; 4 | @use "badge"; 5 | @use "chip"; 6 | @use "dialog"; 7 | @use "expansion-panels"; 8 | @use "list"; 9 | @use "pagination"; 10 | @use "slider"; 11 | @use "table"; 12 | @use "tabs"; 13 | @use "timeline"; 14 | @use "tooltip"; 15 | @use "otp-input"; 16 | @use "field"; 17 | @use "checkbox"; 18 | @use "radio"; 19 | @use "switch"; 20 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "editorconfig.editorconfig", 5 | "xabikos.javascriptsnippets", 6 | "stylelint.vscode-stylelint", 7 | "fabiospampinato.vscode-highlight", 8 | "github.vscode-pull-request-github", 9 | "vue.volar", 10 | "antfu.iconify", 11 | "cipchk.cssrem", 12 | "matijao.vue-nuxt-snippets", 13 | "dongido.sync-env" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /app/@layouts/plugins/casl.ts: -------------------------------------------------------------------------------- 1 | import type { RouteLocationNormalized } from 'vue-router' 2 | 3 | export function canNavigate(to: RouteLocationNormalized) { 4 | const config = useRuntimeConfig() 5 | 6 | if (!config.public.features.authorization) 7 | return true 8 | 9 | const { can } = useAbility() 10 | 11 | if (!to.meta.action || !to.meta.subject) 12 | return true 13 | 14 | return can(to.meta.action, to.meta.subject) 15 | } 16 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/[subscriptionId]/index.patch.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { subscriptionId } = await defineEventOptions(event, { 3 | auth: true, 4 | params: [ 5 | 'customerId', 6 | 'subscriptionId', 7 | ], 8 | }) 9 | 10 | const body = await readBody(event) 11 | 12 | return await updateStripeSubscription(subscriptionId, body) 13 | }) 14 | -------------------------------------------------------------------------------- /server/api/payments/stripe/products/[productId]/prices/index.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | await defineEventOptions(event, { auth: true }) 3 | 4 | const body = await readBody(event) 5 | 6 | return await createStripePrice({ 7 | currency: body.currency, 8 | amount: body.amount, 9 | recurring: body.recurring, 10 | lookup_key: body.lookup_key, 11 | product: body.product, 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import eslint from '@thecodeorigin/eslint-config' 2 | import piniaPlugin from '@thecodeorigin/eslint-config/pinia' 3 | 4 | import withNuxt from './.nuxt/eslint.config.mjs' 5 | 6 | export default withNuxt( 7 | eslint(), 8 | { 9 | files: ['**/*.ts', '**/*.vue'], 10 | plugins: { 11 | pinia: piniaPlugin, 12 | }, 13 | rules: { 14 | 'pinia/no-destructuring-pinia-store': 'error', 15 | }, 16 | }, 17 | ) 18 | -------------------------------------------------------------------------------- /app/@core/components/DialogCloseBtn.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 21 | -------------------------------------------------------------------------------- /app/@core/enums.ts: -------------------------------------------------------------------------------- 1 | export const Skins = { 2 | Default: 'default', 3 | Bordered: 'bordered', 4 | } as const 5 | 6 | export const Theme = { 7 | Light: 'light', 8 | Dark: 'dark', 9 | System: 'system', 10 | } as const 11 | 12 | export const Layout = { 13 | Vertical: 'vertical', 14 | Horizontal: 'horizontal', 15 | Collapsed: 'collapsed', 16 | } as const 17 | 18 | export const Direction = { 19 | Ltr: 'ltr', 20 | Rtl: 'rtl', 21 | } as const 22 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import { fileURLToPath } from 'node:url' 3 | import { defineConfig } from 'vitest/config' 4 | 5 | const rootDir = path.dirname(fileURLToPath(import.meta.url)) 6 | 7 | export default defineConfig({ 8 | define: { 9 | $page: 'globalThis.$page', 10 | }, 11 | test: { 12 | globals: true, 13 | setupFiles: [ 14 | path.resolve(rootDir, './e2e/setup/1.init.ts'), 15 | ], 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /scripts/generate-stripe.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import { $ } from 'execa' 3 | 4 | import 'dotenv/config' 5 | 6 | const commandOptions = { 7 | stdio: 'inherit' as const, 8 | }; 9 | 10 | (async function () { 11 | try { 12 | $(commandOptions)`stripe --api-key ${process.env.STRIPE_SECRET_KEY!} fixtures ./scripts/stripe-fixtures.json` 13 | } 14 | catch (error) { 15 | console.error(error) 16 | 17 | process.exit(1) 18 | } 19 | })() 20 | -------------------------------------------------------------------------------- /app/plugins/layouts.ts: -------------------------------------------------------------------------------- 1 | import type { PartialDeep } from 'type-fest' 2 | import type { LayoutConfig } from '@base/@layouts/types' 3 | import { layoutConfig } from '@base/config' 4 | 5 | // Styles 6 | import { createLayouts } from '@base/@layouts' 7 | import '@base/@layouts/styles/index.scss' 8 | 9 | export default defineNuxtPlugin({ 10 | parallel: true, 11 | setup(nuxtApp) { 12 | nuxtApp.vueApp.use(createLayouts(layoutConfig as PartialDeep)) 13 | }, 14 | }) 15 | -------------------------------------------------------------------------------- /app/error.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/assets/images/svg/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/@core/scss/template/placeholders/_default-layout-vertical-nav.scss: -------------------------------------------------------------------------------- 1 | @use "@base/configured-variables" as variables; 2 | @use "@base/@core/scss/base/mixins"; 3 | 4 | %default-layout-vertical-nav-floating-navbar-and-sticky-elevated-navbar-scrolled { 5 | box-shadow: 0 4px 8px -4px rgba(var(--v-shadow-key-umbra-color), 42%); 6 | 7 | // If navbar is contained => Squeeze navbar content on scroll 8 | @if variables.$layout-vertical-nav-navbar-is-contained { 9 | padding-inline: 1.5rem; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/vue-ts.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "Vue TS - DefineProps": { 3 | "prefix": "dprops", 4 | "body": [ 5 | "defineProps<${1:Props}>()" 6 | ], 7 | "description": "DefineProps in script setup" 8 | }, 9 | "Vue TS - Props interface": { 10 | "prefix": "iprops", 11 | "body": [ 12 | "interface Props {", 13 | " ${1}", 14 | "}" 15 | ], 16 | "description": "Create props interface in script setup" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/db/schemas/credit_histories.schema.ts: -------------------------------------------------------------------------------- 1 | import { numeric, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core' 2 | import { creditHistoryType } from './enum.schema' 3 | 4 | export const creditHistoryTable = pgTable('credit_histories', { 5 | id: uuid('id').defaultRandom().primaryKey().notNull(), 6 | amount: numeric('amount').notNull(), 7 | type: creditHistoryType('type').notNull(), 8 | user_id: text('user_id').notNull(), 9 | created_at: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 10 | }) 11 | -------------------------------------------------------------------------------- /server/db/schemas/sys_notifications.schema.ts: -------------------------------------------------------------------------------- 1 | import { jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core' 2 | 3 | export const sysNotificationTable = pgTable('sys_notifications', { 4 | id: uuid('id').defaultRandom().primaryKey().notNull(), 5 | created_at: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 6 | title: text('title'), 7 | message: text('message'), 8 | action: jsonb('action'), 9 | read_at: timestamp('read_at', { withTimezone: true }), 10 | user_id: text('user_id').notNull(), 11 | }) 12 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/index.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const nitroApp = useNitroApp() 3 | await defineEventOptions(event, { auth: true }) 4 | 5 | const body = await readBody(event) 6 | 7 | const response = await createStripeCustomer({ 8 | name: body.name, 9 | email: body.email, 10 | phone: body.phone, 11 | }) 12 | 13 | nitroApp.hooks.callHook('log:info', { 14 | message: 'Stripe customer created', 15 | data: response, 16 | }) 17 | 18 | return response 19 | }) 20 | -------------------------------------------------------------------------------- /e2e/gui/dashboard.test.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import { fileURLToPath } from 'node:url' 3 | import { kebabCase } from 'lodash-es' 4 | 5 | describe('/dashboard', () => { 6 | it('should display the dashboard', { timeout: 0 }, async ({ task }) => { 7 | await $page.goto('http://localhost:3000/dashboard') 8 | 9 | await $page.screenshot({ 10 | path: path.resolve( 11 | path.dirname(fileURLToPath(import.meta.url)), 12 | '__screenshots__', 13 | `${kebabCase(task.name)}.png`, 14 | ), 15 | }) 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/subscriptions/index.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const nitroApp = useNitroApp() 3 | const { customerId } = await defineEventOptions(event, { auth: true, params: ['customerId'] }) 4 | 5 | const body = await readBody(event) 6 | 7 | const response = await createStripeSubscription(customerId, body.priceId) 8 | 9 | nitroApp.hooks.callHook('log:info', { 10 | message: 'Stripe subscription created', 11 | data: response, 12 | }) 13 | 14 | return response 15 | }) 16 | -------------------------------------------------------------------------------- /server/api/payments/stripe/customers/[customerId]/checkout.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | const { customerId } = await defineEventOptions(event, { auth: true, params: ['customerId'] }) 3 | 4 | const body = await readBody(event) 5 | 6 | const { url } = await createStripeCheckoutSession(customerId, body.priceId, body.redirectPath) 7 | 8 | if (!url) { 9 | throw createError({ 10 | status: 400, 11 | message: ErrorMessage.CANNOT_CHECKOUT, 12 | }) 13 | } 14 | 15 | return { 16 | url, 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /server/db/schemas/index.ts: -------------------------------------------------------------------------------- 1 | export * from './credit_histories.schema' 2 | 3 | export * from './credit_packages.schema' 4 | 5 | export * from './enum.schema' 6 | 7 | export * from './payment_provider_transactions.schema' 8 | 9 | export * from './sys_faq_categories.schema' 10 | 11 | export * from './sys_faqs.schema' 12 | 13 | export * from './sys_notifications.schema' 14 | 15 | export * from './user_devices.schema' 16 | 17 | export * from './user_orders.schema' 18 | 19 | export * from './user_payments.schema' 20 | 21 | export * from './user_shortcuts.schema' 22 | -------------------------------------------------------------------------------- /sentry.server.config.ts: -------------------------------------------------------------------------------- 1 | // Please commit this file to your repository 2 | import * as Sentry from '@sentry/nuxt' 3 | import { version as appVersion } from './package.json' 4 | 5 | if (process.env.SENTRY_DSN) { 6 | Sentry.init({ 7 | dsn: process.env.SENTRY_DSN, 8 | environment: process.env.NUXT_PUBLIC_APP_BASE_URL || 'development', 9 | release: appVersion ? `app@${appVersion}` : undefined, 10 | tracesSampleRate: Number(process.env.SENTRY_TRACE_SAMPLE_RATE) || 1, 11 | profilesSampleRate: Number(process.env.SENTRY_PROFILES_SAMPLE_RATE) || 1, 12 | }) 13 | } 14 | -------------------------------------------------------------------------------- /app/@core/utils/vuetify.ts: -------------------------------------------------------------------------------- 1 | import type { LiteralUnion } from 'type-fest' 2 | import { cookieRef } from '@base/@layouts/stores/config' 3 | 4 | export function resolveVuetifyTheme(defaultTheme: LiteralUnion<'light' | 'dark' | 'system', string>): 'light' | 'dark' { 5 | const cookieColorScheme = cookieRef<'light' | 'dark'>('color-scheme', 'light') 6 | const storedTheme = cookieRef('theme', defaultTheme).value 7 | 8 | return storedTheme === 'system' 9 | ? cookieColorScheme.value === 'dark' 10 | ? 'dark' 11 | : 'light' 12 | : storedTheme as 'light' | 'dark' 13 | } 14 | -------------------------------------------------------------------------------- /modules/sentry/templates/server.config.txt: -------------------------------------------------------------------------------- 1 | // Please commit this file to your repository 2 | import * as Sentry from '@sentry/nuxt' 3 | import { version as appVersion } from './package.json' 4 | 5 | if (process.env.SENTRY_DSN) { 6 | Sentry.init({ 7 | dsn: process.env.SENTRY_DSN, 8 | environment: process.env.NUXT_PUBLIC_APP_BASE_URL || 'development', 9 | release: appVersion ? `app@${appVersion}` : undefined, 10 | tracesSampleRate: Number(process.env.SENTRY_TRACE_SAMPLE_RATE) || 1, 11 | profilesSampleRate: Number(process.env.SENTRY_PROFILES_SAMPLE_RATE) || 1, 12 | }) 13 | } 14 | -------------------------------------------------------------------------------- /modules/vuetify/index.ts: -------------------------------------------------------------------------------- 1 | import { fileURLToPath } from 'node:url' 2 | import { addPlugin, defineNuxtModule, installModule } from '@nuxt/kit' 3 | 4 | export default defineNuxtModule({ 5 | async setup() { 6 | await installModule('vuetify-nuxt-module', { 7 | moduleOptions: { 8 | styles: { 9 | configFile: fileURLToPath(new URL('../../app/assets/styles/variables/_vuetify.scss', import.meta.url)), 10 | }, 11 | }, 12 | }) 13 | 14 | addPlugin({ 15 | src: fileURLToPath(new URL('./runtime/plugin.ts', import.meta.url)), 16 | }) 17 | }, 18 | }) 19 | -------------------------------------------------------------------------------- /.vscode/anchor-comments.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "Add hand emoji": { 3 | "prefix": "cm-hand-emoji", 4 | "body": [ 5 | "👉" 6 | ], 7 | "description": "Add hand emoji" 8 | }, 9 | "Add info emoji": { 10 | "prefix": "cm-info-emoji", 11 | "body": [ 12 | "ℹ️" 13 | ], 14 | "description": "Add info emoji" 15 | }, 16 | "Add warning emoji": { 17 | "prefix": "cm-warning-emoji", 18 | "body": [ 19 | "❗" 20 | ], 21 | "description": "Add warning emoji" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /server/utils/error.ts: -------------------------------------------------------------------------------- 1 | import type { PostgresError } from 'postgres' 2 | import { pick } from 'lodash-es' 3 | 4 | export function parseError(error: any) { 5 | if (error.name === 'PostgresError') { 6 | const _error: PostgresError = error 7 | 8 | return createError({ 9 | statusCode: 400, 10 | statusMessage: _error.message, 11 | data: pick(_error, ['code', 'table_name', 'constraint_name', 'detail']), 12 | }) 13 | } 14 | 15 | return createError({ 16 | statusCode: error.statusCode || 500, 17 | statusMessage: error.message, 18 | data: error, 19 | }) 20 | } 21 | -------------------------------------------------------------------------------- /app/@core/scss/base/_misc.scss: -------------------------------------------------------------------------------- 1 | // ℹ️ scrollable-content allows creating fixed header and scrollable content for VNavigationDrawer (Used when perfect scrollbar is used) 2 | .scrollable-content { 3 | &.v-navigation-drawer { 4 | .v-navigation-drawer__content { 5 | display: flex; 6 | overflow: hidden; 7 | flex-direction: column; 8 | } 9 | } 10 | } 11 | 12 | // ℹ️ adding styling for code tag 13 | code { 14 | border-radius: 3px; 15 | color: rgb(var(--v-code-color)); 16 | font-size: 90%; 17 | font-weight: 400; 18 | padding-block: 0.2em; 19 | padding-inline: 0.4em; 20 | } 21 | -------------------------------------------------------------------------------- /server/api/users/[userId]/devices/index.get.ts: -------------------------------------------------------------------------------- 1 | import { useUserDeviceCrud } from '@base/server/composables/useUserDeviceCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | 7 | const { getUserDeviceAllTokens } = useUserDeviceCrud({ user_id: userId }) 8 | 9 | const tokens = await getUserDeviceAllTokens({} as ParsedFilterQuery) 10 | setResponseStatus(event, 200) 11 | return tokens 12 | } 13 | catch (error: any) { 14 | throw parseError(error) 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /app/@core/scss/template/_default-layout-w-horizontal-nav.scss: -------------------------------------------------------------------------------- 1 | @use "@base/@core/scss/base/placeholders" as *; 2 | @use "@base/@core/scss/template/placeholders" as *; 3 | @use "@base/@core/scss/base/mixins"; 4 | 5 | .layout-wrapper.layout-nav-type-horizontal { 6 | // 👉 App footer 7 | .layout-footer { 8 | @at-root { 9 | .layout-footer-sticky#{&} { 10 | box-shadow: 0 -4px 8px -4px rgba(var(--v-shadow-key-umbra-color), 42%); 11 | } 12 | } 13 | } 14 | 15 | // TODO: Use Vuetify grid sass variable here 16 | .layout-page-content { 17 | padding-block: 1.5rem; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/_dialog.scss: -------------------------------------------------------------------------------- 1 | // 👉 Dialog 2 | body { 3 | .v-dialog { 4 | font-size: 1rem; 5 | line-height: 1.375rem; 6 | 7 | .v-dialog-close-btn { 8 | color: rgb(var(--v-theme-secondary)) !important; 9 | inset-block-start: 1rem; 10 | inset-inline-end: 1.125rem; 11 | } 12 | 13 | .v-card::-webkit-scrollbar { 14 | inline-size: 7px; 15 | } 16 | 17 | @media (max-width: 500px) { 18 | .v-dialog-close-btn { 19 | inset-block-start: 0.375rem; 20 | inset-inline-end: 0.5rem; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /server/api/users/[userId]/notifications/mark-all-read.patch.ts: -------------------------------------------------------------------------------- 1 | import { useNotificationCrud } from '@base/server/composables/useNotificationCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | 7 | const queryRestrict = { user_id: userId, markAllRead: true } 8 | const { markAllRead } = useNotificationCrud(queryRestrict) 9 | const response = await markAllRead() 10 | 11 | return response 12 | } 13 | catch (error: any) { 14 | throw parseError(error) 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /server/api/users/[userId]/shortcuts/[shortcutUId].delete.ts: -------------------------------------------------------------------------------- 1 | import { useShortcutCrud } from '@base/server/composables/useShortcutCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId, shortcutUId } = await defineEventOptions(event, { auth: true, params: ['userId', 'shortcutUId'] }) 6 | 7 | const { deleteShortcutById } = useShortcutCrud(userId) 8 | 9 | const data = await deleteShortcutById(shortcutUId) 10 | 11 | setResponseStatus(event, 200) 12 | 13 | return data 14 | } 15 | catch (error: any) { 16 | throw parseError(error) 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /server/api/users/[userId]/shortcuts/index.get.ts: -------------------------------------------------------------------------------- 1 | import { useShortcutCrud } from '@base/server/composables/useShortcutCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | 7 | const { getShortcutsPaginated } = useShortcutCrud(userId) 8 | 9 | const userShortcuts = await getShortcutsPaginated({ 10 | ...getFilter(event), 11 | sortBy: 'route', 12 | }) 13 | 14 | return userShortcuts 15 | } 16 | catch (error: any) { 17 | throw parseError(error) 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /app/@layouts/enums.ts: -------------------------------------------------------------------------------- 1 | export const ContentWidth = { 2 | Fluid: 'fluid', 3 | Boxed: 'boxed', 4 | } as const 5 | 6 | export const NavbarType = { 7 | Sticky: 'sticky', 8 | Static: 'static', 9 | Hidden: 'hidden', 10 | } as const 11 | 12 | export const FooterType = { 13 | Sticky: 'sticky', 14 | Static: 'static', 15 | Hidden: 'hidden', 16 | } as const 17 | 18 | export const AppContentLayoutNav = { 19 | Vertical: 'vertical', 20 | Horizontal: 'horizontal', 21 | } as const 22 | 23 | export const HorizontalNavType = { 24 | Sticky: 'sticky', 25 | Static: 'static', 26 | Hidden: 'hidden', 27 | } as const 28 | -------------------------------------------------------------------------------- /server/api/users/[userId]/notifications/mark-all-unread.patch.ts: -------------------------------------------------------------------------------- 1 | import { useNotificationCrud } from '@base/server/composables/useNotificationCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | 7 | const queryRestrict = { user_id: userId, markAllUnread: true } 8 | const { markAllUnread } = useNotificationCrud(queryRestrict) 9 | const response = await markAllUnread() 10 | 11 | return response 12 | } 13 | catch (error: any) { 14 | throw parseError(error) 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /server/api/payments/payos/checkout.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | try { 3 | const { productIdentifier } = await readBody(event) 4 | const { session } = await defineEventOptions(event, { auth: true }) 5 | 6 | const paymentUrl = await createPaymentCheckout('payos', { 7 | productIdentifier, 8 | user: session, 9 | }) 10 | 11 | setResponseStatus(event, 200) 12 | return { 13 | data: { 14 | message: 'Success', 15 | paymentUrl, 16 | }, 17 | } 18 | } 19 | catch (error: any) { 20 | throw parseError(error) 21 | } 22 | }) 23 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/_list.scss: -------------------------------------------------------------------------------- 1 | // 👉 VList 2 | .v-list { 3 | .v-list-item { 4 | &.v-list-item--active:not(.v-list-group__header) { 5 | .v-list-item__content, 6 | .v-list-item__prepend { 7 | * { 8 | color: rgb(var(--v-theme-primary)); 9 | } 10 | } 11 | 12 | .v-list-item__overlay { 13 | background: rgb(var(--v-theme-primary)); 14 | } 15 | } 16 | 17 | .v-icon:not(.v-btn .v-icon,.v-radio .v-icon,.v-checkbox .v-icon) { 18 | block-size: 22px; 19 | font-size: 22px; 20 | inline-size: 22px; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/stores/payment.ts: -------------------------------------------------------------------------------- 1 | export const usePaymentStore = defineStore('payment', () => { 2 | async function checkout(type: 'payos' | 'vnpay', productIdentifier: string) { 3 | if (type !== 'payos' && type !== 'vnpay') 4 | throw new Error('Invalid payment provider') 5 | 6 | const { data } = await $api<{ 7 | data: { 8 | message: string 9 | paymentUrl: string 10 | } 11 | }>(`/api/payments/${type}/checkout`, { 12 | method: 'POST', 13 | body: { 14 | productIdentifier, 15 | }, 16 | }) 17 | 18 | return data 19 | } 20 | 21 | return { 22 | checkout, 23 | } 24 | }) 25 | -------------------------------------------------------------------------------- /server/utils/url.ts: -------------------------------------------------------------------------------- 1 | export function getURL(path: string = '') { 2 | let url 3 | = process?.env?.NUXT_PUBLIC_APP_BASE_URL // Set this to your site URL in production env. 4 | ?? 'http://localhost:3000/' 5 | 6 | // Trim the URL and remove trailing slash if exists. 7 | url = url.replace(/\/+$/, '') 8 | // Make sure to include `https://` when not localhost. 9 | url = url.includes('http') ? url : `https://${url}` 10 | // Ensure path starts without a slash to avoid double slashes in the final URL. 11 | path = path.replace(/^\/+/, '') 12 | 13 | // Concatenate the URL and the path. 14 | return path ? `${url}/${path}` : url 15 | } 16 | -------------------------------------------------------------------------------- /server/api/users/[userId]/devices/index.delete.ts: -------------------------------------------------------------------------------- 1 | import { useUserDeviceCrud } from '@base/server/composables/useUserDeviceCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | const { token } = await readBody(event) 7 | 8 | const { deleteUserDeviceToken } = useUserDeviceCrud({ user_id: userId }) 9 | await deleteUserDeviceToken(token) 10 | setResponseStatus(event, 200) 11 | return { message: 'Token unregistration successful' } 12 | } 13 | catch (error: any) { 14 | throw parseError(error) 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /server/api/users/[userId]/notifications/unread.get.ts: -------------------------------------------------------------------------------- 1 | import { useNotificationCrud } from '@base/server/composables/useNotificationCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | const queryRestrict = { user_id: userId, markAllRead: true } 7 | const { countNotifications } = useNotificationCrud(queryRestrict) 8 | const notifications = await countNotifications() 9 | setResponseStatus(event, 200) 10 | return notifications 11 | } 12 | catch (error: any) { 13 | throw parseError(error) 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /app/@core/scss/template/libs/vuetify/components/_avatar.scss: -------------------------------------------------------------------------------- 1 | @use "@base/@core/scss/base/mixins"; 2 | @use "@base/configured-variables" as variables; 3 | 4 | // 👉 Avatar 5 | body { 6 | .v-avatar { 7 | font-size: 1rem; 8 | 9 | .v-icon { 10 | block-size: 1.5rem; 11 | font-size: 1.5rem; 12 | inline-size: 1.5rem; 13 | } 14 | 15 | &.v-avatar--variant-tonal:not([class*="text-"]) { 16 | .v-avatar__underlay { 17 | --v-activated-opacity: 0.08; 18 | } 19 | } 20 | } 21 | 22 | .v-avatar-group { 23 | > * { 24 | &:hover { 25 | @include mixins.elevation(6); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/@layouts/styles/_mixins.scss: -------------------------------------------------------------------------------- 1 | @use "placeholders"; 2 | @use "@base/configured-variables" as variables; 3 | 4 | @mixin rtl { 5 | @if variables.$enable-rtl-styles { 6 | [dir="rtl"] & { 7 | @content; 8 | } 9 | } 10 | } 11 | 12 | @mixin boxed-content($nest-selector: false) { 13 | & { 14 | @extend %boxed-content-spacing; 15 | 16 | @at-root { 17 | @if $nest-selector == false { 18 | .layout-content-width-boxed#{&} { 19 | @extend %boxed-content; 20 | } 21 | } 22 | @else { 23 | .layout-content-width-boxed & { 24 | @extend %boxed-content; 25 | } 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/api/payments/vnpay/checkout.post.ts: -------------------------------------------------------------------------------- 1 | export default defineEventHandler(async (event) => { 2 | try { 3 | const clientIP = getRequestIP(event) 4 | const { session } = await defineEventOptions(event, { auth: true }) 5 | const { productIdentifier } = await readBody(event) 6 | 7 | const paymentUrl = await createPaymentCheckout('vnpay', { 8 | clientIP, 9 | productIdentifier, 10 | user: session, 11 | }) 12 | 13 | setResponseStatus(event, 200) 14 | return { 15 | data: { 16 | message: 'Success', 17 | paymentUrl, 18 | }, 19 | } 20 | } 21 | catch (error: any) { 22 | throw parseError(error) 23 | } 24 | }) 25 | -------------------------------------------------------------------------------- /server/api/users/[userId]/notifications/index.get.ts: -------------------------------------------------------------------------------- 1 | import { useNotificationCrud } from '@base/server/composables/useNotificationCrud' 2 | 3 | export default defineEventHandler(async (event) => { 4 | try { 5 | const { userId } = await defineEventOptions(event, { auth: true, params: ['userId'] }) 6 | 7 | const queryRestrict = { user_id: userId } 8 | const { getNotificationsPaginated } = useNotificationCrud(queryRestrict) 9 | 10 | const notifications = await getNotificationsPaginated(getFilter(event)) 11 | 12 | setResponseStatus(event, 200) 13 | 14 | return notifications.data 15 | } 16 | catch (error: any) { 17 | throw parseError(error) 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /app/@core/utils/createUrl.ts: -------------------------------------------------------------------------------- 1 | import { stringifyQuery } from 'ufo' 2 | import type { MaybeRefOrGetter } from 'vue' 3 | 4 | interface Options { 5 | query: MaybeRefOrGetter> 6 | } 7 | 8 | export function createUrl(url: MaybeRefOrGetter, options?: Options) { 9 | return computed(() => { 10 | if (!options?.query) 11 | return toValue(url) 12 | 13 | const _url = toValue(url) 14 | const _query = toValue(options?.query) 15 | 16 | const queryObj = Object.fromEntries( 17 | Object.entries(_query).map(([key, val]) => [key, toValue(val)]), 18 | ) 19 | 20 | return `${_url}${queryObj ? `?${stringifyQuery(queryObj)}` : ''}` 21 | }) 22 | } 23 | -------------------------------------------------------------------------------- /app/assets/images/svg/google-docs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /server/db/schemas/credit_packages.schema.ts: -------------------------------------------------------------------------------- 1 | import { jsonb, numeric, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core' 2 | 3 | export const creditPackageTable = pgTable('credit_packages', { 4 | id: uuid('id').defaultRandom().primaryKey().notNull(), 5 | title: text('title'), 6 | description: text('description'), 7 | price: numeric('price').notNull(), 8 | currency: text('currency').notNull(), 9 | amount: numeric('amount').notNull(), 10 | features: jsonb('features'), 11 | created_at: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 12 | updated_at: timestamp('updated_at', { withTimezone: true }).defaultNow().$onUpdate(() => new Date()), 13 | }) 14 | -------------------------------------------------------------------------------- /app/middleware/02.authentication.global.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtRouteMiddleware(async (to) => { 2 | if (to.meta.public) 3 | return 4 | 5 | if (to.meta.auth || to.meta.auth === undefined) { 6 | const authStore = useAuthStore() 7 | 8 | if (authStore.currentUser) { 9 | if (to.meta.unauthenticatedOnly) 10 | return navigateTo('/') 11 | 12 | try { 13 | await authStore.fetchToken() 14 | } 15 | catch { 16 | notifyError({ 17 | content: 'Failed to retrieve user token.', 18 | }) 19 | } 20 | } 21 | else if (!to.meta.unauthenticatedOnly) { 22 | return navigateTo('/auth/login') 23 | } 24 | } 25 | }) 26 | -------------------------------------------------------------------------------- /app/@core/components/CustomizerSection.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 35 | -------------------------------------------------------------------------------- /app/middleware/04.subscription.global.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtRouteMiddleware(async (to) => { 2 | const config = useRuntimeConfig() 3 | 4 | if (to.meta.public || !config.public.features.subscription) 5 | return 6 | 7 | const authStore = useAuthStore() 8 | const subscriptionStore = useSubscriptionStore() 9 | 10 | if (authStore.currentUser) { 11 | if (!subscriptionStore.currentSubscription) 12 | await subscriptionStore.fetchSubscriptions() 13 | 14 | if (to.name !== 'settings-tab') { 15 | if (!subscriptionStore.isSubscriptionValid) { 16 | return navigateTo({ name: 'settings-tab', params: { tab: 'billing-plans' } }) 17 | } 18 | } 19 | } 20 | }) 21 | -------------------------------------------------------------------------------- /public/firebase-messaging-sw.js: -------------------------------------------------------------------------------- 1 | (async () => { 2 | /* eslint-disable no-undef */ 3 | try { 4 | importScripts('https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js') 5 | importScripts( 6 | 'https://www.gstatic.com/firebasejs/8.10.1/firebase-messaging.js', 7 | ) 8 | const res = await fetch('/firebase-config.json') 9 | const config = await res.json() 10 | firebase.initializeApp(config) 11 | 12 | const messaging = firebase.messaging() 13 | messaging.onBackgroundMessage((payload) => { 14 | console.log('[Firebase Message]:', payload) 15 | }) 16 | } 17 | catch (err) { 18 | console.error('Error in firebase-messaging-sw.js:', err) 19 | } 20 | })() 21 | -------------------------------------------------------------------------------- /server/utils/db.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import { drizzle } from 'drizzle-orm/postgres-js' 3 | import { config } from 'dotenv' 4 | import postgres from 'postgres' 5 | import * as schema from '../db/schemas' 6 | 7 | config({ path: path.resolve(process.cwd(), '.env') }) 8 | 9 | export const db = drizzle( 10 | process.env.POSTGRES_URL 11 | ? postgres(process.env.POSTGRES_URL) 12 | : postgres({ 13 | host: process.env.POSTGRES_HOST!, 14 | port: Number(process.env.POSTGRES_PORT), 15 | user: process.env.POSTGRES_USER!, 16 | password: process.env.POSTGRES_PASSWORD!, 17 | database: process.env.POSTGRES_DB!, 18 | }), 19 | { 20 | schema, 21 | }, 22 | ) 23 | -------------------------------------------------------------------------------- /server/utils/stripe/index.ts: -------------------------------------------------------------------------------- 1 | import Stripe from 'stripe' 2 | 3 | export * from './checkout' 4 | 5 | export * from './customer' 6 | 7 | export * from './portal' 8 | 9 | export * from './price' 10 | 11 | export * from './product' 12 | 13 | export * from './subscription' 14 | 15 | export function getStripeAdmin() { 16 | const config = useRuntimeConfig() 17 | 18 | if (config.public.features.subscription && !process.env.STRIPE_SECRET_KEY) { 19 | throw createError({ 20 | statusCode: 500, 21 | statusMessage: 'Subscription model is turned on but missing STRIPE_SECRET_KEY environment variable', 22 | }) 23 | } 24 | 25 | return new Stripe(process.env.STRIPE_SECRET_KEY!) 26 | } 27 | -------------------------------------------------------------------------------- /app/@core/components/AppDrawerHeaderSection.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 32 | -------------------------------------------------------------------------------- /app/@layouts/components/NavbarThemeSwitcher.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 30 | --------------------------------------------------------------------------------