master
Kar 2022-09-21 22:06:36 +05:30
commit 7a790d9211
31 changed files with 11874 additions and 0 deletions

13
.editorconfig Normal file
View File

@ -0,0 +1,13 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

90
.gitignore vendored Normal file
View File

@ -0,0 +1,90 @@
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# Nuxt generate
dist
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE / Editor
.idea
# Service worker
sw.*
# macOS
.DS_Store
# Vim swap files
*.swp

69
README.md Normal file
View File

@ -0,0 +1,69 @@
# swarnamath.com
## Build Setup
```bash
# install dependencies
$ yarn install
# serve with hot reload at localhost:3000
$ yarn dev
# build for production and launch server
$ yarn build
$ yarn start
# generate static project
$ yarn generate
```
For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).
## Special Directories
You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.
### `assets`
The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets).
### `components`
The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components).
### `layouts`
Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts).
### `pages`
This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing).
### `plugins`
The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins).
### `static`
This directory contains your static files. Each file inside this directory is mapped to `/`.
Example: `/static/robots.txt` is mapped as `/robots.txt`.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static).
### `store`
This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store).

7
assets/variables.scss Normal file
View File

@ -0,0 +1,7 @@
// Ref: https://github.com/nuxt-community/vuetify-module#customvariables
//
// The variables you want to modify
// $font-size-root: 20px;
.v-application--wrap{
min-height:10vh;
}

95
components/Footer.vue Normal file
View File

@ -0,0 +1,95 @@
<template>
<div class="mt-10">
<div class="footer black grey--text black--text py-10">
<v-container>
<v-row class="justify-center pb-10">
<v-btn color="transparent grey--text">
<v-icon x-large>mdi-facebook</v-icon>
</v-btn>
<v-btn color="transparent grey--text">
<v-icon x-large>mdi-twitter</v-icon>
</v-btn>
<v-btn color="transparent grey--text">
<v-icon x-large>mdi-share</v-icon>
</v-btn>
</v-row>
<hr />
<div class="pt-5">
<v-row>
<v-col col="12" sm="12" lg="3" md="6">
<div class="f_sec_1">
<div class="f_sec_1_logo">
</div>
<p color="grey--text">
We are a delivery company Serving in thakurnagar area.
Now we deliver Fruits, vegetables, cosmetics, grocery and many daily needs.
Along with delivery we provide various services for home and small offices like electrician, plumber etc...
</p>
</div>
</v-col>
<!-- <v-col col="12" sm="6" lg="3" md="6">
<div class="f_sec_3 sampleID">
<h3 style="padding-left:10px">QUICK LINKS</h3>
<ul
style="padding:0;list-style:none"
v-for="item in linkk"
:key="item.link"
:to="item.linkk"
>
<v-btn
color="transparent grey--text"
depressed
:to="`${item.link}`"
>
<span>
<v-icon class="text-h6 mr-1">{{ item.icon }}</v-icon>
{{ item.title }}
</span>
</v-btn>
</ul>
</div>
</v-col> -->
<v-col col="12" lg="3" sm="6" md="6">
<h3>GET IN TOUCH</h3>
<div>
<p> Thakurnagar Area, west bengal </p>
<p> email@swarnamath.com </p>
<p> call 8597894293 (8.00 AM 6.00 PM) </p>
</div>
</v-col>
<!-- <v-col col="12" lg="3" sm="12" md="6">
<div>
<h3>STAY CONNECTED</h3>
<p>
We are a delivery company Serving in thakurnagar area.
</p>
<v-row class="pl-3 mt-7">
<v-text-field tile label="Input Mail" solo dense></v-text-field>
<v-btn
id="inner_input"
width="100"
height="40"
depressed
color="grey"
>Submit</v-btn>
</v-row>
</div>
</v-col> -->
</v-row>
</div>
</v-container>
</div>
<h4 style="text-align:center;padding:15px 0;"> Powered by DWD CONSULTANCY SERVICES</h4>
</div>
</template>
<script>
export default {
data() {
return {
}
},
}
</script>

115
components/Header.vue Normal file
View File

@ -0,0 +1,115 @@
<template>
<div id="head">
<v-app-bar class="hidden-sm-and-down" color="green" fixed>
<NuxtLink class="py-4 black--text" to="/">
<img style="width:70px; padding:10px 5px 5px 5px" src="/icon.png" alt />
</NuxtLink>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down" color="pink">
<v-row align="center">
<NuxtLink
class="black--text"
v-for="item in links"
:key="item.icon"
:to="item.link"
>
<!-- <v-icon>{{ item.img }}</v-icon> -->
{{ item.title }}
</NuxtLink>
</v-row>
</v-toolbar-items>
</v-app-bar>
<div class="hidden-md-and-up">
<v-app-bar color="orange" style="position: fixed;top: 0;right:0;z-index:1">
<NuxtLink class="py-4 black--text" to="/">
<img
style="width:70px; padding:10px 5px 5px 5px"
src="/icon.png"
alt
/>
</NuxtLink>
<v-spacer></v-spacer>
<v-bottom-sheet v-model="mobileMenu">
<template v-slot:activator="{ on, attrs }">
<v-btn color="pink" v-bind="attrs" v-on="on">menu</v-btn>
</template>
<v-list>
<v-list-item
v-for="link in links"
:key="link.title"
:to="link.link"
@click="mobileMenu = false"
>
<v-list-item-avatar>
<v-icon>{{ link.img }}</v-icon>
</v-list-item-avatar>
<v-list-item-title>{{ link.title }}</v-list-item-title>
</v-list-item>
<v-list-item @click="mobileMenu = false"> <v-icon> mdi-close-box </v-icon> close this menu</v-list-item>
</v-list>
</v-bottom-sheet>
</v-app-bar>
</div>
</div>
</template>
<script>
export default {
data: () => ({
mobileMenu: false,
shoppingCart:[],
links: [
{ img: 'mdi-account', link: "/category/services", title: 'পরিসেবা ' },
{ img: 'mdi-corn', link: "/category/vegetables", title: 'সবজি ' },
{ img: 'mdi-apple', link: "/category/fruits", title: 'ফল ' },
{ img: 'mdi-apple', link: "/category/cloths", title: 'পরিধান ' },
{ img: 'mdi-diamond', link: "/category/jewlry", title: 'গয়না ' },
{ img: 'mdi-spray', link: "/category/cosmetics", title: 'প্রসাধন ' },
{ img: 'mdi-tag', link: "/category/grocery", title: 'মুদি ' },
{ img: 'mdi-basket', link: "/bag", title: 'ব্যাগ ' },
{ img: 'mdi-cellphone-basic', link: "/contact", title: 'যোগাযোগ ' },
],
}),
// mounted() {
// /// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(localStorage.getItem('shoppingCart') || "[]")
// },
// watch: {
// shoppingCart: {
// handler(newValue) {
// /// Updates the item in local storage
// localStorage.setItem(
// 'shoppingCart', JSON.stringify(newValue));
// }, deep: true
// }
// }
}
</script>
<style scoped>
a {
text-decoration: none;
text-transform: uppercase;
font-size: 18px;
padding: 0px 5px;
margin: 0 2px;
font-weight: 500;
letter-spacing: 1px;
}
#head {
min-height: 90px;
}
@media screen and (max-width: 760px) {
#head {
min-height: 60px;
}
}
</style>

2
components/Menu.vue Normal file
View File

@ -0,0 +1,2 @@
<template>
</template>

18
content/hello.md Normal file
View File

@ -0,0 +1,18 @@
---
title: Getting started
description: 'Empower your NuxtJS application with @nuxt/content module: write in a content/ directory and fetch your Markdown, JSON, YAML and CSV files through a MongoDB like API, acting as a Git-based Headless CMS.'
---
Empower your NuxtJS application with `@nuxtjs/content` module: write in a `content/` directory and fetch your Markdown, JSON, YAML and CSV files through a MongoDB like API, acting as a **Git-based Headless CMS**.
## Writing content
Learn how to write your `content/`, supporting Markdown, YAML, CSV and JSON: https://content.nuxtjs.org/writing.
## Fetching content
Learn how to fetch your content with `$content`: https://content.nuxtjs.org/fetching.
## Displaying content
Learn how to display your Markdown content with the `<nuxt-content>` component directly in your template: https://content.nuxtjs.org/displaying.

10
layouts/default.vue Normal file
View File

@ -0,0 +1,10 @@
<template>
<v-app >
<Header />
<v-main>
<Nuxt keep-alive :keep-alive-props="{ max: 60 }" />
<!-- <Nuxt /> -->
</v-main>
<Footer />
</v-app>
</template>

45
layouts/error.vue Normal file
View File

@ -0,0 +1,45 @@
<template>
<v-app dark>
<h1 v-if="error.statusCode === 404">
{{ pageNotFound }}
</h1>
<h1 v-else>
{{ otherError }}
</h1>
<NuxtLink to="/">
Home page
</NuxtLink>
</v-app>
</template>
<script>
export default {
name: 'EmptyLayout',
layout: 'empty',
props: {
error: {
type: Object,
default: null
}
},
data () {
return {
pageNotFound: '404 Not Found',
otherError: 'An error occurred'
}
},
head () {
const title =
this.error.statusCode === 404 ? this.pageNotFound : this.otherError
return {
title
}
}
}
</script>
<style scoped>
h1 {
font-size: 20px;
}
</style>

103
nuxt.config.js Normal file
View File

@ -0,0 +1,103 @@
import colors from 'vuetify/es5/util/colors'
export default {
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
titleTemplate: '%s - SwarnaMath vegetable & fruit delivery app',
title: 'SwarnaMath',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: '' },
{ name: 'format-detection', content: 'telephone=no' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
server: {
port: 1058, // default: 3000
host: '0.0.0.0' // default: localhost
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
// '~plugins/modal.js'
],
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
// https://go.nuxtjs.dev/vuetify
'@nuxtjs/vuetify',
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
// https://go.nuxtjs.dev/axios
'@nuxtjs/axios',
// https://go.nuxtjs.dev/pwa
'@nuxtjs/pwa',
// https://go.nuxtjs.dev/content
'@nuxt/content',
// 'nuxt-vuex-localstorage'
],
// Axios module configuration: https://go.nuxtjs.dev/config-axios
// axios: {
// // Workaround to avoid enforcing hard-coded localhost:3000: https://github.com/nuxt-community/axios-module/issues/308
// baseURL: '/',
// },
publicRuntimeConfig: {
axios: {
baseURL: 'https://api5.siliconpin.com'
}
},
privateRuntimeConfig: {
myPrivateToken: process.env.PRIVATE_TOKEN
},
// PWA module configuration: https://go.nuxtjs.dev/pwa
pwa: {
manifest: {
name: 'Swarna Math',
description: 'Delivery App - Swarna Math, Fruits Vegetables ...',
start_url: 'https://swarnamath.com/',
lang: 'bn'
}
},
// Content module configuration: https://go.nuxtjs.dev/config-content
content: {},
// Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify
vuetify: {
customVariables: ['~/assets/variables.scss'],
theme: {
dark: false,
themes: {
dark: {
primary: colors.blue.darken2,
accent: colors.grey.darken3,
secondary: colors.amber.darken3,
info: colors.teal.lighten1,
warning: colors.amber.base,
error: colors.deepOrange.accent4,
success: colors.green.accent3
}
}
}
},
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
}
}

26
package.json Normal file
View File

@ -0,0 +1,26 @@
{
"name": "swarnamath",
"version": "1.1.0",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate"
},
"dependencies": {
"@nuxt/content": "^1.15.1",
"@nuxtjs/axios": "^5.13.6",
"@nuxtjs/pwa": "^3.3.5",
"core-js": "^3.19.3",
"nuxt": "^2.15.8",
"vue": "^2.6.14",
"vue-server-renderer": "^2.6.14",
"vue-template-compiler": "^2.6.14",
"vuetify": "^2.6.1",
"webpack": "^4.46.0"
},
"devDependencies": {
"@nuxtjs/vuetify": "^1.12.3"
}
}

227
pages/_slug.vue Normal file
View File

@ -0,0 +1,227 @@
<template>
<v-container mt-4 style="padding-bottom:120px;">
<p v-if="$fetchState.pending">Loading....</p>
<p v-else-if="$fetchState.error">Error while fetching...</p>
<v-row v-else>
<v-card class="mx-auto pa-3">
<v-card width="500" class="justify-center">
<v-img
:src="`https://api7.siliconpin.com/assets/${pageContent.data[0].img}`"
aspect-ratio="1.2"
></v-img>
</v-card>
<v-card-title
class="font-weight-bold justify-center"
style="font-size:2em; line-height: 1.6;"
>{{ pageContent.data[0].name }}</v-card-title>
<!-- :class="{'subheading': $vuetify.breakpoint.xs}" -->
<hr />
<div class="text-center font-weight-bold">
<span v-if="pageContent.data[0].description"></span>
&nbsp; &nbsp; {{ pageContent.data[0].description }}
<br />
<div class="pa-1" v-if="pageContent.data[0].price">
<v-btn
color="primary"
@click="addToCart(pageContent.data[0].price)"
>{{ pageContent.data[0].quantity }}</v-btn>
<span> - {{ pageContent.data[0].price }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p2">
<v-btn
color="primary"
@click="addToCart(pageContent.data[0].p2)"
>{{ pageContent.data[0].q2 }}</v-btn>
<span> - {{ pageContent.data[0].p2 }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p3">
<v-btn color="primary"
@click="addToCart(pageContent.data[0].p3)"
>{{ pageContent.data[0].q3 }}</v-btn>
<span> - {{ pageContent.data[0].p3 }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p4">
<v-btn color="primary"
@click="addToCart(pageContent.data[0].p4)"
>{{ pageContent.data[0].q4 }}</v-btn>
<span> - {{ pageContent.data[0].p4 }} </span>
</div>
<!-- <div> {{ cartTotal }} </div> -->
<!-- <div> {{cartBag}} </div> -->
<div v-if="addedToCartChip">
<v-chip
class="ma-2"
close
color="red"
text-color="white"
@click:close="addedToCartChip = false"
>
হয়
</v-chip>
<nuxt-link to="/"> <v-btn> আরও </v-btn> </nuxt-link>
<a href="/bag"> <v-btn> </v-btn> </a>
</div>
<!-- <div v-show="loaded">
{{ $shoppingCart }}
{{ $localStorageLoaded }}
{{ $sessionStorageLoaded }}
</div> -->
</div>
<br />
<div id="block_container">
<div>
<!-- <span> <a href="'https://wa.me/8597894293?url='+$route.params.slug" > Purchase Cash On Delivery </a> </span> -->
</div>
</div>
</v-card>
</v-row>
</v-container>
</template>
<script>
export default {
data() {
return {
pageContent: {},
name: "",
slug: "",
img: "",
cartBag:[],
addedToCartChip:false,
cartTotal:0,
// apiLink:process.env.apiLink
};
},
computed: {
// loaded() {
// return this.$store.state.shoppingCart.status ,this.$store.state.localStorage.status , this.$store.state.sessionStorage.status
// }
},
mounted: function() {
/// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(
// localStorage.getItem('shoppingCart') || "[]")
if (localStorage && localStorage.cart) {
const cartBag = JSON.parse(localStorage.cart);
this.cartBag = cartBag;
cartBag.forEach((i) => {
// total += i.amount * 1;
this.cartTotal++
});
// this.cartTotal = total;
// this.countTotals(cart);
// alert("ss")
}
},
methods: {
addToCart(price) {
const cartRaw = localStorage.cart || '[]';
const cart = JSON.parse(cartRaw)
let product={}
product["slug"]=this.slug
product["name"]=this.name
product["price"]=price
product["img"]=this.img
// const product=[slug, name, price]
// if(process.client){
cart.push({
// ...this.selectedCard,
product:product
});
localStorage.cart = JSON.stringify(cart);
this.addedToCartChip=true
// this.$router.push('/bag');
// }
// let exists = false
// for (const cartItem of this.shoppingCart) {
// if (cartItem.slug === product.slug) {
// cartItem.amount = cartItem.amount + 1
// exists = true
// break
// }
// }
// if (!exists) {
// this.shoppingCart.push({
// ...product,
// amount: 1,
// })
// console.log(product)
// }
},
},
// async asyncData({ $axios, route }) {
// const product = await $axios.$get(`/swarnamaths/?slug=`+route.params.slug)
// // $route.fullPath
// // console.log(route.params.slug);
// // console.log(product)
// const url=route.params.slug
// return { product}
// },
async fetch() {
this.pageContent = await fetch(
'https://api7.siliconpin.com/items/swarnamath?filter[slug]=' + this.$route.params.slug
).then(res => res.json())
this.name = this.pageContent.data[0].name
this.slug = this.pageContent.data[0].slug
if (this.pageContent.data[0].img) this.img = this.pageContent.data[0].img
},
fetchOnServer: false,
head() {
return {
title: this.name,
meta: [
// hid is used as unique identifier. Do not use `vmid` for it as it will not work
{
hid: 'description',
name: 'description',
content: this.name
},
{
hid: 'og:description',
name: 'og:description',
content: this.name
},
{
hid: 'og:title',
name: 'og:title',
content: this.name
},
{
hid: 'og:url',
name: 'og:url',
content: 'https://swarnamath.com/' + this.slug
},
{
hid: 'og:image',
name: 'og:image',
content: 'https://api7.siliconpin.com' + this.img
},
{
hid: 'og:image:secure_url',
name: 'og:image:secure_url',
content: 'https://api7.siliconpin.com' + this.img
},
{
hid: 'og:type',
name: 'og:type',
content: 'News'
}
]
}
}
}
</script>
<style scopped>
#block_container {
font-size: 18px;
}
</style>

18
pages/about.vue Normal file
View File

@ -0,0 +1,18 @@
<template>
<v-text>
<!-- mounted() {
document.onreadystatechange = () => {
if (document.readyState == "complete") {
console.log('Page completed with image and files!')
// HOW LOAD COMPONENTS HERE?
this.readyStateComplete = true
}
}
}, -->
</v-text>
</template>

182
pages/bag.vue Normal file
View File

@ -0,0 +1,182 @@
<template>
<v-container mt-4 style="padding-bottom:120px;">
<!-- <v-card class="bg mb-5" v-show="calculateCart"> -->
<v-card class="bg mb-5" >
<v-card v-for="item in cartBag" :key="item.slug">
<div>
<div>
<v-avatar class="ma-3" size="125" tile>
<v-img v-if="item.product.img" :src="`https://api7.siliconpin.com/assets/${item.product.img}`"></v-img>
</v-avatar>
<v-card-title class="text-h5" v-text="item.product.name"></v-card-title>
<v-card-subtitle v-text="item.product.name"></v-card-subtitle>
<!-- <v-card-actions>
<v-btn
v-if="item.artist === 'Ellie Goulding'"
class="ml-2 mt-3"
fab
icon
height="40px"
right
width="40px"
>
<v-icon>mdi-play</v-icon>
</v-btn>
<v-btn
v-else
class="ml-2 mt-5"
outlined
rounded
big
>
</v-btn>
</v-card-actions>-->
</div>
</div>
</v-card>
<div v-if="bagTotalPrice>0" >
<h2 > {{bagTotalPrice}} /- </h2>
<v-btn @click="cartEmpty()">
</v-btn>
<v-btn>
<nuxt-link to="/purchase">এগি </nuxt-link>
</v-btn>
</div>
<h2 v-else > </h2>
</v-card>
<v-btn>
<nuxt-link to="/">আরও িনব</nuxt-link>
</v-btn>
</v-container>
</template>
<script>
export default {
data() {
return {
pageContent: {},
name: "",
slug: "",
img: "",
cartBag: [],
bagTotalPrice: 0,
formData: {
slug: "",
name: "",
price: "",
// permission: []
}
// apiLink:process.env.apiLink
};
},
computed: {
// loaded() {
// return this.$store.state.shoppingCart.status ,this.$store.state.localStorage.status , this.$store.state.sessionStorage.status
// }
// calculateCart(){
// if (localStorage && localStorage.cart) {
// const cart = JSON.parse(localStorage.cart);
// this.cart = cart;
// // this.countTotals(cart);
// }
// }
},
mounted() {
/// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(
// localStorage.getItem('shoppingCart') || "[]")
if (localStorage && localStorage.cart) {
const cartBag = JSON.parse(localStorage.cart);
this.cartBag = cartBag;
this.cartBag.forEach(element => {
this.bagTotalPrice +=element.product.price
// console.log(element.product.price)
});
// this.countTotals(cart);
// alert("ss")
}
},
methods: {
cartEmpty() {
localStorage.cart = '[]';
// this.$forceUpdate();
this.$router.go(0);
},
calculateCart(){
if (localStorage && localStorage.cart) {
const cart = JSON.parse(localStorage.cart);
this.cart = cart;
// this.countTotals(cart);
}
}
},
// async fetch() {
// this.pageContent = await fetch(
// 'https://api7.siliconpin.com/items/swarnamath?filter[slug]=' + this.$route.params.slug
// ).then(res => res.json())
// this.name = this.pageContent.data[0].name
// this.slug = this.pageContent.data[0].slug
// if (this.pageContent.data[0].img) this.img = this.pageContent.data[0].img
// },
// head() {
// return {
// title: this.name,
// meta: [
// // hid is used as unique identifier. Do not use `vmid` for it as it will not work
// {
// hid: 'description',
// name: 'description',
// content: this.name
// },
// {
// hid: 'og:description',
// name: 'og:description',
// content: this.name
// },
// {
// hid: 'og:title',
// name: 'og:title',
// content: this.name
// },
// {
// hid: 'og:url',
// name: 'og:url',
// content: 'https://swarnamath.com/' + this.slug
// },
// {
// hid: 'og:image',
// name: 'og:image',
// content: 'https://api7.siliconpin.com' + this.img
// },
// {
// hid: 'og:image:secure_url',
// name: 'og:image:secure_url',
// content: 'https://api7.siliconpin.com' + this.img
// },
// {
// hid: 'og:type',
// name: 'og:type',
// content: 'News'
// }
// ]
// }
// }
}
</script>
<style scoped>
a{ text-decoration:none}
</style>

238
pages/category/_slug.vue Normal file
View File

@ -0,0 +1,238 @@
<template>
<v-container mt-4 style="padding-bottom:120px;">
<p v-if="$fetchState.pending">Loading....</p>
<p v-else-if="$fetchState.error">Error while fetching...</p>
<v-row v-else>
<v-col v-for="Service in pageContent.data" :key="pageContent.data.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class>
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<!-- <v-row v-else>
<v-card class="mx-auto pa-3">
<v-card width="500" class="justify-center">
<v-img
:src="`https://api7.siliconpin.com/assets/${pageContent.data[0].img}`"
aspect-ratio="1.2"
></v-img>
</v-card>
<v-card-title
class="font-weight-bold justify-center"
style="font-size:2em; line-height: 1.6;"
>{{ pageContent.data[0].name }}</v-card-title>
<hr />
<div class="text-center font-weight-bold">
<span v-if="pageContent.data[0].description"></span>
&nbsp; &nbsp; {{ pageContent.data[0].description }}
<br />
<div class="pa-1" v-if="pageContent.data[0].price">
<v-btn
color="primary"
@click="addToCart(pageContent.data[0].price)"
>{{ pageContent.data[0].quantity }}</v-btn>
<span> - {{ pageContent.data[0].price }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p2">
<v-btn
color="primary"
@click="addToCart(pageContent.data[0].p2)"
>{{ pageContent.data[0].q2 }}</v-btn>
<span> - {{ pageContent.data[0].p2 }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p3">
<v-btn color="primary"
@click="addToCart(pageContent.data[0].p3)"
>{{ pageContent.data[0].q3 }}</v-btn>
<span> - {{ pageContent.data[0].p3 }} </span>
</div>
<div class="pa-1" v-if="pageContent.data[0].p4">
<v-btn color="primary"
@click="addToCart(pageContent.data[0].p4)"
>{{ pageContent.data[0].q4 }}</v-btn>
<span> - {{ pageContent.data[0].p4 }} </span>
</div>
<div v-if="addedToCartChip">
<v-chip
class="ma-2"
close
color="red"
text-color="white"
@click:close="addedToCartChip = false"
>
হয়
</v-chip>
<nuxt-link to="/"> <v-btn> আরও </v-btn> </nuxt-link>
<a href="/bag"> <v-btn> </v-btn> </a>
</div>
</div>
<br />
<div id="block_container">
<div>
</div>
</div>
</v-card>
</v-row> -->
</v-container>
</template>
<script>
export default {
data() {
return {
pageContent: {},
name: "",
slug: "",
img: "",
cartBag:[],
addedToCartChip:false,
cartTotal:0,
// apiLink:process.env.apiLink
};
},
computed: {
// loaded() {
// return this.$store.state.shoppingCart.status ,this.$store.state.localStorage.status , this.$store.state.sessionStorage.status
// }
},
mounted: function() {
/// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(
// localStorage.getItem('shoppingCart') || "[]")
if (localStorage && localStorage.cart) {
const cartBag = JSON.parse(localStorage.cart);
this.cartBag = cartBag;
cartBag.forEach((i) => {
// total += i.amount * 1;
this.cartTotal++
});
// this.cartTotal = total;
// this.countTotals(cart);
// alert("ss")
}
},
methods: {
addToCart(price) {
const cartRaw = localStorage.cart || '[]';
const cart = JSON.parse(cartRaw)
let product={}
product["slug"]=this.slug
product["name"]=this.name
product["price"]=price
product["img"]=this.img
// const product=[slug, name, price]
// if(process.client){
cart.push({
// ...this.selectedCard,
product:product
});
localStorage.cart = JSON.stringify(cart);
this.addedToCartChip=true
// this.$router.push('/bag');
// }
// let exists = false
// for (const cartItem of this.shoppingCart) {
// if (cartItem.slug === product.slug) {
// cartItem.amount = cartItem.amount + 1
// exists = true
// break
// }
// }
// if (!exists) {
// this.shoppingCart.push({
// ...product,
// amount: 1,
// })
// console.log(product)
// }
},
},
async fetch() {
this.pageContent = await fetch(
'https://api7.siliconpin.com/items/swarnamath?filter[cat]=["' + this.$route.params.slug +'"]'
).then(res => res.json())
// console.log(this.pageContent.data[0])
// this.name = this.pageContent.data[0].name
// this.slug = this.pageContent.data[0].slug
// if (this.pageContent.data[0].img) this.img = this.pageContent.data[0].img
},
fetchOnServer: false,
head() {
return {
title: this.name,
meta: [
// hid is used as unique identifier. Do not use `vmid` for it as it will not work
{
hid: 'description',
name: 'description',
content: this.name
},
{
hid: 'og:description',
name: 'og:description',
content: this.name
},
{
hid: 'og:title',
name: 'og:title',
content: this.name
},
{
hid: 'og:url',
name: 'og:url',
content: 'https://swarnamath.com/' + this.slug
},
{
hid: 'og:image',
name: 'og:image',
content: 'https://api7.siliconpin.com' + this.img
},
{
hid: 'og:image:secure_url',
name: 'og:image:secure_url',
content: 'https://api7.siliconpin.com' + this.img
},
{
hid: 'og:type',
name: 'og:type',
content: 'News'
}
]
}
}
}
</script>
<style scopped>
#block_container {
font-size: 18px;
}
</style>

94
pages/contact.vue Normal file
View File

@ -0,0 +1,94 @@
<template>
<div>
<v-img src="/images/veg.jpg">
<template>
<v-container>
<v-row class="py-5">
<v-title class="font-weight-bold white--text" >CONTACT US<br><v-icon class="black--text">mdi-whatsapp</v-icon>- 8597894293</v-title>
<v-col md="12">
<template>
<v-card outlined id="position" width="500" class="pa-5 mx-auto mt-5" color="grey lighten-3">
<v-form ref="form" v-model="valid" lazy-validation>
<v-text-field v-model="name" :counter="10" :rules="nameRules" label="Name"
required>
</v-text-field>
<v-text-field label="P-Number" required>
</v-text-field>
<v-text-field v-model="email" :rules="emailRules" label="E-mail" required>
</v-text-field>
<v-textarea color="cyan" label="Input Massege"></v-textarea>
<v-checkbox v-model="checkbox"
:rules="[v => !!v || 'You must agree to continue!']" label="Do you agree?"
required></v-checkbox>
<!--
<v-btn :disabled="!valid" color="success" class="mr-4" @click="validate">
Submit
</v-btn> -->
</v-form>
</v-card>
</template>
</v-col>
</v-row>
</v-container>
</template>
</v-img>
</div>
</template>
<script>
export default {
data: () => ({
valid: true,
name: '',
nameRules: [
v => !!v || 'Name is required',
v => (v && v.length <= 10) || 'Name must be less than 10 characters',
],
email: '',
emailRules: [
v => !!v || 'E-mail is required',
v => /.+@.+\..+/.test(v) || 'E-mail must be valid',
],
select: null,
items: [
'Item 1',
'Item 2',
'Item 3',
'Item 4',
],
checkbox: false,
}),
methods: {
validate() {
this.$refs.form.validate()
},
reset() {
this.$refs.form.reset()
},
resetValidation() {
this.$refs.form.resetValidation()
},
},
}
</script>
<style>
</style>

384
pages/index.vue Normal file
View File

@ -0,0 +1,384 @@
<template>
<v-container>
<v-row>
<v-col>
<v-card>
<center>
<h2>সবজি</h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catVegetables" :key="catVegetables.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2>ফল</h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catFruits" :key="catFruits.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class>
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2>ি </h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catGrocery" :key="catGrocery.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2> ি </h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catServices" :key="catServices.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2> গয়ন </h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catJewlry" :key="catJewlry.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2> রসধন </h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catCosmetics" :key="catCosmetics.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<v-row>
<v-col>
<v-card>
<center>
<h2> পড় </h2>
</center>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col v-for="Service in catCloths" :key="catCloths.id" sm="6" lg="4" xl="3">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3>{{ Service.name }}</h3>
</v-card-text>
<v-rating
half-increments
dense
size="20"
v-model="Service.rating"
background-color="orange lighten-3"
color="orange"
></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;">
{{ Service.description }}
<br />
<span style="font-weight:bold"> {{ Service.price }} </span>
<!-- <span v-if="Service.p2" style="font-weight:bold"> {{ Service.p2 }} </span> -->
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
<!-- <div>
<p v-if="$fetchState.pending">Fetching mountains...</p>
<p v-else-if="$fetchState.error">An error occurred :(</p>
<div v-else>
<h1>Nuxt Mountains {{mountains}} </h1>
<ul>
<li v-for="mountain of mountains">{{ mountain.title }}</li>
</ul>
<button @click="$fetch">Refresh</button>
</div>
</div>-->
</v-container>
</template>
<script>
export default {
data() {
return {
smProducts: [],
catFruits: [],
catVegetables: [],
catGrocery: [],
catServices: [],
catJewlry: [],
catCosmetics: [],
catCloths: [],
// product: [],
// shoppingCart: []
}
},
// methods: {
// addToCart(product) {
// // const product = [slug, name, price]
// this.shoppingCart.push({
// ...product,
// amount: 1,
// })
// }
// },
// watch: {
// shoppingCart: {
// handler(newValue) {
// /// Updates the item in local storage
// localStorage.setItem('shoppingCart', JSON.stringify(newValue));
// }, deep: true
// }
// },
// mounted() {
// /// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(
// localStorage.getItem('shoppingCart') || "[]")
// },
async fetch() {
this.smProducts = await fetch(
'https://api7.siliconpin.com/items/swarnamath?offset=0&limit=90'
).then(res => res.json())
this.catFruits = this.smProducts.data.filter(item => { if (item.cat == "fruits") return item });
this.catVegetables = this.smProducts.data.filter(item => { if (item.cat == "vegetables") return item });
this.catGrocery = this.smProducts.data.filter(item => { if (item.cat == "grocery") return item });
this.catServices = this.smProducts.data.filter(item => { if (item.cat == "services") return item });
this.catJewlry = this.smProducts.data.filter(item => { if (item.cat == "jewlry") return item });
this.catCosmetics = this.smProducts.data.filter(item => { if (item.cat == "cosmetics") return item });
this.catCloths = this.smProducts.data.filter(item => { if (item.cat == "cloths") return item });
// console.log(this.catFruits)
},
fetchOnServer: false,
head() {
return {
title: 'Swarna Math - Delivery App',
meta: [
// hid is used as unique identifier. Do not use `vmid` for it as it will not work
{
hid: 'description',
name: 'description',
content: 'Swarna Math - Delivery App'
},
{
hid: 'og:description',
name: 'og:description',
content: 'Swarna Math - Delivery App'
},
{
hid: 'og:title',
name: 'og:title',
content: 'Swarna Math - Delivery App'
},
{
hid: 'og:url',
name: 'og:url',
content: 'https://swarnamath.com/'
},
{
hid: 'og:image',
name: 'og:image',
content: 'https://api7.siliconpin.com/icon.png'
},
{
hid: 'og:image:secure_url',
name: 'og:image:secure_url',
content: 'https://api7.siliconpin.com/icon.png'
},
{
hid: 'og:type',
name: 'og:type',
content: 'Delivery App'
}
]
}
}
}
</script>
<style scoped>
a {
text-decoration: none;
}
</style>

174
pages/purchase.vue Normal file
View File

@ -0,0 +1,174 @@
<template>
<v-container mt-4 style="padding-bottom:120px;">
<v-card v-if="orderSuccess">
<form @submit.prevent="purchase">
<v-text-field v-model="phone" light class="pl-5 pr-5" label="ফোন নম্বর " required />
<v-btn type="submit" color="success"> অর </v-btn>
</form>
</v-card>
<v-card v-else>
<div> অর ওয় হয়, {{phone}} নমবর কর িি কর হব | </div>
</v-card>
</v-container>
</template>
<script>
export default {
data() {
return {
pageContent: {},
namecustomer: "",
phone: "",
address: "",
cart:[],
totalPrice:0,
orderSuccess:true
// apiLink:process.env.apiLink
};
},
computed: {
// loaded() {
// return this.$store.state.shoppingCart.status ,this.$store.state.localStorage.status , this.$store.state.sessionStorage.status
// }
},
mounted() {
/// Retrieves cart from local storage when user first loads
// this.shoppingCart = JSON.parse(
// localStorage.getItem('shoppingCart') || "[]")
if (localStorage && localStorage.cart) {
const cart = JSON.parse(localStorage.cart);
this.cart = cart;
cart.forEach(element => {
// ...use `element`...
this.totalPrice +=element.product.price
});
// console.log(this.totalPrice)
// this.countTotals(cart);
}
},
methods: {
calTotal(){
},
purchase() {
const rawResponse = fetch('https://api7.siliconpin.com/items/sm_cart', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({"amount": this.totalPrice, "phone": this.phone, "cart": this.cart})
})
.then(function(res){
console.log(res)
localStorage.cart=[]
})
.catch(function(res){ console.log(res) }) ;
this.orderSuccess=false
// const content = rawResponse.json();
// console.log("kk")
// console.log(rawResponse)
// const cartLocal = localStorage.cart || '[]';
// const cart = JSON.parse(cartLocal)
// let product={}
// product["slug"]=slug
// product["name"]=name
// product["price"]=price
// // const product=[slug, name, price]
// if(process.client){
// cart.push({
// // ...this.selectedCard,
// product:product
// });
// localStorage.cart = JSON.stringify(cart);
// this.$router.push('/bag');
// }
// let exists = false
// for (const cartItem of this.shoppingCart) {
// if (cartItem.slug === product.slug) {
// cartItem.amount = cartItem.amount + 1
// exists = true
// break
// }
// }
// if (!exists) {
// this.shoppingCart.push({
// ...product,
// amount: 1,
// })
// console.log(product)
// }
},
},
// async asyncData({ $axios, route }) {
// const product = await $axios.$get(`/swarnamaths/?slug=`+route.params.slug)
// // $route.fullPath
// // console.log(route.params.slug);
// // console.log(product)
// const url=route.params.slug
// return { product}
// },
// async fetch() {
// this.pageContent = await fetch(
// 'https://api7.siliconpin.com/items/swarnamath?filter[slug]=' + this.$route.params.slug
// ).then(res => res.json())
// this.name = this.pageContent.data[0].name
// this.slug = this.pageContent.data[0].slug
// if (this.pageContent.data[0].img) this.img = this.pageContent.data[0].img
// },
// head() {
// return {
// title: this.name,
// meta: [
// // hid is used as unique identifier. Do not use `vmid` for it as it will not work
// {
// hid: 'description',
// name: 'description',
// content: this.name
// },
// {
// hid: 'og:description',
// name: 'og:description',
// content: this.name
// },
// {
// hid: 'og:title',
// name: 'og:title',
// content: this.name
// },
// {
// hid: 'og:url',
// name: 'og:url',
// content: 'https://swarnamath.com/' + this.slug
// },
// {
// hid: 'og:image',
// name: 'og:image',
// content: 'https://api7.siliconpin.com' + this.img
// },
// {
// hid: 'og:image:secure_url',
// name: 'og:image:secure_url',
// content: 'https://api7.siliconpin.com' + this.img
// },
// {
// hid: 'og:type',
// name: 'og:type',
// content: 'News'
// }
// ]
// }
// }
}
</script>

7
pages/test.vue Normal file
View File

@ -0,0 +1,7 @@
<template>
<v-card width="800" class="justify-center ">
<v-img :src="`https://api7.siliconpin.com/assets/4aeb2707-5566-4673-ad75-bef6feddd248`" aspect-ratio="1.2"></v-img>
</v-card>
</template>

466
pages/testt.vue Normal file
View File

@ -0,0 +1,466 @@
<template>
<v-carousel cycle>
<v-carousel-item
reverse-transition="fade-transition"
transition="fade-transition"
>
<!-- /////////////////////////////////////////////////////////////////////// -->
<div><v-img height="50" :src="`https://api7.siliconpin.com/assets/${catVegetables[0].img}`" gradient="to bottom, rgba(13, 191, 43,.1), rgba(15, 43, 20,.9)">
<h1 class="text-center mt-1 white--text">
সবজি
</h1></v-img>
<v-row>
<v-col cols="12" lg="6" sm="12" md="12">
<v-card flat tile class="mx-auto mb-1 pa-2 ">
<v-img height="300" :src="`https://api7.siliconpin.com/assets/${catVegetables[0].img}`" aspect-ratio="1.2">
</v-img>
<v-card-text>
<h3> {{catVegetables[0].name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="catVegetables[0].rating" class="px-2 ma-0"
background-color="orange lighten-3" color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catVegetables[0].description}} <br>
<span style="font-weight:bold"> {{catVegetables[0].price}} </span>
<span v-if="catVegetables[0].p2" style="font-weight:bold"> {{catVegetables[0].p2}} </span>
</p>
</v-card>
</v-col>
<v-col cols="12" lg="6" sm="12" md="12">
<v-row>
<v-col cols="12" lg="12" sm="12" md="12">
<v-row>
<v-col lg="12" sm="12" md="12">
<v-card flat tile class="my-2 pa-1">
<v-row>
<v-col cols="12" lg="6" md="12" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catVegetables[1].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" md="12" sm="12">
<h3> {{catVegetables[1].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catVegetables[1].description}} <br>
<span style="font-weight:bold"> {{catVegetables[1].price}} </span>
<span v-if="catVegetables[1].p2" style="font-weight:bold"> {{catVegetables[1].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
<v-col lg="12" sm="12" md="12">
<v-card flat tile class="my-2 pa-1">
<v-row>
<v-col cols="12" md="12" lg="6" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catVegetables[2].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" sm="12">
<h3> {{catVegetables[2].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catVegetables[2].description}} <br>
<span style="font-weight:bold"> {{catVegetables[2].price}} </span>
<span v-if="catVegetables[2].p2" style="font-weight:bold"> {{catVegetables[2].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</v-col>
<v-col lg="12" sm="12" md="12">
</v-col>
</v-row>
</v-col>
</v-row>
</div>
<!-- ///////////////////////////////////////////////////////////////////////// -->
</v-carousel-item>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<v-carousel-item
reverse-transition="fade-transition"
transition="fade-transition"
>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<div><v-img height="50" :src="`https://api7.siliconpin.com/assets/${catFruits[0].img}`" gradient="to bottom, rgba(13, 191, 43,.1), rgba(15, 43, 20,.9)">
<h1 class="text-center mt-1 white--text">
ফল
</h1></v-img>
<v-row>
<v-col cols="12" lg="6" sm="12" md="12">
<v-card class="mx-auto mb-1 pa-2 ">
<v-img height="300" :src="`https://api7.siliconpin.com/assets/${catFruits[0].img}`" aspect-ratio="1.2">
</v-img>
<v-card-text>
<h3> {{catFruits[0].name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="catFruits[0].rating" class="px-2 ma-0"
background-color="orange lighten-3" color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catFruits[0].description}} <br>
<span style="font-weight:bold"> {{catFruits[0].price}} </span>
<span v-if="catFruits[0].p2" style="font-weight:bold"> {{catFruits[0].p2}} </span>
</p>
</v-card>
</v-col>
<v-col cols="12" lg="6" sm="12" md="12">
<v-row>
<v-col cols="12" lg="12" sm="12" md="12">
<v-row>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" lg="6" md="12" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catFruits[1].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" md="12" sm="12">
<h3> {{catFruits[1].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catFruits[1].description}} <br>
<span style="font-weight:bold"> {{catFruits[1].price}} </span>
<span v-if="catFruits[1].p2" style="font-weight:bold"> {{catFruits[1].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" md="12" lg="6" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catFruits[2].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" sm="12">
<h3> {{catFruits[2].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catFruits[2].description}} <br>
<span style="font-weight:bold"> {{catFruits[2].price}} </span>
<span v-if="catFruits[2].p2" style="font-weight:bold"> {{catFruits[2].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</v-col>
<v-col lg="12" sm="12" md="12">
</v-col>
</v-row>
</v-col>
</v-row>
</div>
</v-carousel-item>
<!-- //////////////////////////////////////////////////////////// -->
<v-carousel-item
reverse-transition="fade-transition"
transition="fade-transition"
>
<div><v-img height="50" :src="`https://api7.siliconpin.com/assets/${catJewlry[0].img}`" gradient="to bottom, rgba(13, 191, 43,.1), rgba(15, 43, 20,.9)">
<h1 class="text-center mt-1 white--text">
ি
</h1></v-img>
<v-row>
<v-col cols="12" lg="6" sm="12" md="12">
<v-card class="mx-auto mb-1 pa-2 ">
<v-img height="300" :src="`https://api7.siliconpin.com/assets/${catJewlry[0].img}`" aspect-ratio="1.2">
</v-img>
<v-card-text>
<h3> {{catJewlry[0].name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="catJewlry[0].rating" class="px-2 ma-0"
background-color="orange lighten-3" color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catJewlry[0].description}} <br>
<span style="font-weight:bold"> {{catJewlry[0].price}} </span>
<span v-if="catJewlry[0].p2" style="font-weight:bold"> {{catJewlry[0].p2}} </span>
</p>
</v-card>
</v-col>
<v-col cols="12" lg="6" sm="12" md="12">
<v-row>
<v-col cols="12" lg="12" sm="12" md="12">
<v-row>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" lg="6" md="12" sm="12">
<v-img height="150" :src="`https://api7.siliconpin.com/assets/${catJewlry[1].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" md="12" sm="12">
<h3> {{catJewlry[1].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catJewlry[1].description}} <br>
<span style="font-weight:bold"> {{catJewlry[1].price}} </span>
<span v-if="catJewlry[1].p2" style="font-weight:bold"> {{catJewlry[1].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" md="12" lg="6" sm="12">
<v-img height="150" :src="`https://api7.siliconpin.com/assets/${catJewlry[2].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" sm="12">
<h3> {{catJewlry[2].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catJewlry[2].description}} <br>
<span style="font-weight:bold"> {{catJewlry[2].price}} </span>
<span v-if="catJewlry[2].p2" style="font-weight:bold"> {{catJewlry[2].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</v-col>
<v-col lg="12" sm="12" md="12">
</v-col>
</v-row>
</v-col>
</v-row>
</div>
</v-carousel-item>
<!-- //////////////////////////////////////////////// -->
<v-carousel-item
reverse-transition="fade-transition"
transition="fade-transition"
>
<div><v-img height="50" :src="`https://api7.siliconpin.com/assets/${catCosmetics[0].img}`" gradient="to bottom, rgba(13, 191, 43,.1), rgba(15, 43, 20,.9)">
<h1 class="text-center mt-1 white--text">
রসধন
</h1></v-img>
<v-row>
<v-col cols="12" lg="6" sm="12" md="12">
<v-card class="mx-auto mb-1 pa-2 ">
<v-img height="300" :src="`https://api7.siliconpin.com/assets/${catCosmetics[0].img}`" aspect-ratio="1.2">
</v-img>
<v-card-text>
<h3> {{catCosmetics[0].name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="catCosmetics[0].rating" class="px-2 ma-0"
background-color="orange lighten-3" color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catCosmetics[0].description}} <br>
<span style="font-weight:bold"> {{catCosmetics[0].price}} </span>
<span v-if="catCosmetics[0].p2" style="font-weight:bold"> {{catCosmetics[0].p2}} </span>
</p>
</v-card>
</v-col>
<v-col cols="12" lg="6" sm="12" md="12">
<v-row>
<v-col cols="12" lg="12" sm="12" md="12">
<v-row>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" lg="6" md="12" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catCosmetics[1].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" md="12" sm="12">
<h3> {{catCosmetics[1].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catCosmetics[1].description}} <br>
<span style="font-weight:bold"> {{catCosmetics[1].price}} </span>
<span v-if="catCosmetics[1].p2" style="font-weight:bold"> {{catCosmetics[1].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
<v-col lg="12" sm="12" md="12">
<v-card class="my-2 pa-1">
<v-row>
<v-col cols="12" md="12" lg="6" sm="12">
<v-img height="180" :src="`https://api7.siliconpin.com/assets/${catCosmetics[2].img}`" aspect-ratio="1.2">
</v-img>
</v-col>
<v-col cols="12" lg="6" sm="12">
<h3> {{catCosmetics[2].name}}</h3>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{catCosmetics[2].description}} <br>
<span style="font-weight:bold"> {{catCosmetics[2].price}} </span>
<span v-if="catCosmetics[2].p2" style="font-weight:bold"> {{catCosmetics[2].p2}}
</span>
</p>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</v-col>
<v-col lg="12" sm="12" md="12">
</v-col>
</v-row>
</v-col>
</v-row>
</div>
</v-carousel-item>
<!-- //////////////////////////////////////////////// -->
</v-carousel>
</template>
<script>
export default {
data() {
return {
smProducts: [],
catFruits: [],
catVegetables: [],
catGrocery: [],
catServices: [],
catJewlry: [],
catCosmetics: [],
catCloths: []
}
},
async fetch() {
this.smProducts = await fetch(
'https://api7.siliconpin.com/items/swarnamath?offset=0&limit=90'
).then(res => res.json())
this.catFruits = this.smProducts.data.filter(item => { if (item.cat == "fruits") return item });
this.catVegetables = this.smProducts.data.filter(item => { if (item.cat == "vegetables") return item });
this.catGrocery = this.smProducts.data.filter(item => { if (item.cat == "grocery") return item });
this.catServices = this.smProducts.data.filter(item => { if (item.cat == "services") return item });
this.catJewlry = this.smProducts.data.filter(item => { if (item.cat == "jewlry") return item });
this.catCosmetics = this.smProducts.data.filter(item => { if (item.cat == "cosmetics") return item });
this.catCloths = this.smProducts.data.filter(item => { if (item.cat == "cloths") return item });
// console.log(this.catFruits)
}
}
</script>

99
pages/tst3.vue Normal file
View File

@ -0,0 +1,99 @@
<template>
<!-- *****************komli shaker chobi nei tai akta consule prolem show hocce -->
<v-container>
<v-layout row wrap>
<v-row>
<v-col v-for="Service in catServices" :key="catServices.id" sm="6" md="6" lg="2">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3> {{Service.name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="Service.rating" background-color="orange lighten-3"
color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{Service.description}} <br>
<span style="font-weight:bold"> {{Service.price}} </span>
<span v-if="Service.p2" style="font-weight:bold"> {{Service.p2}} </span>
</p>
</v-card>
</nuxt-link>
</v-col>
<v-col v-for="Service in catServices" :key="catServices.id" sm="6" md="6" lg="2">
<nuxt-link :to="`/${Service.slug}`">
<v-card class="mx-auto mb-1">
<v-img :src="`https://api7.siliconpin.com/assets/${Service.img}`" aspect-ratio="1.2"></v-img>
<v-card-text>
<h3> {{Service.name}}</h3>
</v-card-text>
<v-rating half-increments dense size="20" v-model="Service.rating" background-color="orange lighten-3"
color="orange"></v-rating>
<p style="font-size:16px;padding:0 5px 10px 5px;"> {{Service.description}} <br>
<span style="font-weight:bold"> {{Service.price}} </span>
<span v-if="Service.p2" style="font-weight:bold"> {{Service.p2}} </span>
</p>
</v-card>
</nuxt-link>
</v-col>
</v-row>
</v-layout>
<!-- <div>
<p v-if="$fetchState.pending">Fetching mountains...</p>
<p v-else-if="$fetchState.error">An error occurred :(</p>
<div v-else>
<h1>Nuxt Mountains {{mountains}} </h1>
<ul>
<li v-for="mountain of mountains">{{ mountain.title }}</li>
</ul>
<button @click="$fetch">Refresh</button>
</div>
</div> -->
</v-container>
</template>
<script>
export default {
data() {
return {
smProducts: [],
catFruits: [],
catVegetables: [],
catGrocery: [],
catServices: [],
catJewlry: [],
catCosmetics: [],
catCloths: []
}
},
async fetch() {
this.smProducts = await fetch(
'https://api7.siliconpin.com/items/swarnamath?offset=0&limit=90'
).then(res => res.json())
this.catFruits = this.smProducts.data.filter(item => { if (item.cat == "fruits") return item });
this.catVegetables = this.smProducts.data.filter(item => { if (item.cat == "vegetables") return item });
this.catGrocery = this.smProducts.data.filter(item => { if (item.cat == "grocery") return item });
this.catServices = this.smProducts.data.filter(item => { if (item.cat == "services") return item });
this.catJewlry = this.smProducts.data.filter(item => { if (item.cat == "jewlry") return item });
this.catCosmetics = this.smProducts.data.filter(item => { if (item.cat == "cosmetics") return item });
this.catCloths = this.smProducts.data.filter(item => { if (item.cat == "cloths") return item });
// console.log(this.catFruits)
}
}
</script>
<style scoped>
a {
text-decoration: none;
}
#flas {
height: 100px;
width: 100%;
}
</style>

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/icon-s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
static/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

BIN
static/images/veg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

45
static/manifest.json Normal file
View File

@ -0,0 +1,45 @@
{
"short_name": "Swarna Math",
"name": "Delivery App Swarna Math",
"icons": [
{
"src": "/icon.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": "/",
"background_color": "#3367D6",
"display": "standalone",
"scope": "/",
"theme_color": "#3367D6",
"shortcuts": [
{
"name": "Swarna Math -Vegetables",
"short_name": "Vegetables",
"description": "Get Vegetables delivered to your home.",
"url": "/category/vegetables",
"icons": [{ "src": "/icon.png", "sizes": "192x192" }]
},
{
"name": "Swarna Math - fruits",
"short_name": "fruits",
"description": "Get Fruits delivered to your home.",
"url": "/category/fruits",
"icons": [{ "src": "/icon.png", "sizes": "192x192" }]
}
],
"description": "Delivery App Swarna Math",
"screenshots": [
{
"src": "/images/screenshot1.png",
"type": "image/png",
"sizes": "540x720"
},
{
"src": "/images/screenshot2.jpg",
"type": "image/jpg",
"sizes": "540x720"
}
]
}

10
store/README.md Normal file
View File

@ -0,0 +1,10 @@
# STORE
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your Vuex Store files.
Vuex Store option is implemented in the Nuxt.js framework.
Creating a file in this directory automatically activates the option in the framework.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).

9337
yarn.lock Normal file

File diff suppressed because it is too large Load Diff