├── .env.client
├── .env.server
├── .github
├── ISSUE_TEMPLATE
│ ├── bug.yaml
│ ├── custom.m
│ ├── featurerequest.yaml
│ └── styling.yaml
├── PULL_REQUEST_TEMPLATE.yml
├── config
│ └── reviewpad.yml
├── dependabot.yaml
├── labeler.yml
└── workflows
│ ├── PR_comment.yml
│ ├── approve_label.yml
│ ├── backup_workflow.yml
│ ├── codeql.yml
│ ├── default_issue_label.yml
│ ├── docker_build_ci.yml
│ ├── issue_comment.yml
│ ├── linting.yml
│ ├── ongoing_issue_labeler.yml
│ ├── open_issue_label.yml
│ ├── pr_size.yml
│ ├── stale.yml
│ └── unassigned_issue_bot.yml
├── .gitignore
├── .vaunt
└── config.yaml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Flowchart.jpg
├── LICENSE
├── README.md
├── SECURITY.md
├── SRS.md
├── client
└── StichHub
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── postcss.config.cjs
│ ├── public
│ ├── 3D-Model
│ │ ├── FinalModel.gltf
│ │ ├── Human.jsx
│ │ ├── ShirtModel-transformed.glb
│ │ ├── Womenjacket-transformed.glb
│ │ └── human.glb
│ ├── index.js
│ ├── loading_animation.svg
│ └── sitemap.xml
│ ├── src
│ ├── App.css
│ ├── App.jsx
│ ├── assets
│ │ ├── 3D-Model
│ │ │ ├── FinalModel.gltf
│ │ │ ├── ShirtModel-transformed.glb
│ │ │ └── Womenjacket-transformed.glb
│ │ ├── 3dConfigurator
│ │ │ └── configurator-icons
│ │ │ │ ├── 3D-View.webp
│ │ │ │ ├── ArrowBack.webp
│ │ │ │ ├── ArrowNext.webp
│ │ │ │ ├── back1.webp
│ │ │ │ ├── back2.webp
│ │ │ │ ├── back3.webp
│ │ │ │ ├── collar1.webp
│ │ │ │ ├── collar2.webp
│ │ │ │ ├── collar3.webp
│ │ │ │ ├── collar4.webp
│ │ │ │ ├── collar5.webp
│ │ │ │ ├── cuff1.webp
│ │ │ │ ├── cuff2.webp
│ │ │ │ ├── cuff3.webp
│ │ │ │ ├── index.js
│ │ │ │ ├── sleeve1.webp
│ │ │ │ ├── sleeve2.webp
│ │ │ │ ├── sleeve3.webp
│ │ │ │ └── zoom.webp
│ │ ├── CustomerImg.webp
│ │ ├── CustomerLandingPage
│ │ │ ├── Calculator.webp
│ │ │ ├── Call.webp
│ │ │ ├── Enter.webp
│ │ │ ├── Girl with clothes.webp
│ │ │ ├── Group 1000001620.webp
│ │ │ ├── Icons
│ │ │ │ ├── Accuracy.webp
│ │ │ │ ├── Choose.webp
│ │ │ │ ├── Durable.webp
│ │ │ │ ├── Highlight.webp
│ │ │ │ ├── fabric.webp
│ │ │ │ └── truck.webp
│ │ │ ├── Room - Girl Reading - Copy@3-1707x802 (2).webp
│ │ │ ├── Tailor.webp
│ │ │ ├── handle.webp
│ │ │ ├── image 175.webp
│ │ │ └── provide.webp
│ │ ├── MainLandingPage
│ │ │ └── Icons
│ │ │ │ ├── 3D-Demo.webp
│ │ │ │ ├── 3dConfigurator.webp
│ │ │ │ ├── AboutUsVector.webp
│ │ │ │ ├── AvatarDemo.webp
│ │ │ │ ├── AvatarIcon-blue.webp
│ │ │ │ ├── CartIcon.webp
│ │ │ │ ├── ContactUsVector.webp
│ │ │ │ ├── CreatProfileIcon.webp
│ │ │ │ ├── DemoShirtIcon.webp
│ │ │ │ ├── EmailIcon-blue.webp
│ │ │ │ ├── HomeDelivery.webp
│ │ │ │ ├── Instagram.webp
│ │ │ │ ├── Mail.webp
│ │ │ │ ├── ModernDress.webp
│ │ │ │ ├── OnlineMeasurement.webp
│ │ │ │ ├── PhoneIcon-blue.webp
│ │ │ │ ├── SendVector.webp
│ │ │ │ ├── SleevlessShirt.webp
│ │ │ │ ├── TakeOrdersIcon.webp
│ │ │ │ ├── Whatsapp.webp
│ │ │ │ ├── Youtube.webp
│ │ │ │ ├── appoitment.webp
│ │ │ │ ├── close.svg
│ │ │ │ ├── delivery.webp
│ │ │ │ ├── describe.png
│ │ │ │ ├── designIcon.webp
│ │ │ │ ├── forcustomers.webp
│ │ │ │ ├── fortailors.webp
│ │ │ │ ├── index.js
│ │ │ │ ├── measurement.webp
│ │ │ │ ├── menu.svg
│ │ │ │ ├── sweingmachine.webp
│ │ │ │ └── tailor.webp
│ │ ├── TailorDashboard
│ │ │ ├── Altered.webp
│ │ │ ├── Custom.webp
│ │ │ ├── gradient_blue.webp
│ │ │ ├── index.js
│ │ │ ├── mens.webp
│ │ │ ├── ongoingtop-2.webp
│ │ │ ├── others.webp
│ │ │ └── women.webp
│ │ ├── Tailorimg.webp
│ │ ├── Yadav.webp
│ │ ├── decor.webp
│ │ ├── googlelogo.webp
│ │ ├── hl.webp
│ │ ├── home
│ │ │ ├── 7309681.jpg
│ │ │ ├── bady-abbas-YZm-WKqxTIU-unsplash.jpg
│ │ │ ├── index.js
│ │ │ ├── star.webp
│ │ │ └── yadav.webp
│ │ ├── img
│ │ │ ├── Cloth_Model.webp
│ │ │ ├── Ongoingtop.webp
│ │ │ ├── captcha_Bg.webp
│ │ │ ├── el.webp
│ │ │ ├── el2.webp
│ │ │ ├── g5.webp
│ │ │ ├── gr.webp
│ │ │ ├── gr1.webp
│ │ │ ├── gr3.webp
│ │ │ ├── gr4.webp
│ │ │ ├── gr6.webp
│ │ │ ├── im.webp
│ │ │ ├── ime.webp
│ │ │ ├── img.webp
│ │ │ ├── imr.webp
│ │ │ ├── jonathan.webp
│ │ │ ├── n.webp
│ │ │ ├── new.webp
│ │ │ ├── profileverify.webp
│ │ │ ├── se.webp
│ │ │ ├── speciality.webp
│ │ │ ├── v.webp
│ │ │ └── verified.webp
│ │ ├── index.js
│ │ ├── india.png
│ │ ├── loginsignup
│ │ │ ├── customerimg.webp
│ │ │ └── tailorimg.webp
│ │ ├── loginsignupbg.webp
│ │ ├── logo.svg
│ │ ├── logo.webp
│ │ ├── logo
│ │ │ ├── Logo (Black BG).png
│ │ │ ├── Logo (White BG).png
│ │ │ ├── Logo Transparent (Black).png
│ │ │ ├── Logo Transparent (White).png
│ │ │ ├── Long - Logo Transparent (Black).png
│ │ │ ├── Long - Logo Transparent (White).png
│ │ │ ├── Short-Logo Transparent (Black).png
│ │ │ └── Short-Logo Transparent (White).png
│ │ ├── man.jpg
│ │ ├── nc.webp
│ │ ├── registrationbg.webp
│ │ ├── sp.webp
│ │ ├── sy.webp
│ │ ├── textures
│ │ │ ├── cotton
│ │ │ │ ├── Fabric_001_COLOR.webp
│ │ │ │ ├── Fabric_001_DISP.webp
│ │ │ │ ├── Fabric_001_NORM.webp
│ │ │ │ ├── Fabric_001_OCC.webp
│ │ │ │ ├── Fabric_001_ROUGH.webp
│ │ │ │ └── Material_Cloth1_002.webp
│ │ │ ├── index.js
│ │ │ ├── silk
│ │ │ │ ├── Fabric_Silk_001_ambientOcclusion.webp
│ │ │ │ ├── Fabric_Silk_001_basecolor.webp
│ │ │ │ ├── Fabric_Silk_001_height.webp
│ │ │ │ ├── Fabric_Silk_001_metallic.webp
│ │ │ │ ├── Fabric_Silk_001_normal.webp
│ │ │ │ ├── Fabric_Silk_001_roughness.webp
│ │ │ │ └── Material_1556.webp
│ │ │ └── wool
│ │ │ │ ├── Material_1255.webp
│ │ │ │ ├── Soundproof_Wool_001_ambientOcclusion.webp
│ │ │ │ ├── Soundproof_Wool_001_basecolor.webp
│ │ │ │ ├── Soundproof_Wool_001_height.webp
│ │ │ │ ├── Soundproof_Wool_001_normal.webp
│ │ │ │ └── Soundproof_Wool_001_roughness.webp
│ │ └── vk.webp
│ ├── axios.js
│ ├── common
│ │ └── validation.js
│ ├── components
│ │ ├── AuthError.jsx
│ │ ├── Cart
│ │ │ ├── PaymentFailure.jsx
│ │ │ ├── PaymentSuccess.jsx
│ │ │ ├── Step1.jsx
│ │ │ ├── Step2.jsx
│ │ │ ├── Step3.jsx
│ │ │ ├── Step4.jsx
│ │ │ └── YourOrders.jsx
│ │ ├── Configurator
│ │ │ ├── ClothModel
│ │ │ │ ├── ClothModel.jsx
│ │ │ │ ├── ModelEnvironment.jsx
│ │ │ │ ├── ShirtModel.jsx
│ │ │ │ └── Womenjacket.jsx
│ │ │ ├── ControlsMenu
│ │ │ │ ├── BottomSection.jsx
│ │ │ │ ├── ControlsMenu.jsx
│ │ │ │ ├── OptionSection.jsx
│ │ │ │ └── TitleSection.jsx
│ │ │ ├── Navbar.jsx
│ │ │ └── index.js
│ │ ├── CustomerLandingPage
│ │ │ ├── 3D-Demo.png
│ │ │ ├── Button.jsx
│ │ │ ├── Cardi.jsx
│ │ │ ├── CardiM.jsx
│ │ │ ├── Configurator.jsx
│ │ │ ├── Features.jsx
│ │ │ ├── FeaturesM.jsx
│ │ │ ├── GetList.jsx
│ │ │ ├── GetListM.jsx
│ │ │ ├── Nav.jsx
│ │ │ ├── PageContent.jsx
│ │ │ ├── PageContentM.jsx
│ │ │ ├── Worried.jsx
│ │ │ └── WorriedM.jsx
│ │ ├── DeleteAccount.jsx
│ │ ├── ErrorPage
│ │ │ └── 404ErrorPage.jsx
│ │ ├── FabricModel
│ │ │ ├── CardM.jsx
│ │ │ ├── FabricCard.jsx
│ │ │ └── SideMenu.jsx
│ │ ├── GoToTop.jsx
│ │ ├── Header.jsx
│ │ ├── Home
│ │ │ ├── Category.jsx
│ │ │ ├── CustomerOrder.jsx
│ │ │ ├── Features.jsx
│ │ │ ├── FilterSection.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── OrderConfirmation.jsx
│ │ │ ├── TailorList.jsx
│ │ │ └── index.js
│ │ ├── Loginsignup
│ │ │ ├── AuthTailor.jsx
│ │ │ ├── Captcha.jsx
│ │ │ ├── CustomerAuth.jsx
│ │ │ ├── ForgotPassword.jsx
│ │ │ └── Signup.jsx
│ │ ├── MainLandingPage
│ │ │ ├── About.css
│ │ │ ├── About.jsx
│ │ │ ├── ContactUs.jsx
│ │ │ ├── FAQs
│ │ │ │ ├── faq.css
│ │ │ │ ├── faq.jsx
│ │ │ │ ├── faqIcon.png
│ │ │ │ └── faqIcon.webp
│ │ │ ├── Footer.jsx
│ │ │ ├── FooterHomePage.jsx
│ │ │ ├── Home.jsx
│ │ │ ├── HowItWorks
│ │ │ │ ├── Customers.jsx
│ │ │ │ ├── HowItWorks.jsx
│ │ │ │ └── Tailors.jsx
│ │ │ ├── Model
│ │ │ │ ├── DemoModel.jsx
│ │ │ │ └── Model.jsx
│ │ │ ├── NavBar.jsx
│ │ │ ├── OurServices.jsx
│ │ │ └── index.js
│ │ ├── Navbar.jsx
│ │ ├── NavbarDarkOg.js
│ │ ├── Navbardark.jsx
│ │ ├── TailorDashboard
│ │ │ ├── Graphs.jsx
│ │ │ ├── NewTailor.jsx
│ │ │ ├── Profile.jsx
│ │ │ ├── Tabs.jsx
│ │ │ ├── main
│ │ │ │ ├── LeftView.jsx
│ │ │ │ ├── MainDisplay.jsx
│ │ │ │ ├── NavBar.jsx
│ │ │ │ └── TopDisplays.jsx
│ │ │ ├── mobile
│ │ │ │ ├── FooterNavigation.jsx
│ │ │ │ ├── Main
│ │ │ │ │ ├── MainMobileDisplay.jsx
│ │ │ │ │ ├── NewOrders.jsx
│ │ │ │ │ ├── TopMobileDisplays.jsx
│ │ │ │ │ └── TopProfile.jsx
│ │ │ │ └── Ongoing
│ │ │ │ │ ├── MobileOngoingOpen.jsx
│ │ │ │ │ └── MobileOngoingOrders.jsx
│ │ │ ├── ongoing
│ │ │ │ ├── OngoingOrders.jsx
│ │ │ │ └── OngoingOrdersOpen.jsx
│ │ │ └── profile.css
│ │ ├── TailorDetails
│ │ │ ├── ProgressM.jsx
│ │ │ ├── Progressbar.jsx
│ │ │ ├── StarRate.jsx
│ │ │ ├── StarRateM.jsx
│ │ │ ├── Tabs.jsx
│ │ │ ├── TabsM.jsx
│ │ │ ├── TailorSum.jsx
│ │ │ ├── Tailorhead.jsx
│ │ │ └── man.jpg
│ │ ├── TailorProfileVerification
│ │ │ ├── EmailVerification.jsx
│ │ │ ├── ProgressBar.jsx
│ │ │ ├── Step1.jsx
│ │ │ ├── Step2.jsx
│ │ │ ├── Step3.jsx
│ │ │ ├── Step4.jsx
│ │ │ ├── Step5.jsx
│ │ │ ├── Step6.jsx
│ │ │ └── Verify.jsx
│ │ ├── Testimonial
│ │ │ ├── Testimonial.jsx
│ │ │ ├── TestimonialCard.jsx
│ │ │ └── Testimonials.jsx
│ │ └── index.js
│ ├── constants
│ │ ├── MainLandingPage.js
│ │ ├── configurator.js
│ │ └── home.js
│ ├── contants
│ │ ├── MainLandingPage.js
│ │ └── configurator.js
│ ├── contexts
│ │ ├── Configurator.jsx
│ │ ├── Home.jsx
│ │ └── LandingPageDemo.jsx
│ ├── index.css
│ ├── loading_style.css
│ ├── main.jsx
│ ├── pages
│ │ ├── Appointment.jsx
│ │ ├── Cart.jsx
│ │ ├── ClothesCategory.jsx
│ │ ├── CustomerLandingPage.jsx
│ │ ├── FabricModel.jsx
│ │ ├── FabricSelection.jsx
│ │ ├── Home.jsx
│ │ ├── HomeOnlineVisit.jsx
│ │ ├── LoginSignUp.jsx
│ │ ├── MainLandingPage.jsx
│ │ ├── TailorDashboard.jsx
│ │ ├── TailorDetails.jsx
│ │ ├── TailorProfileVerification.jsx
│ │ ├── ThreeDConfigurator.jsx
│ │ ├── ThreeDMeasurement.jsx
│ │ └── index.js
│ └── textures
│ │ ├── cotton
│ │ ├── Fabric_001_COLOR.jpg
│ │ ├── Fabric_001_DISP.png
│ │ ├── Fabric_001_NORM.jpg
│ │ ├── Fabric_001_OCC.jpg
│ │ ├── Fabric_001_ROUGH.jpg
│ │ └── Material_Cloth1_002.png
│ │ ├── index.js
│ │ ├── silk
│ │ ├── Fabric_Silk_001_ambientOcclusion.jpg
│ │ ├── Fabric_Silk_001_basecolor.jpg
│ │ ├── Fabric_Silk_001_height.png
│ │ ├── Fabric_Silk_001_metallic.jpg
│ │ ├── Fabric_Silk_001_normal.jpg
│ │ ├── Fabric_Silk_001_roughness.jpg
│ │ └── Material_1556.jpg
│ │ └── wool
│ │ ├── Material_1255.jpg
│ │ ├── Soundproof_Wool_001_ambientOcclusion.jpg
│ │ ├── Soundproof_Wool_001_basecolor.jpg
│ │ ├── Soundproof_Wool_001_height.png
│ │ ├── Soundproof_Wool_001_normal.jpg
│ │ └── Soundproof_Wool_001_roughness.jpg
│ ├── tailwind.config.cjs
│ ├── vercel.json
│ └── vite.config.js
├── deployment-client.yml
├── deployment-server.yml
├── docker-compose.yml
├── server
├── .dockerignore
├── .gitignore
├── Dockerfile
├── controllers
│ ├── cart.js
│ ├── forgotpassword.js
│ ├── order.js
│ ├── tailorDetails.js
│ ├── test.js
│ ├── userCustomer.js
│ └── userTailor.js
├── index.js
├── middlewares
│ ├── authCustomer.js
│ ├── authTailor.js
│ ├── generateToken.js
│ └── sendEmail.js
├── models
│ ├── cart.js
│ ├── order.js
│ ├── tailorDetails.js
│ ├── test.js
│ ├── userCustomer.js
│ └── userTailor.js
├── package-lock.json
├── package.json
├── routes
│ ├── cart.js
│ ├── orders.js
│ ├── payment.js
│ ├── tailorsDetails.js
│ ├── test.js
│ ├── userCustomer.js
│ └── userTailor.js
├── services
│ └── mail.js
└── vercel.json
├── service-client.yml
└── service-server.yml
/.env.client:
--------------------------------------------------------------------------------
1 | VITE_GOOGLE_CLIENT_ID="Enter google client id here"
2 |
3 | VITE_STRIPE_SCERET_KEY='Enter Your stripe key here'
4 |
--------------------------------------------------------------------------------
/.env.server:
--------------------------------------------------------------------------------
1 |
2 | MONGO_URL='Your Mongodb connection url'
3 | CUSTOMER_USER='your secret here for encrypting customer user token'
4 | TAILOR_USER='your secret here for encrypting tailor user token'
5 |
6 | CLIENT_ID='Cashfree appId here'
7 | CLIENT_SECRET='Cashfree secretId here'
8 |
9 | SOURCE_PASSWORD='your email password here'
10 | SOURCE_EMAIL='your email address here'
11 |
12 | TWILIOAUTH='enter your twilio AuthId here'
13 | TWILIOSID='enter your twilio SID here'
14 | TWILIOPHONE='enter your Twilio phone no. here'
15 | GMAIL_USER='enter your dummy gmail to send '
16 | GMAIL_PASS='enter your password (you may need to genrate app specific password if normal password doesnt work)'
17 | GMAIL_RECEIVER='enter email to recive contact form updates for eg:uba.gcoen@gmail.com'
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug.yaml:
--------------------------------------------------------------------------------
1 | name: "🐞 Bug Report"
2 | description: "Create a report to help us improve"
3 | title: "BUG:"
4 | labels: [Bug, Needs Triage]
5 | body:
6 | - type: checkboxes
7 | attributes:
8 | label: "Is there an existing issue raised for this?"
9 | description: "Please search to see if an issue already exists for the bug you encountered."
10 | options:
11 | - label: "I have searched the existing issues"
12 | required: true
13 |
14 | - type: textarea
15 | attributes:
16 | label: "What happened?"
17 | description: "A concise description of what you're experiencing."
18 | validations:
19 | required: true
20 | - type: textarea
21 | attributes:
22 | label: "Add ScreenShots"
23 | description: "Add sufficient SS to explain your issue."
24 | validations:
25 | required: true
26 | - type: dropdown
27 | id: browsers
28 | attributes:
29 | label: "What browser are you seeing the problem on?"
30 | multiple: true
31 | options:
32 | - "Firefox"
33 | - "Chrome"
34 | - "Microsoft Edge"
35 | - "Safari"
36 | - "Arc"
37 | - type: checkboxes
38 | attributes:
39 | label: "Record"
40 | options:
41 | - label: "I agree to follow this project's Code of Conduct"
42 | required: true
43 | - label: "I'm a GSSOC'23 contributor"
44 | - label: "I want to work on this issue"
45 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.m:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/featurerequest.yaml:
--------------------------------------------------------------------------------
1 | name: "✨ Feature Request Form"
2 | description: "Suggest an idea for this project"
3 | title: "Feat:"
4 | labels: ["Feat", "Needs Triage"]
5 | body:
6 | - type: checkboxes
7 | attributes:
8 | label: "Is there an existing issue raised for this?"
9 | description: "Please search to see if an issue already exists for the bug you encountered."
10 | options:
11 | - label: "I have searched the existing issues"
12 | required: true
13 |
14 | - type: textarea
15 | attributes:
16 | label: "Describe the feature"
17 | description: "Describe the feature you are requesting."
18 | validations:
19 | required: true
20 |
21 | - type: textarea
22 | attributes:
23 | label: "Add Screenshots"
24 | description: "Add sufficient screenshots to explain your issue."
25 | validations:
26 | required: true
27 |
28 | - type: checkboxes
29 | attributes:
30 | label: "Record Options"
31 | options:
32 | - label: "I agree to follow this project's Code of Conduct"
33 | required: true
34 | - label: "I'm a GSSOC'23 contributor"
35 | - label: "I want to work on this issue"
36 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/styling.yaml:
--------------------------------------------------------------------------------
1 | name: "🎨 Style Changing Request"
2 | description: "Request a change in the project's styling"
3 | title: "[STYLE CHANGE]"
4 | labels: [Feat, Needs Triage]
5 | body:
6 | - type: checkboxes
7 | attributes:
8 | label: "Is there an existing issue raised for this?"
9 | description: "Please search to see if an issue already exists for the bug you encountered."
10 | options:
11 | - label: "I have searched the existing issues"
12 | required: true
13 |
14 | - type: textarea
15 | attributes:
16 | label: "Description:"
17 | description: "Provide a clear and concise description of the style change you are requesting."
18 | validations:
19 | required: true
20 |
21 | - type: textarea
22 | attributes:
23 | label: "Reason for Change:"
24 | description: "Explain the reasons behind the requested style change, such as usability, branding, or user experience."
25 | validations:
26 | required: true
27 |
28 | - type: textarea
29 | attributes:
30 | label: "Current Styling:"
31 | description: "Describe the current styling that needs to be changed."
32 | validations:
33 | required: true
34 |
35 | - type: textarea
36 | attributes:
37 | label: "Proposed Styling:"
38 | description: "Describe the desired styling or changes you would like to see."
39 | validations:
40 | required: true
41 |
42 | - type: textarea
43 | attributes:
44 | label: "Screenshots or Design Mockups (optional):"
45 | description: "If available, include relevant screenshots or design mockups illustrating the requested style changes."
46 | validations:
47 | required: false
48 |
49 | - type: checkboxes
50 | attributes:
51 | label: "Tick the appropriate boxes as per your choice"
52 | options:
53 | - label: "I agree to follow this project's Code of Conduct"
54 | required: true
55 | - label: "I'm a GSSOC'23 contributor"
56 | - label: "I want to work on this issue"
57 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.yml:
--------------------------------------------------------------------------------
1 | # Description
2 |
3 | Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.
4 |
5 | Fixes # (issue)
6 |
7 | ## Type of change
8 |
9 | Please delete options that are not relevant.
10 |
11 | - [ ] Bug fix (non-breaking change which fixes an issue)
12 | - [ ] New feature (non-breaking change which adds functionality)
13 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14 | - [ ] This change requires a documentation update
15 |
16 | # How Has This Been Tested?
17 |
18 | Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
19 |
20 | - [ ] Test A
21 | - [ ] Test B
22 |
23 | **Test Configuration**:
24 | * Firmware version:
25 | * Hardware:
26 | * Toolchain:
27 | * SDK:
28 |
29 | # Checklist:
30 |
31 | - [ ] My code follows the style guidelines of this project
32 | - [ ] I have performed a self-review of my code
33 | - [ ] I have commented my code, particularly in hard-to-understand areas
34 | - [ ] I have made corresponding changes to the documentation
35 | - [ ] My changes generate no new warnings
36 | - [ ] New and existing unit tests pass locally with my changes
37 | - [ ] Any dependent changes have been merged and published in downstream modules
38 |
39 | # Screenshots
40 |
41 | ## Before
42 |
43 | ## After
44 |
45 | **Include video if needed**
46 |
--------------------------------------------------------------------------------
/.github/config/reviewpad.yml:
--------------------------------------------------------------------------------
1 | api-version: reviewpad.com/v3.x
2 |
3 | labels:
4 | small:
5 | description: "Pull request with less than 10 changed lines"
6 | color: "294b69"
7 | medium:
8 | description: "Pull request with changed lines between 10 and 30"
9 | color: "a8c3f7"
10 | large:
11 | description: "Pull request with more than 30 changed lines"
12 | color: "8a2138"
13 |
14 | workflows:
15 | - name: label-pull-request-with-size
16 | always-run: true
17 | if:
18 | - rule: $size() <= 10
19 | extra-actions:
20 | - $addLabel("small")
21 | - $removeLabels(["medium", "large"])
22 | - rule: $size() > 10 && $size() <= 30
23 | extra-actions:
24 | - $addLabel("medium")
25 | - $removeLabels(["small", "large"])
26 | - rule: $size() > 30
27 | extra-actions:
28 | - $addLabel("large")
29 | - $removeLabels(["small", "medium"])
30 |
31 | - name: first-time-contributor
32 | always-run: true
33 | if:
34 | - rule: $pullRequestCountBy($author(), "all") == 1
35 | extra-actions:
36 | - '$commentOnce($sprintf("Welcome @%v! Thank you so much for your first pull request!", [$author()]))'
37 |
38 | - rule: $pullRequestCountBy($author(), "all") == 10
39 | extra-actions:
40 | - $addLabel("kudos")
41 | - $info("Kudos for your 10th pull request! You are awesome💖")
42 |
--------------------------------------------------------------------------------
/.github/dependabot.yaml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "npm"
4 | directory: "client/StichHub"
5 | schedule:
6 | interval: "monthly"
7 | - package-ecosystem: "npm"
8 | directory: "server"
9 | schedule:
10 | interval: "monthly"
11 |
--------------------------------------------------------------------------------
/.github/labeler.yml:
--------------------------------------------------------------------------------
1 | # .github/
2 |
3 | rules:
4 | - label: "👍STATUS : ready to assign"
5 | conditions: issue.labels contains '👍STATUS : ready to assign'
6 | remove: true
7 | - label: "⏳STATUS : waiting for triage"
8 | conditions: issue.labels contains '👍STATUS : ready to assign'
9 | remove: true
10 | - label: "🚧STATUS : in progress"
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.github/workflows/PR_comment.yml:
--------------------------------------------------------------------------------
1 | on:
2 | pull_request_target:
3 | types:
4 | - opened
5 | jobs:
6 | pr_comment:
7 | runs-on: ubuntu-latest
8 | permissions:
9 | pull-requests: write
10 | steps:
11 | - name: Checkout
12 | uses: actions/checkout@v2
13 |
14 | - name: Comment a pull_request
15 | uses: mb2dev/github-action-comment-pull-request@1.0.0
16 | with:
17 | GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
18 | message: "Hello @${{ github.actor }}!
19 |
20 | Thank you for submitting this pull request
21 | Your pull request will be reviewed by maintainers shortly.
22 | Meanwhile make sure you have referenced the respected issue in this pr
23 | Your pr will not be merged if it does not have reference to respected issue
24 |
25 | please read our Contributing Guidelines
26 | https://github.com/UBA-GCOEN/StichHub/blob/main/CONTRIBUTING.md
27 | And Code of Conduct
28 | https://github.com/UBA-GCOEN/StichHub/blob/main/CODE_OF_CONDUCT.md"
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/.github/workflows/approve_label.yml:
--------------------------------------------------------------------------------
1 | name: Label when approved
2 | on:
3 | pull_request_review:
4 | types:
5 | - submitted
6 |
7 | permissions:
8 | pull-requests: write
9 |
10 | jobs:
11 | label-when-approved:
12 | name: "Label when approved"
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: Check if PR is approved
16 | id: check-approval
17 | run: |
18 | isApproved=$(echo "${{ github.event.review.state }}" | awk '{print tolower($0)}')
19 | if [[ $isApproved == "approved" ]]; then
20 | echo "::set-output name=isApproved::true"
21 | else
22 | echo "::set-output name=isApproved::false"
23 | fi
24 |
25 | - name: Label PR when approved
26 | if: steps.check-approval.outputs.isApproved == 'true'
27 | uses: actions/github-script@v5
28 | with:
29 | github-token: ${{ secrets.ACCESS_TOKEN }}
30 | script: |
31 | const prNumber = context.payload.pull_request.number;
32 | const labelToAdd = "🎉STATUS : approved";
33 |
34 | const { data: labels } = await github.issues.listLabelsOnIssue({
35 | owner: context.repo.owner,
36 | repo: context.repo.repo,
37 | issue_number: prNumber,
38 | });
39 |
40 | const labelExists = labels.some(label => label.name === labelToAdd);
41 |
42 | if (!labelExists) {
43 | await github.issues.addLabels({
44 | owner: context.repo.owner,
45 | repo: context.repo.repo,
46 | issue_number: prNumber,
47 | labels: [labelToAdd],
48 | });
49 | }
50 |
--------------------------------------------------------------------------------
/.github/workflows/backup_workflow.yml:
--------------------------------------------------------------------------------
1 | on:
2 | schedule:
3 | - cron: '0 23 * * *'
4 |
5 | jobs:
6 | pull-changes:
7 | runs-on: ubuntu-latest
8 | steps:
9 | - name: Checkout repository
10 | uses: actions/checkout@v2
11 |
12 | - name: Pull changes from main branch
13 | run: |
14 | git checkout -B backup-branch
15 | git pull origin main
16 | git push origin backup-branch -f
17 |
18 |
--------------------------------------------------------------------------------
/.github/workflows/default_issue_label.yml:
--------------------------------------------------------------------------------
1 | name: Label issues
2 | on:
3 | issues:
4 | types:
5 |
6 | - opened
7 | jobs:
8 | label_issues:
9 | runs-on: ubuntu-latest
10 | permissions:
11 | issues: write
12 | steps:
13 | - uses: actions/github-script@v6
14 | with:
15 | script: |
16 | github.rest.issues.addLabels({
17 | issue_number: context.issue.number,
18 | owner: context.repo.owner,
19 | repo: context.repo.repo,
20 | labels: ["⏳STATUS : waiting for triage"]
21 | })
22 |
23 |
--------------------------------------------------------------------------------
/.github/workflows/docker_build_ci.yml:
--------------------------------------------------------------------------------
1 | name: Build and Push Docker Images
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | env:
9 | DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
10 | DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
11 |
12 | jobs:
13 | build-and-push:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: Checkout repository
18 | uses: actions/checkout@v2
19 |
20 | - name: Login to Docker Hub
21 | uses: docker/login-action@v1
22 | with:
23 | username: ${{ env.DOCKER_USERNAME }}
24 | password: ${{ env.DOCKER_PASSWORD }}
25 |
26 | - name: Build and push Client Docker image
27 | uses: docker/build-push-action@v2
28 | with:
29 | context: ./client/StichHub
30 | push: true
31 | tags: nareshchandanbatve/stichhub:client
32 |
33 | - name: Build and push Server Docker image
34 | uses: docker/build-push-action@v2
35 | with:
36 | context: ./server
37 | push: true
38 | tags: nareshchandanbatve/stichhub:server
39 |
40 |
--------------------------------------------------------------------------------
/.github/workflows/issue_comment.yml:
--------------------------------------------------------------------------------
1 | name: issue-checklist
2 |
3 | on:
4 | issues:
5 | types: [opened]
6 |
7 | jobs:
8 | comment:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - uses: ben-z/actions-comment-on-issue@1.0.2
13 | with:
14 | message: "Hello @${{ github.actor }}!
15 |
16 | Thank you for opening this new issue
17 | . We appreciate your interest in our project
18 |
19 | we kindly request that you please review our Contributing Guidelines
20 |
21 | https://github.com/UBA-GCOEN/StichHub/blob/main/CONTRIBUTING.md and Code of Conduct
22 |
23 | https://github.com/UBA-GCOEN/StichHub/blob/main/CODE_OF_CONDUCT.md
24 |
25 | thoroughly.
26 |
27 | Mentors will review your issue. Meanwhile
28 |
29 | please take a moment to check if a similar issue has already been opened."
30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31 |
--------------------------------------------------------------------------------
/.github/workflows/linting.yml:
--------------------------------------------------------------------------------
1 | name: Linting
2 | on:
3 | pull_request_target:
4 | types:
5 | - opened
6 | jobs:
7 |
8 | Linting:
9 | runs-on: ubuntu-latest
10 | permissions: write-all
11 | steps:
12 |
13 | - name: Checkout
14 | uses: actions/checkout@v3
15 | with:
16 | ref: ${{ github.head_ref }}
17 | token: ${{ secrets.GH_TOKEN }}
18 |
19 | - name: Lint code with prettier
20 | uses: creyD/prettier_action@v4.3
21 | with:
22 | prettier_options: --write **/*.{js,md}
23 | token: ${{ secrets.GH_TOKEN }}
24 |
25 |
--------------------------------------------------------------------------------
/.github/workflows/ongoing_issue_labeler.yml:
--------------------------------------------------------------------------------
1 | name: Assign Label to Assigned Issues
2 |
3 | on:
4 | issues:
5 | types:
6 | - assigned
7 |
8 | jobs:
9 | assign-label:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout repository
14 | uses: actions/checkout@v2
15 |
16 | - name: Assign Label
17 | uses: actions/github-script@v4
18 | with:
19 | github-token: ${{ secrets.GITHUB_TOKEN }}
20 | script: |
21 | const issue = context.payload.issue;
22 | const labelToAdd = '🚧STATUS : in progress';
23 | const labelToRemove = '⏳STATUS : waiting for triage';
24 | const labelToRemove2 = '👍STATUS : ready to assign';
25 | const labelToRemove3 = 'question';
26 |
27 | await github.issues.addLabels({
28 | owner: context.repo.owner,
29 | repo: context.repo.repo,
30 | issue_number: issue.number,
31 | labels: [labelToAdd],
32 | });
33 |
34 | const { data: labels } = await github.issues.listLabelsOnIssue({
35 | owner: context.repo.owner,
36 | repo: context.repo.repo,
37 | issue_number: issue.number,
38 | });
39 |
40 | const labelExists = labels.some(label => label.name === labelToRemove);
41 | const labelExists2 = labels.some(label => label.name === labelToRemove2);
42 | const labelExists3 = labels.some(label => label.name === labelToRemove3);
43 |
44 | if (labelExists) {
45 | await github.issues.removeLabel({
46 | owner: context.repo.owner,
47 | repo: context.repo.repo,
48 | issue_number: issue.number,
49 | name: labelToRemove,
50 | });
51 | }
52 |
53 | if (labelExists2) {
54 | await github.issues.removeLabel({
55 | owner: context.repo.owner,
56 | repo: context.repo.repo,
57 | issue_number: issue.number,
58 | name: labelToRemove2,
59 | });
60 | }
61 |
62 | if (labelExists3) {
63 |
64 | await github.issues.removeLabel({
65 |
66 | owner: context.repo.owner,
67 |
68 | repo: context.repo.repo,
69 |
70 | issue_number: issue.number,
71 |
72 | name: question,
73 |
74 | });
75 |
76 | }
77 |
78 |
79 |
--------------------------------------------------------------------------------
/.github/workflows/open_issue_label.yml:
--------------------------------------------------------------------------------
1 | name: Add Label and Assign
2 |
3 | on:
4 | issues:
5 | types:
6 | - opened
7 |
8 | jobs:
9 | addLabelAndAssign:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Check issue checkboxes
14 | id: checkboxes
15 | uses: actions/github-script@v4
16 | with:
17 | github-token: ${{ secrets.GITHUB_TOKEN }}
18 | script: |
19 | const issue = context.payload.issue;
20 | const body = issue.body ? issue.body.toLowerCase() : '';
21 | const checkboxes = context.payload.issue.body.match(/- \[x\] ([^\n]+)/g);
22 | const hasGSSOCContributor = checkboxes.includes(c => c.includes("I'm a GSSOC'23 contributor"));
23 | const wantsToWorkOnIssue = checkboxes.includes(c => c.includes("I want to work on this issue"));
24 |
25 | console.log(`Has GSSOC Contributor: ${hasGSSOCContributor}`);
26 | console.log(`Wants to work on issue: ${wantsToWorkOnIssue}`);
27 |
28 | console.log(`::set-output name=hasGSSOCContributor::${hasGSSOCContributor}`);
29 | console.log(`::set-output name=wantsToWorkOnIssue::${wantsToWorkOnIssue}`);
30 |
31 | - name: Add label
32 | if: ${{ steps.checkboxes.outputs.hasGSSOCContributor == 'true' }}
33 | uses: actions/github-script@v4
34 | with:
35 | github-token: ${{ secrets.GITHUB_TOKEN }}
36 | script: |
37 | const labelToAdd = 'gssoc23';
38 | const octokit = github.getOctokit(process.env.GITHUB_TOKEN);
39 | await octokit.rest.issues.addLabels({
40 | owner: context.repo.owner,
41 | repo: context.repo.repo,
42 | issue_number: context.issue.number,
43 | labels: [labelToAdd]
44 | });
45 |
46 | - name: Assign author
47 | if: ${{ steps.checkboxes.outputs.wantsToWorkOnIssue == 'true' }}
48 | uses: actions/github-script@v4
49 | with:
50 | github-token: ${{ secrets.GITHUB_TOKEN }}
51 | script: |
52 | const octokit = github.getOctokit(process.env.GITHUB_TOKEN);
53 | await octokit.rest.issues.update({
54 | owner: context.repo.owner,
55 | repo: context.repo.repo,
56 | issue_number: context.issue.number,
57 | assignees: [context.issue.user.login]
58 | });
59 |
--------------------------------------------------------------------------------
/.github/workflows/pr_size.yml:
--------------------------------------------------------------------------------
1 | name: Reviewpad
2 |
3 | on:
4 | issues:
5 | issue_comment:
6 | pull_request_target:
7 |
8 | # These permissions are necessary to automate pull requests from forks.
9 | permissions:
10 | pull-requests: write
11 | issues: write
12 |
13 | jobs:
14 | reviewpad_job:
15 | runs-on: ubuntu-latest
16 | name: Reviewpad
17 | # Don't run reviewpad on automated PRs
18 | steps:
19 | - name: Reviewpad
20 | uses: reviewpad/action@v3.x
21 | with:
22 | file: .github/config/reviewpad.yml
23 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
2 | #
3 | # You can adjust the behavior by modifying this file.
4 | # For more information, see:
5 | # https://github.com/actions/stale
6 | name: Mark stale issues and pull requests
7 |
8 | on:
9 | schedule:
10 | - cron: '0 23 */4 * *'
11 |
12 | jobs:
13 | stale:
14 |
15 | runs-on: ubuntu-latest
16 | permissions:
17 | issues: write
18 | pull-requests: write
19 |
20 | steps:
21 | - uses: actions/stale@v5
22 | with:
23 | repo-token: ${{ secrets.GITHUB_TOKEN }}
24 | stale-issue-message: |
25 | 'hey @{assignee},
26 | It has been seen that you haven't responded to this issue since long ago,
27 | Please update the tatus or reply to this message else will be assigned to someone else.'
28 | @{author}, @{reviewer}'
29 |
30 |
31 | stale-pr-message: |
32 | 'hey @{assignee},
33 | It has been seen that you haven't responded to this issue since long ago,
34 | Please update the tatus or reply to this message else will be assigned to someone else.
35 | @{author}, @{reviewer}'
36 |
37 | stale-issue-label: '🕸️STATUS : stale'
38 | stale-pr-label: '🕸️STATUS : stale'
39 |
--------------------------------------------------------------------------------
/.github/workflows/unassigned_issue_bot.yml:
--------------------------------------------------------------------------------
1 | name: Assign Label to sUmAigned Issues
2 |
3 | on:
4 | issues:
5 | types:
6 | - unassigned
7 |
8 | jobs:
9 | assign-label:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout repository
14 | uses: actions/checkout@v2
15 |
16 | - name: Assign Label
17 | uses: actions/github-script@v4
18 | with:
19 | github-token: ${{ secrets.GITHUB_TOKEN }}
20 | script: |
21 | const issue = context.payload.issue;
22 | const labelToAdd = '👍STATUS : ready to assign';
23 | const labelToRemove = '🚧STATUS : in progress';
24 |
25 |
26 | await github.issues.addLabels({
27 | owner: context.repo.owner,
28 | repo: context.repo.repo,
29 | issue_number: issue.number,
30 | labels: [labelToAdd],
31 | });
32 |
33 | const { data: labels } = await github.issues.listLabelsOnIssue({
34 | owner: context.repo.owner,
35 | repo: context.repo.repo,
36 | issue_number: issue.number,
37 | });
38 |
39 | const labelExists = labels.some(label => label.name === labelToRemove);
40 |
41 |
42 | if (labelExists) {
43 | await github.issues.removeLabel({
44 | owner: context.repo.owner,
45 | repo: context.repo.repo,
46 | issue_number: issue.number,
47 | name: labelToRemove,
48 | });
49 | }
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | .env.*
15 | .env
16 |
17 | # Editor directories and files
18 | .vscode/*
19 | !.vscode/extensions.json
20 | .idea
21 | .DS_Store
22 | *.suo
23 | *.ntvs*
24 | *.njsproj
25 | *.sln
26 | *.sw?
27 |
28 | #k8s files
29 | secret.yml
30 |
--------------------------------------------------------------------------------
/.vaunt/config.yaml:
--------------------------------------------------------------------------------
1 | version: 0.0.1
2 | achievements:
3 | - achievement:
4 | name: Shooting Star
5 | icon: https://raw.githubusercontent.com/vauntdev/example/main/.vaunt/shooting_star.png
6 | description: Awarded for staring our repository, make a wish!
7 | triggers:
8 | - trigger:
9 | actor: author
10 | action: star
11 | condition: starred = true
12 | - achievement:
13 | name: Every Bit Counts
14 | icon: https://raw.githubusercontent.com/vauntdev/example/main/.vaunt/every_bit_counts.png
15 | description: No commit is too small!
16 | triggers:
17 | - trigger:
18 | actor: author
19 | action: commit
20 | condition: count() >= 1
21 | - achievement:
22 | name: Pull Request Hero
23 | icon: https://raw.githubusercontent.com/vauntdev/example/main/.vaunt/pull_request_hero.png
24 | description: You're a PR hero, rock on!
25 | triggers:
26 | - trigger:
27 | actor: author
28 | action: pull_request
29 | condition: merged = true
30 | - achievement:
31 | name: Closer
32 | icon: https://raw.githubusercontent.com/vauntdev/example/main/.vaunt/closer.png
33 | description: Only closers get coffee!
34 | triggers:
35 | - trigger:
36 | actor: author
37 | action: issue
38 | condition: closed = true
39 |
--------------------------------------------------------------------------------
/Flowchart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/Flowchart.jpg
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 UBA GCOEN
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | Use this section to tell people about which versions of your project are
6 | currently being supported with security updates.
7 |
8 | | Version | Supported |
9 | | ------- | ------------------ |
10 | | 5.1.x | :white_check_mark: |
11 | | 5.0.x | :x: |
12 | | 4.0.x | :white_check_mark: |
13 | | < 4.0 | :x: |
14 |
15 | ## Reporting a Vulnerability
16 |
17 | Use this section to tell people how to report a vulnerability.
18 |
19 | Tell them where to go, how often they can expect to get an update on a
20 | reported vulnerability, what to expect if the vulnerability is accepted or
21 | declined, etc.
22 |
--------------------------------------------------------------------------------
/client/StichHub/.dockerignore:
--------------------------------------------------------------------------------
1 | .git
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | .env
--------------------------------------------------------------------------------
/client/StichHub/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | .env
15 |
16 | # Editor directories and files
17 | .vscode/*
18 | !.vscode/extensions.json
19 | .idea
20 | .DS_Store
21 | *.suo
22 | *.ntvs*
23 | *.njsproj
24 | *.sln
25 | *.sw?
--------------------------------------------------------------------------------
/client/StichHub/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:18
2 |
3 | WORKDIR /client
4 |
5 | COPY package*.json .
6 |
7 | RUN npm install
8 |
9 | COPY . .
10 |
11 | EXPOSE 5173
12 |
13 | CMD ["npm", "run", "dev"]
14 |
15 |
16 |
--------------------------------------------------------------------------------
/client/StichHub/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | StichHub | STITCH YOUR WAY
5 |
6 |
7 |
8 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
39 |
40 |
41 |
46 |
47 |
51 |
52 |
53 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/client/StichHub/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "stichhub",
3 | "private": true,
4 | "proxy": "https://stichhub-backend.vercel.app/",
5 | "version": "0.0.0",
6 | "type": "module",
7 | "scripts": {
8 | "dev": "vite",
9 | "build": "vite build",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@emotion/react": "^11.10.6",
14 | "@emotion/styled": "^11.10.6",
15 | "@fortawesome/fontawesome-svg-core": "^6.4.0",
16 | "@fortawesome/free-brands-svg-icons": "^6.4.0",
17 | "@fortawesome/react-fontawesome": "^0.2.0",
18 | "@google/model-viewer": "^3.1.1",
19 | "@headlessui/react": "^1.7.13",
20 | "@heroicons/react": "^2.0.16",
21 | "@lottiefiles/react-lottie-player": "^3.5.3",
22 | "@material-tailwind/react": "^1.4.2",
23 | "@mui/icons-material": "^5.11.11",
24 | "@mui/material": "^5.13.4",
25 | "@react-oauth/google": "^0.9.0",
26 | "@react-spring/web": "^9.7.1",
27 | "@react-three/drei": "^9.74.8",
28 | "@react-three/fiber": "^8.12.0",
29 | "@react-three/gltfjsx": "^4.3.4",
30 | "@react-three/xr": "^5.4.1",
31 | "@stripe/stripe-js": "^1.53.0",
32 | "@tweenjs/tween.js": "^19.0.0",
33 | "@types/three": "^0.150.1",
34 | "@use-gesture/react": "^10.2.25",
35 | "apexcharts": "^3.40.0",
36 | "api": "^5.0.8",
37 | "axios": "^1.3.5",
38 | "cashfree-pg-sdk-javascript": "^2.0.7",
39 | "cashfree-pg-sdk-nodejs": "^2.0.2",
40 | "cashfree-sdk": "^0.1.1",
41 | "country-state-city": "^3.1.2",
42 | "dotenv": "^16.1.4",
43 | "esbuild": "^0.17.13",
44 | "flowbite": "^1.6.5",
45 | "flowbite-react": "^0.4.3",
46 | "jwt-decode": "^3.1.2",
47 | "multi-range-slider-react": "^2.0.3",
48 | "react": "^18.2.0",
49 | "react-accessible-accordion": "^5.0.0",
50 | "react-apexcharts": "^1.4.0",
51 | "react-circular-progressbar": "^2.1.0",
52 | "react-country-region-selector": "^3.6.1",
53 | "react-dom": "^18.2.0",
54 | "react-drag-drop-files": "^2.3.9",
55 | "react-dropzone-uploader": "^2.11.0",
56 | "react-icons": "^4.9.0",
57 | "react-ios-time-picker": "^0.2.2",
58 | "react-otp-input": "^3.0.2",
59 | "react-phone-input-2": "^2.15.1",
60 | "react-rating-stars-component": "^2.2.0",
61 | "react-scroll": "^1.8.9",
62 | "react-slick": "^0.29.0",
63 | "react-tailwindcss-select": "^1.8.5",
64 | "rsuite": "^5.28.3",
65 | "styled-components": "^5.3.11",
66 | "swiper": "^9.4.1",
67 | "three": "^0.151.2",
68 | "tw-elements": "^1.0.0-beta2"
69 | },
70 | "devDependencies": {
71 | "@types/react": "^18.0.28",
72 | "@types/react-dom": "^18.2.6",
73 | "@vitejs/plugin-react": "^4.0.0",
74 | "autoprefixer": "^10.4.14",
75 | "postcss": "^8.4.21",
76 | "react-router-dom": "^6.11.2",
77 | "tailwindcss": "^3.2.7",
78 | "vite": "^4.3.8"
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/client/StichHub/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/client/StichHub/public/3D-Model/Human.jsx:
--------------------------------------------------------------------------------
1 | /*
2 | Auto-generated by: https://github.com/pmndrs/gltfjsx
3 | Command: npx gltfjsx@6.1.4 human.glb
4 | Author: aaron.kalvin (https://sketchfab.com/aaron.kalvin)
5 | License: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
6 | Source: https://sketchfab.com/3d-models/human-03a70758739544b3aa705c13af3872b1
7 | Title: Human
8 | */
9 |
10 | import React, { useRef } from "react";
11 | import { useGLTF } from "@react-three/drei";
12 |
13 | export function Model(props) {
14 | const { nodes, materials } = useGLTF("../3D-Model/human.glb");
15 | return (
16 |
17 |
24 |
25 | );
26 | }
27 |
28 | // useGLTF.preload('/human.glb')
29 |
--------------------------------------------------------------------------------
/client/StichHub/public/3D-Model/ShirtModel-transformed.glb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/public/3D-Model/ShirtModel-transformed.glb
--------------------------------------------------------------------------------
/client/StichHub/public/3D-Model/Womenjacket-transformed.glb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/public/3D-Model/Womenjacket-transformed.glb
--------------------------------------------------------------------------------
/client/StichHub/public/3D-Model/human.glb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/public/3D-Model/human.glb
--------------------------------------------------------------------------------
/client/StichHub/public/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/public/index.js
--------------------------------------------------------------------------------
/client/StichHub/public/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 | https://stichhub.vercel.app/
10 | 2023-06-28T11:20:28+00:00
11 |
12 |
13 | https://stichhub.vercel.app/#ourServices
14 | 2023-06-28T11:20:28+00:00
15 |
16 |
17 | https://stichhub.vercel.app/#howitworks
18 | 2023-06-28T11:20:28+00:00
19 |
20 |
21 | https://stichhub.vercel.app/#aboutus
22 | 2023-06-28T11:20:28+00:00
23 |
24 |
25 | https://stichhub.vercel.app/#contactus
26 | 2023-06-28T11:20:28+00:00
27 |
28 |
29 | https://stichhub.vercel.app/auth
30 | 2023-06-28T11:20:28+00:00
31 |
32 |
33 | https://stichhub.vercel.app/auth/customer
34 | 2023-06-28T11:20:28+00:00
35 |
36 |
37 | https://stichhub.vercel.app/auth/tailor
38 | 2023-06-28T11:20:28+00:00
39 |
40 |
41 | https://stichhub.vercel.app/auth/tailor
42 | 2023-06-28T11:20:28+00:00
43 |
44 |
45 | https://stichhub.vercel.app/auth/tailor
46 | 2023-06-28T11:20:28+00:00
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/client/StichHub/src/App.css:
--------------------------------------------------------------------------------
1 | #root {
2 | max-width: 1280px;
3 | margin: 0 auto;
4 | padding: 2rem;
5 | text-align: center;
6 | }
7 |
8 | .logo {
9 | height: 6em;
10 | padding: 1.5em;
11 | will-change: filter;
12 | transition: filter 300ms;
13 | }
14 | .logo:hover {
15 | filter: drop-shadow(0 0 2em #646cffaa);
16 | }
17 | .logo.react:hover {
18 | filter: drop-shadow(0 0 2em #61dafbaa);
19 | }
20 |
21 | @keyframes logo-spin {
22 | from {
23 | transform: rotate(0deg);
24 | }
25 | to {
26 | transform: rotate(360deg);
27 | }
28 | }
29 |
30 | @media (prefers-reduced-motion: no-preference) {
31 | a:nth-of-type(2) .logo {
32 | animation: logo-spin infinite 20s linear;
33 | }
34 | }
35 |
36 | .card {
37 | padding: 2em;
38 | }
39 |
40 | .read-the-docs {
41 | color: #888;
42 | }
43 |
44 | .react-tel-input{
45 | padding: 5px !important;
46 | padding-left:0px !important ;
47 | }
48 |
49 | .country-list .li{
50 | color: black !important;
51 | }
52 |
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3D-Model/ShirtModel-transformed.glb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3D-Model/ShirtModel-transformed.glb
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3D-Model/Womenjacket-transformed.glb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3D-Model/Womenjacket-transformed.glb
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/3D-View.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/3D-View.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/ArrowBack.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/ArrowBack.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/ArrowNext.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/ArrowNext.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/back1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/back1.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/back2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/back2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/back3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/back3.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar1.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar3.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar4.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/collar5.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff1.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/cuff3.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/index.js:
--------------------------------------------------------------------------------
1 | import View from "./3D-View.webp";
2 | import ArrowBack from "./ArrowBack.webp";
3 | import ArrowNext from "./ArrowNext.webp";
4 | import back1 from "./back1.webp";
5 | import back2 from "./back2.webp";
6 | import back3 from "./back3.webp";
7 | import collar1 from "./collar1.webp";
8 | import collar2 from "./collar2.webp";
9 | import collar3 from "./collar3.webp";
10 | import collar4 from "./collar4.webp"
11 | import collar5 from './collar5.webp'
12 | import cuff1 from "./cuff1.webp";
13 | import cuff2 from "./cuff2.webp";
14 | import cuff3 from "./cuff3.webp";
15 | import sleeve1 from "./sleeve1.webp";
16 | import sleeve2 from "./sleeve2.webp";
17 | import sleeve3 from "./sleeve3.webp";
18 | import zoom from "./zoom.webp";
19 |
20 | export {
21 | View,
22 | ArrowBack,
23 | ArrowNext,
24 | back1,
25 | back2,
26 | back3,
27 | collar1,
28 | collar2,
29 | collar3,
30 | collar4,
31 | collar5,
32 | cuff1,
33 | cuff2,
34 | cuff3,
35 | sleeve1,
36 | sleeve2,
37 | sleeve3,
38 | zoom
39 | };
40 |
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve1.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/sleeve3.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/3dConfigurator/configurator-icons/zoom.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/3dConfigurator/configurator-icons/zoom.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerImg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerImg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Calculator.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Calculator.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Call.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Call.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Enter.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Enter.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Girl with clothes.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Girl with clothes.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Group 1000001620.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Group 1000001620.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/Accuracy.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/Accuracy.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/Choose.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/Choose.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/Durable.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/Durable.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/Highlight.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/Highlight.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/fabric.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/fabric.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Icons/truck.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Icons/truck.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Room - Girl Reading - Copy@3-1707x802 (2).webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Room - Girl Reading - Copy@3-1707x802 (2).webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/Tailor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/Tailor.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/handle.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/handle.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/image 175.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/image 175.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/CustomerLandingPage/provide.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/CustomerLandingPage/provide.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/3D-Demo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/3D-Demo.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/3dConfigurator.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/3dConfigurator.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/AboutUsVector.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/AboutUsVector.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/AvatarDemo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/AvatarDemo.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/AvatarIcon-blue.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/AvatarIcon-blue.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/CartIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/CartIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/ContactUsVector.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/ContactUsVector.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/CreatProfileIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/CreatProfileIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/DemoShirtIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/DemoShirtIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/EmailIcon-blue.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/EmailIcon-blue.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/HomeDelivery.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/HomeDelivery.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/Instagram.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/Instagram.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/Mail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/Mail.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/ModernDress.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/ModernDress.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/OnlineMeasurement.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/OnlineMeasurement.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/PhoneIcon-blue.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/PhoneIcon-blue.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/SendVector.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/SendVector.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/SleevlessShirt.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/SleevlessShirt.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/TakeOrdersIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/TakeOrdersIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/Whatsapp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/Whatsapp.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/Youtube.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/Youtube.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/appoitment.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/appoitment.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/delivery.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/delivery.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/describe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/describe.png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/designIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/designIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/forcustomers.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/forcustomers.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/fortailors.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/fortailors.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/index.js:
--------------------------------------------------------------------------------
1 | import demo3d from "./3D-Demo.webp";
2 | import Configurator3d from "./3dConfigurator.webp";
3 | import AboutUsVector from "./AboutUsVector.webp";
4 | import AvatarDemo from "./AvatarDemo.webp";
5 | import AvatarIcon from "./AvatarIcon-blue.webp";
6 | import CartIcon from "./CartIcon.webp";
7 | import ContactUsVector from "./ContactUsVector.webp";
8 | import CreatProfileIcon from "./CreatProfileIcon.webp";
9 | import DemoShirtIcon from "./DemoShirtIcon.webp";
10 | import SleevlessShirt from "./SleevlessShirt.webp"
11 | import ModernDress from './ModernDress.webp'
12 | import designIcon from "./designIcon.webp";
13 | import EmailIcon from "./EmailIcon-blue.webp";
14 | import forcustomers from "./forcustomers.webp";
15 | import fortailors from "./fortailors.webp";
16 | import HomeDelivery from "./HomeDelivery.webp";
17 | import Instagram from "./Instagram.webp";
18 | import Mail from "./Mail.webp";
19 | import OnlineMeasurement from "./OnlineMeasurement.webp";
20 | import PhoneIcon from "./PhoneIcon-blue.webp";
21 | import SendVector from "./SendVector.webp";
22 | import sweingmachine from "./sweingmachine.webp";
23 | import TakeOrdersIcon from "./TakeOrdersIcon.webp";
24 | import Whatsapp from "./Whatsapp.webp";
25 | import Youtube from "./Youtube.webp";
26 | import Measurement from "./measurement.webp"
27 | import appointment from "./appoitment.webp"
28 | import tailor from "./tailor.webp"
29 | import delivery from "./delivery.webp"
30 | import menu from "./menu.svg"
31 | import close from "./close.svg"
32 | import describe from "./describe.png"
33 |
34 | export {
35 | demo3d,
36 | Configurator3d,
37 | AboutUsVector,
38 | AvatarDemo,
39 | CartIcon,
40 | ContactUsVector,
41 | CreatProfileIcon,
42 | DemoShirtIcon,
43 | designIcon,
44 | EmailIcon,
45 | forcustomers,
46 | fortailors,
47 | HomeDelivery,
48 | Instagram,
49 | Mail,
50 | OnlineMeasurement,
51 | PhoneIcon,
52 | SendVector,
53 | sweingmachine,
54 | TakeOrdersIcon,
55 | Whatsapp,
56 | Youtube,
57 | Measurement,
58 | appointment,
59 | tailor,
60 | delivery,
61 | AvatarIcon,
62 | SleevlessShirt,
63 | ModernDress,
64 | menu,
65 | close,
66 | describe
67 | };
68 |
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/measurement.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/measurement.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/sweingmachine.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/sweingmachine.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/MainLandingPage/Icons/tailor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/MainLandingPage/Icons/tailor.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/Altered.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/Altered.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/Custom.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/Custom.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/gradient_blue.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/gradient_blue.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/index.js:
--------------------------------------------------------------------------------
1 | import MensIcon from "./mens.webp";
2 | import AlteredIcon from "./Altered.webp";
3 | import CustomIcon from "./Custom.webp";
4 | import WomensIcon from "./women.webp";
5 | import OthersIcon from "./others.webp";
6 |
7 | export {
8 | MensIcon,
9 | AlteredIcon,
10 | CustomIcon,
11 | WomensIcon,
12 | OthersIcon
13 | };
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/mens.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/mens.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/ongoingtop-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/ongoingtop-2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/others.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/others.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/TailorDashboard/women.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/TailorDashboard/women.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/Tailorimg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/Tailorimg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/Yadav.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/Yadav.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/decor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/decor.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/googlelogo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/googlelogo.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/hl.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/hl.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/home/7309681.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/home/7309681.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/assets/home/bady-abbas-YZm-WKqxTIU-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/home/bady-abbas-YZm-WKqxTIU-unsplash.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/assets/home/index.js:
--------------------------------------------------------------------------------
1 | import star from "./star.webp"
2 | import yadav from "./yadav.webp"
3 |
4 | export {
5 | star,
6 | yadav
7 | }
--------------------------------------------------------------------------------
/client/StichHub/src/assets/home/star.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/home/star.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/home/yadav.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/home/yadav.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/Cloth_Model.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/Cloth_Model.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/Ongoingtop.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/Ongoingtop.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/captcha_Bg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/captcha_Bg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/el.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/el.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/el2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/el2.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/g5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/g5.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/gr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/gr.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/gr1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/gr1.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/gr3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/gr3.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/gr4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/gr4.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/gr6.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/gr6.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/im.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/im.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/ime.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/ime.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/img.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/img.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/imr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/imr.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/jonathan.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/jonathan.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/n.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/n.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/new.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/new.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/profileverify.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/profileverify.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/se.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/se.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/speciality.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/speciality.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/v.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/v.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/img/verified.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/img/verified.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/index.js
--------------------------------------------------------------------------------
/client/StichHub/src/assets/india.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/india.png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/loginsignup/customerimg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/loginsignup/customerimg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/loginsignup/tailorimg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/loginsignup/tailorimg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/loginsignupbg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/loginsignupbg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Logo (Black BG).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Logo (Black BG).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Logo (White BG).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Logo (White BG).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Logo Transparent (Black).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Logo Transparent (Black).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Logo Transparent (White).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Logo Transparent (White).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Long - Logo Transparent (Black).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Long - Logo Transparent (Black).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Long - Logo Transparent (White).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Long - Logo Transparent (White).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Short-Logo Transparent (Black).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Short-Logo Transparent (Black).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/logo/Short-Logo Transparent (White).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/logo/Short-Logo Transparent (White).png
--------------------------------------------------------------------------------
/client/StichHub/src/assets/man.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/man.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/assets/nc.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/nc.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/registrationbg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/registrationbg.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/sp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/sp.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/sy.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/sy.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Fabric_001_COLOR.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Fabric_001_COLOR.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Fabric_001_DISP.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Fabric_001_DISP.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Fabric_001_NORM.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Fabric_001_NORM.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Fabric_001_OCC.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Fabric_001_OCC.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Fabric_001_ROUGH.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Fabric_001_ROUGH.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/cotton/Material_Cloth1_002.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/cotton/Material_Cloth1_002.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/index.js:
--------------------------------------------------------------------------------
1 | import cotton_normal from "./cotton/Fabric_001_NORM.webp"
2 | import cotton_color from "./cotton/Fabric_001_COLOR.webp"
3 | import cotton_disp from "./cotton/Fabric_001_DISP.webp"
4 | import cotton_rough from "./cotton/Fabric_001_ROUGH.webp"
5 | import cotton_ao from "./cotton/Fabric_001_OCC.webp"
6 | import silk_ao from "./silk/Fabric_Silk_001_ambientOcclusion.webp"
7 | import silk_color from "./silk/Fabric_Silk_001_basecolor.webp"
8 | import silk_height from "./silk/Fabric_Silk_001_height.webp"
9 | import silk_metallic from "./silk/Fabric_Silk_001_metallic.webp"
10 | import silk_normal from "./silk/Fabric_Silk_001_normal.webp"
11 | import silk_rough from "./silk/Fabric_Silk_001_roughness.webp"
12 | import wool_ao from "./wool/Soundproof_Wool_001_ambientOcclusion.webp"
13 | import wool_color from "./wool/Soundproof_Wool_001_basecolor.webp"
14 | import wool_height from "./wool/Soundproof_Wool_001_height.webp"
15 | import wool_normal from "./wool/Soundproof_Wool_001_normal.webp"
16 | import wool_rough from "./wool/Soundproof_Wool_001_roughness.webp"
17 |
18 | export{
19 | cotton_normal,
20 | cotton_color,
21 | cotton_disp,
22 | cotton_rough,
23 | cotton_ao,
24 | silk_ao,
25 | silk_color,
26 | silk_height,
27 | silk_metallic,
28 | silk_normal,
29 | silk_rough,
30 | wool_ao,
31 | wool_color,
32 | wool_height,
33 | wool_normal,
34 | wool_rough,
35 | }
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_ambientOcclusion.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_ambientOcclusion.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_basecolor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_basecolor.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_height.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_height.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_metallic.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_metallic.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_normal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_normal.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_roughness.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Fabric_Silk_001_roughness.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/silk/Material_1556.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/silk/Material_1556.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Material_1255.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Material_1255.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_ambientOcclusion.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_ambientOcclusion.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_basecolor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_basecolor.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_height.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_height.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_normal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_normal.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_roughness.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/textures/wool/Soundproof_Wool_001_roughness.webp
--------------------------------------------------------------------------------
/client/StichHub/src/assets/vk.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/assets/vk.webp
--------------------------------------------------------------------------------
/client/StichHub/src/axios.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | const instance = axios.create({
4 | // baseURL: "https://stichhub-backend.vercel.app/",
5 | baseURL: "http://localhost:5000", //! For using local Development, use this URL to connect to your local server.
6 | });
7 |
8 | instance.interceptors.request.use((req) => {
9 | if (localStorage.getItem("profile")) {
10 | req.headers.Authorization = `Bearer ${
11 | JSON.parse(localStorage.getItem("profile")).token
12 | }`;
13 | } else if (localStorage.getItem("tailorProfile")) {
14 | req.headers.Authorization = `Bearer ${
15 | JSON.parse(localStorage.getItem("tailorProfile")).token
16 | }`;
17 | }
18 |
19 | return req;
20 | });
21 |
22 | export default instance;
23 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/AuthError.jsx:
--------------------------------------------------------------------------------
1 | const AuthErrorMessage = ({message,name})=>{
2 | return
5 | }
6 |
7 | export default AuthErrorMessage;
8 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Cart/PaymentFailure.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Player } from "@lottiefiles/react-lottie-player";
3 | import { Link } from "react-router-dom";
4 |
5 | const PaymentFailure = () => {
6 | return (
7 |
8 |
16 |
17 | Your Payment was Unsuccessfull
18 | Try Again.
19 |
20 |
21 |
22 |
23 | Go to Cart
24 |
25 |
26 |
27 |
28 | )
29 | }
30 |
31 | export default PaymentFailure
--------------------------------------------------------------------------------
/client/StichHub/src/components/Cart/PaymentSuccess.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Player } from "@lottiefiles/react-lottie-player";
3 | import { Link } from "react-router-dom";
4 |
5 | const PaymentSuccess = () => {
6 | return (
7 |
8 |
16 |
17 | ThankYou for Purchase!!
18 | Your Order is Confirmed.
19 |
20 |
21 |
22 |
23 | Next
24 |
25 |
26 |
27 |
28 | );
29 | };
30 |
31 | export default PaymentSuccess;
32 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Configurator/ClothModel/ModelEnvironment.jsx:
--------------------------------------------------------------------------------
1 | import { PresentationControls, OrbitControls } from "@react-three/drei";
2 | import ShirtModel from "../../Configurator/ClothModel/ShirtModel";
3 | import { useCCustomization } from "../../../contexts/Configurator";
4 |
5 | const ModelEnvironment = () => {
6 | const { enabled, shirtPart, part } = useCCustomization();
7 | return (
8 | <>
9 |
16 |
17 |
25 |
26 |
32 |
34 |
35 |
36 |
37 | >
38 | );
39 | };
40 |
41 | export default ModelEnvironment;
42 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Configurator/ControlsMenu/ControlsMenu.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import BottomSection from "./BottomSection";
3 | import OptionSection from "./OptionSection";
4 | import TitleSection from "./TitleSection";
5 |
6 | const ControlsMenu = () => {
7 | return (
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 | );
18 | };
19 |
20 | export default ControlsMenu;
21 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Configurator/Navbar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Navbar = () => {
4 | return
;
5 | };
6 |
7 | export default Navbar;
8 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Configurator/index.js:
--------------------------------------------------------------------------------
1 | import ControlsMenu from "./ControlsMenu/ControlsMenu";
2 | import ClothModel from "./ClothModel/ClothModel";
3 | import Navbar from "./Navbar";
4 |
5 | export{
6 | ControlsMenu,
7 | ClothModel,
8 | Navbar,
9 | }
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/3D-Demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/components/CustomerLandingPage/3D-Demo.png
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Button.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | function Button({ text }) {
4 | return (
5 |
6 | {text}
7 |
8 | );
9 | }
10 |
11 | export default Button;
12 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Cardi.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | function Cardi(props) {
4 | return (
5 |
6 |
7 |
8 | {/* Icon for the feature */}
9 |
10 |
15 |
16 |
17 | {/* Description of the feature */}
18 |
{props.head}
19 | {props.tail}
20 |
21 |
22 |
23 | );
24 | }
25 |
26 | export default Cardi;
27 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/CardiM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | function CardiM(props) {
4 | return (
5 |
6 |
7 |
8 | {/* Icon for the feature */}
9 |
10 |
15 |
16 |
17 | {/* Description of the feature */}
18 |
{props.head}
19 | {props.tail}
20 |
21 |
22 |
23 | );
24 | }
25 |
26 | export default CardiM;
27 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Configurator.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import girlimg from "../../assets/CustomerLandingPage/Girl with clothes.webp";
3 | import Button from "./Button";
4 | import { useNavigate } from "react-router-dom";
5 |
6 | function Configurator() {
7 | const navigate = useNavigate();
8 |
9 | const handleButtonClick = () => {
10 | navigate("/configurator");
11 | };
12 | return (
13 |
14 |
15 | {/* Image of girl */}
16 |
17 |
18 |
19 |
20 | {/* text */}
21 |
22 | 3D Configurator
23 |
24 |
25 | Makes it easy
26 |
27 |
28 | Try on your clothes on a 3D Model , beforehand to know how your piece
29 | will turn out.
30 |
31 |
32 |
33 |
34 | TRY NOW!
35 |
36 |
37 |
38 | );
39 | }
40 |
41 | export default Configurator;
42 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Features.jsx:
--------------------------------------------------------------------------------
1 | import Cardi from "./Cardi";
2 | import React from "react";
3 | import highl from "../../assets/CustomerLandingPage/Icons/Highlight.webp";
4 | import accu from "../../assets/CustomerLandingPage/Icons/Accuracy.webp";
5 | import dura from "../../assets/CustomerLandingPage/Icons/Durable.webp";
6 | import choi from "../../assets/CustomerLandingPage/Icons/Choose.webp";
7 | import Button from "./Button";
8 |
9 | function Features() {
10 | return (
11 |
12 |
13 |
Why prefer stitching?
14 |
15 |
16 | The reason why many people prefer stitching and why you should try
17 | wearing stitched clothes.
18 |
19 |
20 |
21 | {/* Gradient */}
22 |
23 | {/* Gradient End */}
24 |
25 | {/* Div that will contain cards of the features */}
26 |
31 |
37 |
43 |
49 |
50 |
51 | );
52 | }
53 |
54 | export default Features;
55 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/FeaturesM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import highl from "../../assets/CustomerLandingPage/Icons/Highlight.webp";
3 | import accu from "../../assets/CustomerLandingPage/Icons/Accuracy.webp";
4 | import dura from "../../assets/CustomerLandingPage/Icons/Durable.webp";
5 | import choi from "../../assets/CustomerLandingPage/Icons/Choose.webp";
6 |
7 | import Button from "./Button";
8 | import CardiM from "./CardiM";
9 |
10 | function FeaturesM() {
11 | return (
12 |
13 |
14 |
15 | Why prefer
16 |
17 | stitching?
18 | {" "}
19 |
20 |
21 |
22 |
23 | {/* Div that will contain cards of the features */}
24 |
29 |
35 |
36 |
37 |
38 | {/* Div that will contain cards of the features */}
39 |
45 |
51 |
52 |
53 | );
54 | }
55 |
56 | export default FeaturesM;
57 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/GetList.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Button from "./Button";
3 | import img from "../../assets/CustomerLandingPage/Group 1000001620.webp";
4 | import { useNavigate } from "react-router-dom";
5 |
6 |
7 | function GetList({text}) {
8 | const navigate = useNavigate();
9 |
10 | const handleButtonClick = () => {
11 | navigate("/configurator" );
12 | };
13 | return (
14 |
15 | {/* Gradient */}
16 |
17 | {/* Gradient End */}
18 |
19 |
20 | {/* Text Part */}
21 |
22 |
23 | Get Your clothes to fit your Body!
24 |
25 |
26 | Why change yourself when your clothes can change for you? Get a list
27 | of places where you can alter your clothes or if your piece was
28 | ordered by our site get it altered for free.
29 |
30 |
34 | {text = "Get List"}
35 |
36 |
37 |
38 | {/* Image Part */}
39 |
40 |
41 |
45 |
46 |
47 |
48 |
49 | );
50 | }
51 |
52 | export default GetList;
53 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/GetListM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Button from "./Button";
3 | import img from "../../assets/CustomerLandingPage/Group 1000001620.webp";
4 |
5 | function GetListM() {
6 | return (
7 |
8 | {/* Image Part */}
9 |
10 |
14 |
15 |
16 | {/* Text Part */}
17 |
18 |
19 |
20 | Get A list of{" "}
21 |
22 | Alteration
23 | {" "}
24 | stores!
25 |
26 | Why change yourself when your clothes can change for you? Get a list
27 | of places where you can alter your clothes or if your piece was
28 | ordered by our site get it altered for free.
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | }
38 |
39 | export default GetListM;
40 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Nav.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Dropdown } from "rsuite";
3 | import NotificationsIcon from "@mui/icons-material/Notifications";
4 | import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined";
5 | import MenuOpenSharpIcon from "@mui/icons-material/MenuOpenSharp";
6 | function Nav() {
7 | return (
8 |
9 |
10 |
14 |
15 |
16 |
20 | Item1
21 | Item2
22 | Item3
23 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 |
32 | export default Nav;
33 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/Worried.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import image1 from "../../assets/CustomerLandingPage/Room - Girl Reading - Copy@3-1707x802 (2).webp";
3 | import call from "../../assets/CustomerLandingPage/Call.webp";
4 | import provide from "../../assets/CustomerLandingPage/provide.webp";
5 | import Handle from "../../assets/CustomerLandingPage/handle.webp";
6 | function Worried() {
7 | return (
8 |
9 | {/* Section for models in spline (Now using oonly img)*/}
10 |
11 | {/* Gradient */}
12 |
13 | {/* Gradient End */}
14 |
15 |
16 |
17 | Worried about{" "}
18 |
19 |
20 | Measurements?
21 |
22 |
23 |
24 | We Provide different Ways of measurements
25 |
26 |
27 |
28 |
29 | {/* Hexagonal Div */}
30 |
31 | {/*
*/}
32 |
33 | {/* Hexgonal div End */}
34 |
35 |
49 |
50 | );
51 | }
52 |
53 | export default Worried;
54 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/CustomerLandingPage/WorriedM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import image1 from "../../assets/CustomerLandingPage/Room - Girl Reading - Copy@3-1707x802 (2).webp";
3 | import Tailor from "../../assets/CustomerLandingPage/Tailor.webp";
4 | import Calculator from "../../assets/CustomerLandingPage/Calculator.webp";
5 | import Enter from "../../assets/CustomerLandingPage/Enter.webp";
6 |
7 | function WorriedM() {
8 | return (
9 |
10 | {/* Section for models in spline (Now using oonly img)*/}
11 |
12 |
13 |
14 | Worried about
15 |
16 |
17 | Measurements?
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
29 |
30 | Call tailor Home to get Measurements
31 |
32 |
33 |
34 |
35 |
39 |
40 | Calculate Measurements with our Technology
41 |
42 |
43 |
44 |
45 |
49 |
50 | Enter Measurements by Self
51 |
52 |
53 |
54 |
55 | );
56 | }
57 |
58 | export default WorriedM;
59 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/ErrorPage/404ErrorPage.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { NavBar } from '../MainLandingPage';
3 | import { Navbar } from '../Home';
4 |
5 | const ErrorPage = () => {
6 | return (
7 | <>
8 |
9 |
10 |
11 |
12 |
13 |
404
14 |
15 | Sorry we couldn't find the page you're looking for
16 |
17 |
18 |
back to homepage
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | >
27 | );
28 | };
29 |
30 |
31 |
32 |
33 |
34 | export default ErrorPage;
35 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/FabricModel/CardM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Button from "../CustomerLandingPage/Button";
3 |
4 | function CardM(prop) {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 |
{prop.head}
13 | {prop.tail}
14 |
15 |
16 |
17 | Next
18 |
19 |
20 |
21 |
22 | );
23 | }
24 |
25 | export default CardM;
26 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/FabricModel/FabricCard.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 | import Button from "../CustomerLandingPage/Button";
3 | import { useHCustomization } from "../../contexts/Home";
4 | import { useNavigate } from "react-router-dom";
5 |
6 | const FabricCard = (prop) => {
7 | const { orderDetails, setOrderDetails } = useHCustomization();
8 | const navigateTo = useNavigate();
9 | const fabric = prop.head;
10 |
11 | //Order Details
12 | useEffect(() => {
13 | setOrderDetails({ ...orderDetails, fabricMode: fabric });
14 | }, []);
15 |
16 | const handleSubmit = () => {
17 | setOrderDetails({ ...orderDetails, fabricMode: fabric });
18 | navigateTo("/OrderDetails");
19 | };
20 |
21 | return (
22 |
23 |
24 |
25 |
26 |
27 |
28 |
{prop.head}
29 | {prop.tail}
30 |
31 |
32 |
33 | Proceed
34 |
35 |
36 |
37 |
38 | );
39 | };
40 |
41 | export default FabricCard;
42 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/FabricModel/SideMenu.jsx:
--------------------------------------------------------------------------------
1 | import { FaListUl, FaHome, FaInfo, FaStar } from "react-icons/fa";
2 | import { useState } from "react";
3 |
4 | function SideMenu() {
5 | const [isOpen, setIsOpen] = useState(true);
6 |
7 | function toggleMenu() {
8 | setIsOpen(!isOpen);
9 | }
10 | return (
11 |
39 | );
40 | }
41 |
42 | export default SideMenu;
43 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/GoToTop.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from "react";
2 | import styled from "styled-components";
3 | import { FaArrowUp } from "react-icons/fa";
4 |
5 | const GoToTop = () => {
6 | const [isVisible, setIsVisible] = useState(false);
7 |
8 | const goToBtn = () => {
9 | window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
10 | };
11 |
12 | const listenToScroll = () => {
13 | let heightToHidden = 20;
14 | const winScroll =
15 | document.body.scrollTop || document.documentElement.scrollTop;
16 |
17 | if (winScroll > heightToHidden) {
18 | setIsVisible(true);
19 | } else {
20 | setIsVisible(false);
21 | }
22 | };
23 |
24 | useEffect(() => {
25 | window.addEventListener("scroll", listenToScroll);
26 | return () => window.removeEventListener("scroll", listenToScroll);
27 | }, []);
28 |
29 | return (
30 |
31 | {isVisible && (
32 |
33 |
34 |
35 | )}
36 |
37 | );
38 | };
39 | const Wrapper = styled.section`
40 | display: flex;
41 | justify-content: center;
42 | align-items: center;
43 | position: relative;
44 |
45 | .top-btn {
46 | font-size: 2.4rem;
47 | width: 4rem;
48 | height: 4rem;
49 | color: #fff;
50 | background-color: black;
51 | box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 10px 0px;
52 | border-radius: 50%;
53 | position: fixed;
54 | bottom: 3rem;
55 | right: 3rem;
56 | z-index: 999;
57 | display: flex;
58 | justify-content: center;
59 | align-items: center;
60 | cursor: pointer;
61 |
62 | &--icon {
63 | animation: gototop 900ms linear infinite alternate-reverse;
64 | }
65 |
66 | @keyframes gototop {
67 | 0% {
68 | transform: translateY(-0.125rem);
69 | }
70 | 100% {
71 | transform: translateY(0.125rem);
72 | }
73 | }
74 | }
75 |
76 | @media (max-width: 768px) {
77 | .top-btn {
78 | bottom: 2rem;
79 |
80 | right: 2rem;
81 | }
82 | }
83 | `;
84 |
85 | export default GoToTop;
86 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Header.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Header = () => {
4 | return (
5 | Header
6 | )
7 | }
8 |
9 | export default Header
--------------------------------------------------------------------------------
/client/StichHub/src/components/Home/Features.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Link } from "react-router-dom";
3 |
4 | const Features = () => {
5 | return (
6 |
7 |
8 |
Explore Our Features
9 |
10 |
11 |
Check Clothes Category
12 |
13 |
14 | );
15 | };
16 |
17 | export default Features;
18 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Home/index.js:
--------------------------------------------------------------------------------
1 | import Navbar from "./Navbar";
2 | import FilterSection from "./FilterSection";
3 | import TailorList from "./TailorList";
4 | import Category from "./Category";
5 | import Features from "./Features";
6 | import CustomerOrder from "./CustomerOrder";
7 |
8 | export {
9 | Navbar,
10 | FilterSection,
11 | TailorList,
12 | Category,
13 | Features,
14 | CustomerOrder,
15 | }
--------------------------------------------------------------------------------
/client/StichHub/src/components/Loginsignup/Signup.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import regbg from "../../assets/registrationbg.webp";
3 | import Cus from "../../assets/CustomerImg.webp";
4 | import Tail from "../../assets/Tailorimg.webp";
5 | import { Link } from "react-router-dom";
6 |
7 | const Signup = () => {
8 | return (
9 |
10 |
11 |
12 | {/* Title text */}
13 |
14 |
15 | Select Your Choice
16 |
17 |
18 | Thank you for joining us! Glad to have you on board!
19 |
20 |
21 |
22 |
23 | {/* Customer button */}
24 |
25 |
26 |
27 |
28 |
29 |
30 | I am a
31 | Customer {" "}
32 |
33 |
34 |
35 |
36 | {/* Tailor button */}
37 |
38 |
39 |
40 |
41 |
42 |
43 | I am a
44 | Tailor {" "}
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | );
53 | };
54 |
55 | export default Signup;
56 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/About.css:
--------------------------------------------------------------------------------
1 | .hoverContainer {
2 | position: absolute;
3 | top: 0;
4 | left: 0;
5 | width: 100%;
6 | height: 100%;
7 | background-color: rgba(0, 0, 0, 0.6);
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | opacity: 0;
12 | transition: opacity 0.3s ease-in-out;
13 | border-radius: 20%;
14 | }
15 |
16 | .hoverContainer:hover {
17 | opacity: 1;
18 | }
19 |
20 | .githubLink {
21 | color: #fff;
22 | display: flex;
23 | align-items: center;
24 | justify-content: center;
25 | flex-direction: column;
26 | }
27 |
28 |
29 | .hoverAnimation {
30 | transform: translateY(100%);
31 | transition: transform 0.3s ease-in-out;
32 | }
33 |
34 | .hoverContainer:hover .hoverAnimation {
35 | transform: translateY(0);
36 | }
37 |
38 | .country-name{
39 | color: black !important;
40 | }
41 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/FAQs/faqIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/components/MainLandingPage/FAQs/faqIcon.png
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/FAQs/faqIcon.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/components/MainLandingPage/FAQs/faqIcon.webp
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/HowItWorks/HowItWorks.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Customers from "./Customers";
3 | import Tailors from "./Tailors";
4 |
5 | const HowItWorks = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | );
12 | };
13 |
14 | export default HowItWorks;
15 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/Model/DemoModel.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | OrbitControls,
3 | PresentationControls,
4 | Environment,
5 | } from "@react-three/drei";
6 | import Model from "./Model";
7 | import ShirtModel from "../../Configurator/ClothModel/ShirtModel";
8 |
9 | const DemoModel = (props) => {
10 | return (
11 | <>
12 |
19 |
27 |
28 |
34 |
35 |
36 |
37 |
38 |
39 | >
40 | );
41 | };
42 |
43 | export default DemoModel;
44 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/MainLandingPage/index.js:
--------------------------------------------------------------------------------
1 | import About from "./About";
2 | import ContactUs from "./ContactUs";
3 | import Footer from "./Footer";
4 | import Home from "./Home";
5 | import NavBar from "./NavBar";
6 | import OurServices from "./OurServices";
7 | import HowItWorks from "./HowItWorks/HowItWorks";
8 | import FooterHomePage from "./FooterHomePage";
9 |
10 | export {
11 | About,
12 | ContactUs,
13 | Home,
14 | NavBar,
15 | OurServices,
16 | HowItWorks,
17 | Footer,
18 | FooterHomePage,
19 | };
20 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDashboard/mobile/FooterNavigation.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {
3 | Squares2X2Icon,
4 | UserIcon,
5 | Cog6ToothIcon,
6 | CheckCircleIcon,
7 | } from "@heroicons/react/24/solid";
8 | import { Link } from "react-router-dom";
9 |
10 | const FooterNavigation = (props) => {
11 |
12 | const { handleNavigationLinkClick } = props;
13 |
14 | const handleLinkClick = (index) => {
15 | handleNavigationLinkClick(index);
16 | };
17 | return (
18 |
19 |
handleLinkClick(0)}>
20 |
21 |
22 |
23 |
handleLinkClick(1)}>
24 |
25 |
26 |
27 |
handleLinkClick(2)}>
28 |
29 |
30 |
handleLinkClick(3)}>
31 |
32 |
33 |
34 | );
35 | };
36 |
37 | export default FooterNavigation;
38 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDashboard/mobile/Ongoing/MobileOngoingOpen.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const MobileOngoingOpen = () => {
4 | return MobileOngoingOrders
;
5 | };
6 |
7 | export default MobileOngoingOpen;
8 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDashboard/profile.css:
--------------------------------------------------------------------------------
1 | .react-tel-input{
2 | padding: 5px !important;
3 | padding-left:0px !important ;
4 | }
5 |
6 | .country-list .li{
7 | color: black !important;
8 | }
9 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/ProgressM.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FaStar } from "react-icons/fa";
3 |
4 | function ProgressbarM() {
5 | return (
6 |
7 |
8 |
5 {/*Star Level*/}
9 |
10 |
13 |
14 |
15 | );
16 | }
17 |
18 | export default ProgressbarM;
19 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/Progressbar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FaStar } from "react-icons/fa";
3 |
4 | function Progressbar() {
5 | return (
6 |
7 |
8 |
5 {/*Star Level*/}
9 |
10 |
13 |
14 |
15 | );
16 | }
17 |
18 | export default Progressbar;
19 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/StarRate.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { FaStar } from "react-icons/fa";
3 | function StarRate() {
4 | const colors = {
5 | yellow: "#ebeb35",
6 | gray: "#676d67",
7 | };
8 | const stars = Array(5).fill(0);
9 |
10 | const [currentValue, setCurrentValue] = useState(4); // To modify rating value in future
11 |
12 | return (
13 |
14 |
15 |
Reviews
16 | {currentValue}/5.0
17 | Based on 420 reviews {/* Variable to be added */}
18 |
19 |
20 | {stars.map((_, index) => {
21 | return (
22 | index ? colors.yellow : colors.gray}
26 | />
27 | );
28 | })}
29 |
30 |
31 | );
32 | }
33 |
34 | export default StarRate;
35 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/StarRateM.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { FaStar } from "react-icons/fa";
3 | function StarRateM(propsData) {
4 | const colors = {
5 | yellow: "#ebeb35",
6 | gray: "#676d67",
7 | };
8 | const stars = Array(5).fill(0);
9 |
10 | // const [currentValue, setCurrentValue] = useState(
11 | // propsData.propsData.item.rating
12 | // ); // To modify rating value in future
13 |
14 | return (
15 |
16 |
17 |
Reviews
18 | {currentValue}/5.0
19 | Based on 420 reviews {/* Variable to be added */}
20 |
21 |
22 | {stars.map((_, index) => {
23 | return (
24 | index ? colors.yellow : colors.gray}
28 | />
29 | );
30 | })}
31 |
32 |
33 | );
34 | }
35 |
36 | export default StarRateM;
37 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/TailorSum.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | function TailorSum(propsData) {
3 | return (
4 |
5 |
6 |
7 |
11 |
12 |
13 |
14 | );
15 | }
16 |
17 | export default TailorSum;
18 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/Tailorhead.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | function Tailorhead(propsData) {
4 | return (
5 |
6 |
7 |
8 | {propsData.propsData.item.name}
9 |
10 |
11 | {propsData.propsData.item.city}, {propsData.propsData.item.pincode}
12 |
13 |
14 |
15 | {/*
16 |
17 | ₹ {propsData.propsData.item.prizerange[0]} - ₹{" "}
18 | {propsData.propsData.item.prizerange[1]}
19 |
20 |
*/}
21 |
22 | );
23 | }
24 |
25 | export default Tailorhead;
26 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorDetails/man.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/components/TailorDetails/man.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorProfileVerification/EmailVerification.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext, useEffect, useState } from 'react'
2 | import emailImage from "../../assets/img/n.webp"
3 | import VerifiedEmail from "../../assets/img/verified.webp"
4 | import axios from '../../axios.js';
5 | import { useNavigate, useParams } from 'react-router-dom';
6 | import { HomeProvider, useHCustomization } from '../../contexts/Home';
7 | const EmailVerification = () => {
8 | const navigateTo = useNavigate();
9 | const {tailorDetails , setTailorDetails} = useHCustomization()
10 |
11 | const getMySelf = async () => {
12 | try {
13 | const res = await axios.get("/userTailor/getmyself");
14 | const data = res.data
15 | // console.log(res.data.tailorUser)
16 | setTailorDetails( data)
17 | } catch (error) {
18 | data = response.data;
19 | setTailorDetails(data)
20 | }
21 | }
22 |
23 | useEffect(() => {
24 |
25 | getMySelf();
26 | // console.log(tailorDetails)
27 |
28 | },[])
29 | useEffect(() => {
30 |
31 | if(!tailorDetails){
32 | return ;
33 | }
34 | // console.log(tailorDetails)
35 | if(tailorDetails && tailorDetails.tailorUser.isVerified){
36 | navigateTo("/TailorDashboard")
37 | }
38 |
39 | },[tailorDetails])
40 |
41 |
42 |
43 |
44 | return (
45 |
46 |
50 |
54 | {/* If user is verified */}
55 |
56 |
57 |
58 | {/* Congrats {user?.result.name}, */}
59 | Hello Welcome to Email Veifiation
60 |
61 |
62 | We have sent an Email to your Account. Please Verify your Account.
63 |
64 | {/*
65 |
66 | "The intellect always cuts and divides like a pair of scissors.
67 | The heart sews things together and unites like a needle. The
68 | tailor uses both."
69 |
70 | - Mata Amritanandamayi -
71 | */}
72 |
73 |
74 |
75 | );
76 |
77 | }
78 |
79 | export default EmailVerification
--------------------------------------------------------------------------------
/client/StichHub/src/components/TailorProfileVerification/Step6.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 |
4 | // user identification
5 | const user = {
6 | name: "Vishal",
7 | };
8 |
9 | const Step6 = () => {
10 | return (
11 |
12 |
16 |
20 |
21 |
22 |
23 |
24 | Congrats {user.name},
25 |
26 |
27 | Now you are completely registered & verified on our website.
28 |
29 |
30 |
31 | "The intellect always cuts and divides like a pair of scissors.
32 | The heart sews things together and unites like a needle. The
33 | tailor uses both."
34 |
35 | - Mata Amritanandamayi -
36 |
37 |
38 |
39 |
43 | Previous
44 |
45 |
46 | Submit
47 |
48 |
49 |
)
50 | }
51 |
52 | export default Step6;
--------------------------------------------------------------------------------
/client/StichHub/src/components/Testimonial/Testimonial.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Pagination, Autoplay, A11y } from "swiper";
3 | import { Swiper, SwiperSlide } from "swiper/react";
4 | import "swiper/swiper-bundle.min.css";
5 | import TestimonialCard from "./TestimonialCard";
6 | import items from "./Testimonials";
7 |
8 | const Testimonial = () => {
9 | return (
10 |
11 |
12 | Testimonials
13 |
14 |
15 |
40 | {items.map((item, index) => {
41 | return (
42 |
43 |
44 |
45 | );
46 | })}
47 |
48 |
49 | );
50 | };
51 |
52 | export default Testimonial;
53 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Testimonial/TestimonialCard.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const TestimonialCard = ({ testimonial }) => {
4 | return (
5 |
6 |
7 |
12 |
13 |
{testimonial.name}
14 |
15 | {testimonial.category}
16 |
17 |
18 |
19 |
20 |
{testimonial.description}
21 |
22 |
23 | );
24 | };
25 |
26 | export default TestimonialCard;
27 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/Testimonial/Testimonials.jsx:
--------------------------------------------------------------------------------
1 | import icon from "../../assets/img/profileverify.webp";
2 | import vk from "../../assets/vk.webp";
3 | import sp from "../../assets/sp.webp";
4 | import nc from "../../assets/nc.webp";
5 | import sy from "../../assets/sy.webp";
6 | import hl from "../../assets/hl.webp";
7 |
8 | const items = [
9 | {
10 | user_id: 1,
11 | icon: "https://stichhub.vercel.app/assets/man-da1b7afd.jpg",
12 | name: "Yadav",
13 | category: "Customer",
14 | description: "I stumbled upon this stitching website when I needed to get a custom-made dress for a special occasion, and I couldn't be happier with the result."
15 | },
16 | {
17 | user_id: 2,
18 | icon: icon,
19 | name: "Rishi",
20 | category: "Tailor",
21 | description: "As a professional tailor, I have had the opportunity to collaborate with many stitching websites, but this particular website stands out from the rest."
22 | },
23 | {
24 | user_id: 3,
25 | icon: "https://img.icons8.com/?size=512&id=492ILERveW8G&format=png",
26 | name: "Aditya",
27 | category: "Customer",
28 | description: "I have been using this stitching website for all my clothing alterations and tailoring needs, and I couldn't be more satisfied. The platform is user-friendly, allowing me to easily upload measurements and instructions for each garment."
29 | },
30 | {
31 | user_id: 4,
32 | icon: "https://stichhub.vercel.app/assets/man-da1b7afd.jpg",
33 | name: "Rahul",
34 | category: "Tailor",
35 | description: "I have been working as a tailor for several years, and I must say that this stitching website has revolutionized the way I collaborate with customers."
36 | },
37 | {
38 | user_id: 5,
39 | icon: icon,
40 | name: "Kiran",
41 | category: "Customer",
42 | description: "I recently discovered this stitching website, and it has become my go-to place for custom-made clothing. As someone who struggles to find garments that fit well off the rack, this website has been a game-changer for me."
43 | },
44 | {
45 | user_id: 6,
46 | icon: "https://img.icons8.com/?size=512&id=492ILERveW8G&format=png",
47 | name: "Vivek",
48 | category: "Tailor",
49 | description: "As an experienced tailor, I value efficiency and precision in my work, and this stitching website perfectly aligns with those values."
50 | }
51 | ]
52 |
53 | export default items;
54 |
--------------------------------------------------------------------------------
/client/StichHub/src/components/index.js:
--------------------------------------------------------------------------------
1 | import Navbar from "./Navbar"
2 | import Navbardark from "./Navbardark"
3 |
4 | export{
5 | Navbar,
6 | Navbardark
7 | }
--------------------------------------------------------------------------------
/client/StichHub/src/constants/MainLandingPage.js:
--------------------------------------------------------------------------------
1 | import logo from '../assets/logo/Long - Logo Transparent (White).png'
2 | import {
3 | designIcon,
4 | Measurement,
5 | CartIcon,
6 | tailor,
7 | appointment,
8 | menu,
9 | close,
10 | CreatProfileIcon,
11 | TakeOrdersIcon,
12 | HomeDelivery,
13 | delivery,
14 |
15 | } from "../assets/MainLandingPage/Icons";
16 |
17 | const navbar = [
18 | {title: "Home", id:""},
19 | {title: "Our Services", id:"ourServices"},
20 | {title: "How it Works?", id:"howitworks"},
21 | {title: "Testimonial", id:"testimonial"},
22 | {title: "About us", id:"aboutus"},
23 | {title: "Contact us", id:"contactus"}
24 | ];
25 |
26 | const hiwcustomer = [
27 | {step: '1', img: designIcon, title: 'DESIGN YOUR CLOTH', style: "sm:mb-7"},
28 | {step: '2', img: Measurement, title: 'TAKE ONLINE MEASUREMENTS', style: "sm:mb-7"},
29 | {step: '3', img: tailor, title: 'SELECT YOUR FAVOURITE TAILOR', style: "sm:mb-7"},
30 | {step: '4', img: CartIcon, title: 'PLACE YOUR ORDER', style: "sm:mb-7"},
31 | ];
32 |
33 | const hiwtailor = [
34 | {step: '1', img: CreatProfileIcon, title: `CREATE PROFILE`, style: ""},
35 | {step: '2', img: TakeOrdersIcon, title: 'TAKE ORDER', style: ""},
36 | {step: '3', img: tailor, title: 'STITCH CLOTHES', style: ""},
37 | {step: '4', img: delivery, title: 'DELIVER IT', style: ""},
38 | ];
39 |
40 | export {
41 | navbar,
42 | logo,
43 | menu,
44 | hiwcustomer,
45 | hiwtailor,
46 | appointment,
47 | close,
48 | }
49 |
--------------------------------------------------------------------------------
/client/StichHub/src/constants/home.js:
--------------------------------------------------------------------------------
1 | import { star, yadav } from "../assets/home/index.js";
2 |
3 | const nav = [
4 | {
5 | title: "",
6 | id: "",
7 | },
8 | {
9 | title: "",
10 | id: "",
11 | },
12 | {
13 | title: "",
14 | id: "",
15 | },
16 | ];
17 |
18 | const tailorCards = [
19 | {
20 | img: yadav,
21 | name: "Yadav ji",
22 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
23 | tag: ["Blazers"],
24 | rating: "4.5",
25 | location: "Mumbai",
26 | },
27 | {
28 | img: yadav,
29 | name: "Saurabh",
30 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
31 | tag: ["Blazers", "Shirts"],
32 | rating: "5.0",
33 | location: "Mumbai",
34 | },
35 | {
36 | img: yadav,
37 | name: "Harshal",
38 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
39 | tag: [ "Shirts"],
40 | rating: "5.0",
41 | location: "Mumbai",
42 | },
43 | {
44 | img: yadav,
45 | name: "Harshal",
46 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
47 | tag: ["blouse", "Shirts"],
48 | rating: "5.0",
49 | location: "Mumbai",
50 | },
51 | {
52 | img: yadav,
53 | name: "Harshal",
54 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
55 | tag: ["Blazers", "court"],
56 | rating: "5.0",
57 | location: "Mumbai",
58 | },
59 | {
60 | img: yadav,
61 | name: "Naresh",
62 | bio: "A Promfessional darzi of bombai, and skilled at Mens Suits and traditional outfits.",
63 | tag: ["Kurtas", "court"],
64 | rating: "7.0",
65 | location: "Bhandara",
66 | },
67 | ];
68 |
69 | export {
70 | tailorCards,
71 | star
72 | }
73 |
--------------------------------------------------------------------------------
/client/StichHub/src/contants/MainLandingPage.js:
--------------------------------------------------------------------------------
1 | import logo from '../assets/logo/Long - Logo Transparent (White).png'
2 | import {
3 | designIcon,
4 | Measurement,
5 | CartIcon,
6 | tailor,
7 | appointment,
8 | menu,
9 | close,
10 | CreatProfileIcon,
11 | TakeOrdersIcon,
12 | HomeDelivery,
13 | delivery,
14 |
15 | } from "../assets/MainLandingPage/Icons";
16 |
17 | const navbar = [
18 | {title: "Home", id:""},
19 | {title: "Our Services", id:"ourServices"},
20 | {title: "How it Works?", id:"howitworks"},
21 | {title: "About us", id:"aboutus"},
22 | {title: "Contact us", id:"contactus"}
23 | ];
24 |
25 | const hiwcustomer = [
26 | {step: '1', img: designIcon, title: 'DESIGN YOUR CLOTH', style: "sm:mb-7"},
27 | {step: '2', img: Measurement, title: 'TAKE ONLINE MEASUREMENTS', style: ""},
28 | {step: '3', img: tailor, title: 'SELECT YOUR FAVOURITE TAILOR', style: ""},
29 | {step: '4', img: CartIcon, title: 'PLACE YOUR ORDER', style: "sm:mb-7"},
30 | ];
31 |
32 | const hiwtailor = [
33 | {step: '1', img: CreatProfileIcon, title: `CREATE PROFILE`, style: ""},
34 | {step: '2', img: TakeOrdersIcon, title: 'TAKE ORDER', style: ""},
35 | {step: '3', img: tailor, title: 'STITCH CLOTHS', style: ""},
36 | {step: '4', img: delivery, title: 'DELIVER IT', style: ""},
37 | ];
38 |
39 | export {
40 | navbar,
41 | logo,
42 | menu,
43 | hiwcustomer,
44 | hiwtailor,
45 | appointment,
46 | close,
47 | }
--------------------------------------------------------------------------------
/client/StichHub/src/contexts/Configurator.jsx:
--------------------------------------------------------------------------------
1 | import { createContext, useContext, useState } from "react";
2 | import { fabrics, shirtPart, clothColor } from "../constants/configurator";
3 |
4 | const ConfiguratorContext = createContext({});
5 |
6 | export const ConfiguratorProvider = (props) => {
7 | const [enabled, setEnabled] = useState(false);
8 | const [resetzoom, setZoom] = useState(true);
9 | const [selected, setSelected] = useState(fabrics[0]);
10 | const [selectedColor, setSelectedColor] = useState(clothColor[0]);
11 | const [part, setPart] = useState(0);
12 | const [sleeveType, setSleeveType] = useState(shirtPart[0].types[0]);
13 | const [collarType, setCollarType] = useState(shirtPart[1].types[0]);
14 | const [backType, setBackType] = useState(shirtPart[2].types[0]);
15 | const [cuffType, setCuffType] = useState(shirtPart[3].types[0]);
16 | const [env, setEnv] = useState(false);
17 |
18 | const nextPart = () => {
19 | if (part + 1 === shirtPart.length - 1 && sleeveType.typeName === "Sleeve 1")
20 | setPart(part + 1);
21 |
22 | if (part + 1 < shirtPart.length - 1) setPart(part + 1);
23 | };
24 |
25 | const prevPart = () => {
26 | if (part - 1 >= 0) setPart(part - 1);
27 | };
28 |
29 | const resetZoom = () => {
30 | setZoom(!resetzoom);
31 | shirtPart[part].zoom = resetzoom;
32 | if (!resetzoom && part === 1) {
33 | shirtPart[part].pos = [0, -1.26, 0];
34 | } else if (!resetzoom && part === 3) {
35 | shirtPart[part].pos = [0, -1.26, 0];
36 | shirtPart[part].rot = [0, 3.1, 0];
37 | } else if (resetzoom && part == 1) {
38 | shirtPart[part].pos = [0, -0.17, 3.5];
39 | } else if (resetzoom && part == 3) {
40 | shirtPart[part].pos = [0.25, 0.25, 3];
41 | shirtPart[part].rot = [0, 3.6, 0];
42 | }
43 | };
44 |
45 | return (
46 |
76 | {props.children}
77 |
78 | );
79 | };
80 |
81 | export const useCCustomization = () => {
82 | const context = useContext(ConfiguratorContext);
83 | return context;
84 | };
85 |
--------------------------------------------------------------------------------
/client/StichHub/src/contexts/Home.jsx:
--------------------------------------------------------------------------------
1 | import { createContext, useContext, useState } from "react";
2 |
3 | const HomeContext = createContext({});
4 |
5 | const orderData = {
6 | tailorId: "",
7 | category: "",
8 | clothDetails: {
9 | sleeve: "",
10 | collar: "",
11 | backDetails: "",
12 | cuffs: "",
13 | color: "",
14 | fabric: "",
15 | },
16 | measurements: {
17 | height: "",
18 | weight: "",
19 | shoeSize: "",
20 | age: "",
21 | gender: "",
22 | neckSize: "",
23 | chestSize: "",
24 | shoulderSize: "",
25 | waistSize: "",
26 | armLength: "",
27 | inseam: "",
28 | },
29 | fabricMode: "",
30 | };
31 |
32 |
33 |
34 | export const HomeProvider = (props) => {
35 | const [orderDetails, setOrderDetails] = useState(orderData);
36 | const [tailorDetails , setTailorDetails] =useState({
37 | status : "",
38 | message : "",
39 | tailorUser : {}
40 | });
41 | return (
42 |
50 | {props.children}
51 |
52 | );
53 | };
54 |
55 | export const useHCustomization = () => {
56 | const context = useContext(HomeContext);
57 | return context;
58 | };
59 |
--------------------------------------------------------------------------------
/client/StichHub/src/contexts/LandingPageDemo.jsx:
--------------------------------------------------------------------------------
1 | import { createContext, useContext, useState } from "react";
2 |
3 | import { DemoShirtIcon, SleevlessShirt, ModernDress } from "../assets/MainLandingPage/Icons";
4 |
5 | const demoButtons = [
6 | {
7 | img: DemoShirtIcon,
8 | text: "With Sleeve",
9 |
10 | style: "w-[35px] sm:w-[50px] lg:ml-4",
11 | alt: "Demo Shirt Icon"
12 |
13 | },
14 | {
15 | img: SleevlessShirt,
16 | text: "Sleeve-Less",
17 |
18 | style: "sm:w-[52px] w-[37px] lg:ml-4",
19 | alt: "Sleeveless Shirt Icon"
20 |
21 | },
22 | {
23 | img: ModernDress,
24 | text: "Modern Dress",
25 |
26 | style: "sm:w-[59px] w-[37px] lg:ml-4",
27 | alt: "Modern Dress Icon"
28 |
29 | },
30 | ];
31 |
32 | const DemoContext = createContext({});
33 |
34 | export const LandingPageDemo = (props) => {
35 | const [demoButton, setDemoButton] = useState(demoButtons[0]);
36 |
37 | return (
38 |
45 | {props.children}
46 |
47 | );
48 | };
49 |
50 | export const useCustomization = () => {
51 | const context = useContext(DemoContext);
52 | return context;
53 | };
54 |
--------------------------------------------------------------------------------
/client/StichHub/src/index.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100&family=Quicksand:wght@300;400;500;600;700&display=swap');
2 |
3 | *{
4 | font-family: "Quicksand","sans-serif",
5 | }
6 |
7 | @tailwind base;
8 | @tailwind components;
9 | @tailwind utilities;
10 |
11 | ::-webkit-scrollbar {
12 | width: 7px;
13 | height: 5px;
14 | display: block;
15 | }
16 |
17 | #ourServices, #howitworks, #aboutus, #contactus {
18 | padding-top: 4rem;
19 | }
20 |
21 | ::-webkit-scrollbar-track {
22 | border-radius: 0px;
23 | }
24 |
25 | .configurator::-webkit-scrollbar-track {
26 | background: #fff;
27 | border-radius: 0px;
28 | }
29 |
30 | ::-webkit-scrollbar-thumb {
31 | background-color: rgb(0, 3, 130);
32 | border-radius: 20px;
33 | border: 3px solid rgb(0, 3, 130);
34 | }
35 |
36 | .configurator::-webkit-scrollbar-thumb {
37 | background-color: rgb(165 180 252);
38 | border-radius: 20px;
39 | border: 3px solid rgb(165 180 252);
40 | }
41 |
42 | .filter::-webkit-scrollbar-track {
43 | background: transparent;
44 | border-radius: 0px;
45 | }
46 |
47 | .filter::-webkit-scrollbar-thumb {
48 | background-color: aquamarine;
49 | border-radius: 20px;
50 | border: 3px solid aquamarine;
51 | }
52 |
53 | .modelGradient {
54 | background: linear-gradient(
55 | 180deg,
56 | rgba(188, 165, 255, 0.4) 0%,
57 | #214d76 100%
58 | );
59 | border: 1px solid #000000;
60 | filter: blur(61.5px);
61 | }
62 |
63 | .circleGradient-peach {
64 | background: radial-gradient(
65 | 50% 50% at 50% 50%,
66 | rgba(183, 136, 136, 0.35) 0%,
67 | rgba(217, 217, 217, 0) 100%
68 | );
69 | }
70 |
71 | .circleGradient-blue {
72 | background: radial-gradient(
73 | 50% 50% at 50% 50%,
74 | rgba(0, 194, 255, 0.6) 0%,
75 | rgba(217, 217, 217, 0) 100%
76 | );
77 | }
78 |
79 | .circleGradient-white {
80 | background: #ffffff;
81 | filter: blur(225px);
82 | transform: rotate(32.28deg);
83 | }
84 |
85 | .cardGradient {
86 | background: linear-gradient(
87 | 144.39deg,
88 | #ffffff -278.56%,
89 | #6d6d6d -78.47%,
90 | #11101d 91.61%,
91 | #11101d 100.61%
92 | );
93 | box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
94 | backdrop-filter: blur(2px);
95 | }
96 |
97 | span.text-left.lg\:text-left.lg\:text-6xl.font-semibold {
98 | margin: auto !important;
99 | text-align: center !important;
100 | }
101 |
--------------------------------------------------------------------------------
/client/StichHub/src/loading_style.css:
--------------------------------------------------------------------------------
1 | body{
2 | margin: 0px;
3 | background-color: #130F26;
4 | }
5 | .content-wrapper{
6 | position: absolute;
7 | top: 50%;
8 | left: 50%;
9 | transform: translate(-50%, -50%);
10 | padding: 10px;
11 | }
12 |
--------------------------------------------------------------------------------
/client/StichHub/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App'
4 | import { BrowserRouter } from 'react-router-dom'
5 | import './index.css'
6 | import { HomeProvider } from './contexts/Home'
7 |
8 | ReactDOM.createRoot(document.getElementById('root')).render(
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | ,
17 | )
18 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/Appointment.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | function Appointment() {
4 | return appointment
;
5 | }
6 |
7 | export default Appointment;
8 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/FabricSelection.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const FabricSelection = () => {
4 | return FabricSelection
;
5 | };
6 |
7 | export default FabricSelection;
8 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/Home.jsx:
--------------------------------------------------------------------------------
1 | import {React, useState} from "react";
2 | import { Navbar, FilterSection, TailorList, Features, CustomerOrder } from "../components/Home/index.js";
3 | import Footer from "../components/MainLandingPage/Footer.jsx";
4 |
5 | const Home = () => {
6 | const [filter, setFilter] = useState({category: false, price: false, rating:false});
7 | const clearFilter = () => {
8 | setFilter({category: false, price: false, rating:false})
9 | };
10 | const handleChange = (e)=>{
11 | const {name, value} = e.target;
12 | setFilter((prev)=>{
13 | return {...prev, [name]: value}
14 | })
15 | }
16 |
17 | return (
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default Home;
29 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/HomeOnlineVisit.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import YourOrders from '../components/Cart/YourOrders'
3 | import GoToTop from '../components/GoToTop'
4 |
5 | const HomeOnlineVisit = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | )
12 | }
13 |
14 | export default HomeOnlineVisit
--------------------------------------------------------------------------------
/client/StichHub/src/pages/LoginSignUp.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Signup from "../components/Loginsignup/Signup";
3 | import { Routes, Route } from "react-router-dom";
4 | import AuthCustomer from "../components/Loginsignup/CustomerAuth";
5 | import AuthTailor from "../components/Loginsignup/AuthTailor";
6 |
7 | const LoginSignUp = () => {
8 | return ;
9 | };
10 | export default LoginSignUp;
11 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/MainLandingPage.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import {
3 | NavBar,
4 | About,
5 | ContactUs,
6 | Home,
7 | OurServices,
8 | HowItWorks,
9 | Footer,
10 | FooterHomePage
11 | } from "../components/MainLandingPage";
12 | import FAQ from "../components/MainLandingPage/FAQs/faq";
13 | import Testimonial from "../components/Testimonial/Testimonial";
14 | import { LandingPageDemo } from "../contexts/LandingPageDemo";
15 | import GoToTop from "../components/GoToTop";
16 |
17 |
18 |
19 | const MainLandingPage = () => {
20 |
21 |
22 | return (
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {/*
© Stichhub {new Date().getFullYear()}
*/}
37 |
38 | );
39 | };
40 |
41 | export default MainLandingPage;
42 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/ThreeDConfigurator.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { ControlsMenu, ClothModel, Navbar } from "../components/Configurator";
3 | import {
4 | ConfiguratorProvider,
5 | useCCustomization,
6 | } from "../contexts/Configurator";
7 |
8 | const ThreeDConfigurator = () => {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | );
18 | };
19 |
20 | export default ThreeDConfigurator;
21 |
--------------------------------------------------------------------------------
/client/StichHub/src/pages/index.js:
--------------------------------------------------------------------------------
1 | import {lazy} from 'react'
2 |
3 | const Cart=lazy(()=>import("./Cart"))
4 | const ClothesCategory=lazy(()=>import("./ClothesCategory"))
5 | const CustomerLandingPage=lazy(()=>import("./CustomerLandingPage"))
6 | const FabricModel=lazy(()=>import("./FabricModel"))
7 | const FabricSelection=lazy(()=>import("./FabricSelection"))
8 | const HomeOnlineVisit=lazy(()=>import("./HomeOnlineVisit"))
9 | const LoginSignUp=lazy(()=>import("./LoginSignUp"))
10 | const MainLandingPage=lazy(()=>import("./MainLandingPage"))
11 | const TailorDashboard=lazy(()=>import("./TailorDashboard"))
12 | const TailorDetails=lazy(()=>import("./TailorDetails"))
13 | const Home=lazy(()=>import("./Home"))
14 | const TailorProfileVerification=lazy(()=>import("./TailorProfileVerification"))
15 | const ThreeDConfigurator=lazy(()=>import("./ThreeDConfigurator"))
16 | const ThreeDMeasurement=lazy(()=>import("./ThreeDMeasurement"))
17 |
18 | export {
19 | Cart,
20 | ClothesCategory,
21 | CustomerLandingPage,
22 | FabricModel,
23 | FabricSelection,
24 | HomeOnlineVisit,
25 | LoginSignUp,
26 | MainLandingPage,
27 | TailorDashboard,
28 | TailorDetails,
29 | Home,
30 | TailorProfileVerification,
31 | ThreeDConfigurator,
32 | ThreeDMeasurement,
33 | };
34 |
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Fabric_001_COLOR.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Fabric_001_COLOR.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Fabric_001_DISP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Fabric_001_DISP.png
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Fabric_001_NORM.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Fabric_001_NORM.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Fabric_001_OCC.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Fabric_001_OCC.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Fabric_001_ROUGH.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Fabric_001_ROUGH.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/cotton/Material_Cloth1_002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/cotton/Material_Cloth1_002.png
--------------------------------------------------------------------------------
/client/StichHub/src/textures/index.js:
--------------------------------------------------------------------------------
1 | import cotton_normal from "./cotton/Fabric_001_NORM.webp"
2 | import cotton_color from "./cotton/Fabric_001_COLOR.webp"
3 | import cotton_disp from "./cotton/Fabric_001_DISP.webp"
4 | import cotton_rough from "./cotton/Fabric_001_ROUGH.webp"
5 | import cotton_ao from "./cotton/Fabric_001_OCC.webp"
6 | import silk_ao from "./silk/Fabric_Silk_001_ambientOcclusion.webp"
7 | import silk_color from "./silk/Fabric_Silk_001_basecolor.webp"
8 | import silk_height from "./silk/Fabric_Silk_001_height.webp"
9 | import silk_metallic from "./silk/Fabric_Silk_001_metallic.webp"
10 | import silk_normal from "./silk/Fabric_Silk_001_normal.webp"
11 | import silk_rough from "./silk/Fabric_Silk_001_roughness.webp"
12 | import wool_ao from "./wool/Soundproof_Wool_001_ambientOcclusion.webp"
13 | import wool_color from "./wool/Soundproof_Wool_001_basecolor.webp"
14 | import wool_height from "./wool/Soundproof_Wool_001_height.webp"
15 | import wool_normal from "./wool/Soundproof_Wool_001_normal.webp"
16 | import wool_rough from "./wool/Soundproof_Wool_001_roughness.webp"
17 |
18 | export{
19 | cotton_normal,
20 | cotton_color,
21 | cotton_disp,
22 | cotton_rough,
23 | cotton_ao,
24 | silk_ao,
25 | silk_color,
26 | silk_height,
27 | silk_metallic,
28 | silk_normal,
29 | silk_rough,
30 | wool_ao,
31 | wool_color,
32 | wool_height,
33 | wool_normal,
34 | wool_rough,
35 | }
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_ambientOcclusion.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_ambientOcclusion.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_basecolor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_basecolor.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_height.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_height.png
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_metallic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_metallic.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_normal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_normal.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Fabric_Silk_001_roughness.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Fabric_Silk_001_roughness.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/silk/Material_1556.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/silk/Material_1556.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Material_1255.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Material_1255.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Soundproof_Wool_001_ambientOcclusion.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Soundproof_Wool_001_ambientOcclusion.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Soundproof_Wool_001_basecolor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Soundproof_Wool_001_basecolor.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Soundproof_Wool_001_height.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Soundproof_Wool_001_height.png
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Soundproof_Wool_001_normal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Soundproof_Wool_001_normal.jpg
--------------------------------------------------------------------------------
/client/StichHub/src/textures/wool/Soundproof_Wool_001_roughness.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/client/StichHub/src/textures/wool/Soundproof_Wool_001_roughness.jpg
--------------------------------------------------------------------------------
/client/StichHub/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
5 | theme: {
6 | extend: {
7 | colors: {
8 | primary: "#130F26",
9 | white: "#ffffff",
10 | grey: "#6D6D6D",
11 | dark_grey: "#0A0910",
12 | left_nav_blue_light: "#BEF3F5",
13 | left_nav_blue: "#33BBCF",
14 | left_nav_icon_orange: "#FDCF6F"
15 | },
16 | screens: {
17 | '3xl': '2560px',
18 | },
19 | boxShadow :{
20 | '3xl' : ' 0px 5px 15px rgba(0, 0, 0, 0.35)'
21 | },
22 | },
23 | },
24 | plugins: [],
25 | };
26 |
--------------------------------------------------------------------------------
/client/StichHub/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "routes": [{ "src": "/[^.]+", "dest": "/", "status": 200 }]
3 | }
--------------------------------------------------------------------------------
/client/StichHub/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | server:{
8 | host:'0.0.0.0',
9 | port:5173,
10 | }
11 | })
12 |
--------------------------------------------------------------------------------
/deployment-client.yml:
--------------------------------------------------------------------------------
1 |
2 | apiVersion: apps/v1
3 | kind: Deployment
4 | metadata:
5 | name: stichub-client
6 | labels:
7 | app: client
8 | spec:
9 | replicas: 2
10 | selector:
11 | matchLabels:
12 | app: client
13 | template:
14 | metadata:
15 | labels:
16 | app: client
17 | spec:
18 | containers:
19 | - name: client
20 | image: nareshchandanbatve/stichhub:client
21 | imagePullPolicy: IfNotPresent
22 | ports:
23 | - containerPort: 5173
24 |
--------------------------------------------------------------------------------
/deployment-server.yml:
--------------------------------------------------------------------------------
1 |
2 | apiVersion: apps/v1
3 | kind: Deployment
4 | metadata:
5 | name: stichub-server
6 | labels:
7 | app: server
8 | spec:
9 | replicas: 2
10 | selector:
11 | matchLabels:
12 | app: server
13 | template:
14 | metadata:
15 | labels:
16 | app: server
17 | spec:
18 | containers:
19 | - name: server
20 | image: nareshchandanbatve/stichhub:server
21 | imagePullPolicy: IfNotPresent
22 | envFrom:
23 | - secretRef:
24 | name: my-secret
25 | ports:
26 | - containerPort: 5000
27 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2'
2 | services:
3 | client:
4 | build: ./client/StichHub
5 | image: nareshchandanbatve/stichhub:client
6 | ports:
7 | - "5173:5173"
8 | env_file:
9 | - .env.client
10 | server:
11 | build: ./server
12 | image: nareshchandanbatve/stichhub:server
13 | ports:
14 | - "5000:5000"
15 | env_file:
16 | - .env.server
--------------------------------------------------------------------------------
/server/.dockerignore:
--------------------------------------------------------------------------------
1 | .git
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | .env
15 |
--------------------------------------------------------------------------------
/server/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.env
3 | dist/
4 |
--------------------------------------------------------------------------------
/server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:16
2 |
3 | WORKDIR /server
4 |
5 | COPY package*.json .
6 |
7 | RUN npm install
8 |
9 | COPY . .
10 |
11 | EXPOSE 5000
12 |
13 | CMD ["npm", "run", "server"]
14 |
15 |
--------------------------------------------------------------------------------
/server/controllers/cart.js:
--------------------------------------------------------------------------------
1 | import * as dotenv from "dotenv";
2 | dotenv.config();
3 | import express from "express";
4 | import mongoose from "mongoose";
5 |
6 | const router = express.Router();
7 |
8 | import CartList from "../models/cart.js";
9 | import OrderList from "../models/order.js";
10 |
11 | export const addOrder = async (req, res) => {
12 | try {
13 | const customerId = req.userId;
14 | const orderData = req.body;
15 |
16 | const cart = await CartList.findOne({ customerId });
17 |
18 | if (!cart) {
19 | const newCart = new CartList({
20 | customerId,
21 | orders: [orderData],
22 | });
23 | await newCart.save();
24 | } else {
25 | cart.orders.push(orderData);
26 | await cart.save();
27 | }
28 |
29 | const { orderId, tailorId } = req.params;
30 |
31 | const order = await OrderList.findOne({ tailorId: tailorId });
32 |
33 | const requests = order.requests.id(orderId);
34 |
35 | requests.order = true;
36 | await order.save();
37 |
38 | res.status(201).json({ message: "Order added to cart successfully" });
39 | } catch (err) {
40 | console.error(err);
41 | res.status(500).json({ message: err.message });
42 | }
43 | };
44 |
45 | export const getCartList = async (req, res) => {
46 | try {
47 | const cart = await CartList.find({customerId: req.userId});
48 |
49 | res.status(200).json(cart);
50 |
51 | } catch (error) {
52 | res.status(404).json({ message: error.message });
53 | }
54 | }
55 |
56 | export default router;
57 |
--------------------------------------------------------------------------------
/server/controllers/forgotpassword.js:
--------------------------------------------------------------------------------
1 | import * as dotenv from "dotenv";
2 | dotenv.config();
3 |
4 | import userCustomerModel from "../models/userCustomer.js";
5 | import userTailorModel from "../models/userTailor.js";
6 |
7 |
8 | export const forgotpassword = async (req, res) => {
9 | const { email, model } = req.body;
10 |
11 | try {
12 | const oldUser = (model==="customer")?await userCustomerModel.findOne({ email }):await userTailorModel.findOne({ email });
13 |
14 | if (!oldUser)
15 | return res.status(404).json({ message: "User doesn't exist" });
16 |
17 | res.status(200).json({ result: oldUser});
18 | } catch (error) {
19 | res.status(500).json({ message: "Something went wrong" });
20 | console.error(error);
21 | }
22 | };
23 |
--------------------------------------------------------------------------------
/server/controllers/order.js:
--------------------------------------------------------------------------------
1 | import * as dotenv from "dotenv";
2 | dotenv.config();
3 | import express from "express";
4 | import mongoose from "mongoose";
5 |
6 | const router = express.Router();
7 |
8 | import OrderList from "../models/order.js";
9 |
10 | export const addOrder = async (req, res) => {
11 | const order = req.body;
12 | try {
13 | const isTailor = await OrderList.find({ tailorId: order.tailorId });
14 |
15 |
16 | if (isTailor.length > 0) {
17 | await OrderList.updateOne(
18 | { _id: isTailor[0]._id },
19 | {
20 | $push: {
21 | requests: {
22 | customerId: req.userId,
23 | orderData: order,
24 | status: "pending",
25 | },
26 | },
27 | }
28 | );
29 | res.status(201).json({ message: "Success!! Request saved" });
30 | } else {
31 | const newOrder = new OrderList({
32 | tailorId: order.tailorId,
33 | requests: {
34 | customerId: req.userId,
35 | orderData: order,
36 | status: "pending",
37 | },
38 | createdAt: new Date().toISOString(),
39 | });
40 | await newOrder.save();
41 | res.status(201).json({ message: "Success!! Request saved" });
42 | }
43 | } catch (error) {
44 | res.status(409).json({ error: error.message });
45 | console.error(error);
46 | }
47 | };
48 |
49 | export const getOrders = async (req, res) => {
50 | const tailorId = req.userId;
51 |
52 | try {
53 | const orders = await OrderList.find({ tailorId: tailorId });
54 | res.status(200).json(orders);
55 | } catch (error) {
56 | res.status(404).json({ message: error.message });
57 | }
58 | };
59 |
60 | export const getOrdersCustomers = async (req, res) => {
61 | const customerId = req.userId;
62 |
63 | try {
64 | const orders = await OrderList.find({ "requests.customerId": customerId });
65 | res.status(200).json(orders);
66 | } catch (error) {
67 | res.status(404).json({ message: error.message });
68 | }
69 | };
70 |
71 | export const updateStatus = async (req, res) => {
72 | try {
73 | const { orderId, requestId } = req.params;
74 | const { status } = req.body;
75 |
76 | const order = await OrderList.findById(orderId);
77 | const request = order.requests.id(requestId);
78 |
79 | request.status = status;
80 |
81 | await order.save();
82 |
83 | res.status(200).send({ message: "Order status updated successfully" });
84 | } catch (err) {
85 | console.error(err);
86 | res.status(500).send({ message: "Failed to update order status" });
87 | }
88 | };
89 |
90 | export default router;
91 |
--------------------------------------------------------------------------------
/server/controllers/test.js:
--------------------------------------------------------------------------------
1 | import express from 'express';
2 |
3 | const router = express.Router();
4 |
5 | export const getTest = (req, res) => {
6 | res.send("Server Connect");
7 | };
8 |
9 | export default router
--------------------------------------------------------------------------------
/server/index.js:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import bodyParser from "body-parser";
3 | import mongoose from "mongoose";
4 | import cors from "cors";
5 | import * as dotenv from "dotenv";
6 | dotenv.config();
7 |
8 | import test from "./routes/test.js";
9 | import userTailorRouter from "./routes/userTailor.js";
10 | import userCustomerRouter from "./routes/userCustomer.js";
11 | import tailorsDetails from "./routes/tailorsDetails.js";
12 | import orders from "./routes/orders.js";
13 | import cart from "./routes/cart.js";
14 | import payment from "./routes/payment.js";
15 | import { forgotpassword } from './controllers/forgotpassword.js';
16 |
17 |
18 | const app = express();
19 |
20 | app.use(bodyParser.json({ limit: "30mb", extended: true }));
21 | app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }));
22 | app.use(cors());
23 |
24 | app.get("/", (req, res) => {
25 | res.send("Welcome to StichHub Server!");
26 | });
27 | app.use("/test", test);
28 | app.use("/userTailor", userTailorRouter);
29 | app.use("/userCustomer", userCustomerRouter);
30 | app.use("/tailors", tailorsDetails);
31 | app.use("/order", orders);
32 | app.use("/cart", cart);
33 | app.use("/payment", payment);
34 | app.use("/forgotpassword", forgotpassword);
35 |
36 | const CONNECTION_URL = process.env.MONGO_URL;
37 | const PORT = process.env.PORT || 5000;
38 |
39 | mongoose
40 | .connect(CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true })
41 | .then(() =>
42 | app.listen(PORT, () => console.log(`Server running on PORT: ${PORT}`))
43 | )
44 | .catch((error) => console.log(error.message));
45 |
--------------------------------------------------------------------------------
/server/middlewares/authCustomer.js:
--------------------------------------------------------------------------------
1 | import jwt from "jsonwebtoken";
2 | import * as dotenv from "dotenv";
3 | dotenv.config();
4 |
5 | const SECRET = process.env.CUSTOMER_USER;
6 |
7 |
8 | const authCustomer = async (req, res, next) => {
9 | try {
10 | const token = req.headers.authorization.split(" ")[1];
11 | const isCustomAuth = token.length < 500;
12 |
13 | let decodedData;
14 |
15 | if (token && isCustomAuth) {
16 | decodedData = jwt.verify(token, SECRET);
17 | req.userId = decodedData?.id;
18 | } else {
19 | decodedData = jwt.decode(token);
20 | req.userId = decodedData?.sub;
21 | }
22 |
23 | next();
24 | } catch (error) {
25 | res.status(401).json({
26 | success: false,
27 | message: "Not a Authorize User. Please Sign In",
28 | type:"JWT Error"
29 | });
30 | console.error(error);
31 | }
32 | };
33 |
34 | export default authCustomer;
35 |
--------------------------------------------------------------------------------
/server/middlewares/authTailor.js:
--------------------------------------------------------------------------------
1 | import jwt from "jsonwebtoken";
2 | import * as dotenv from "dotenv";
3 | import userTailorModel from "../models/userTailor.js";
4 | dotenv.config();
5 |
6 | const SECRET = process.env.TAILOR_USER;
7 |
8 | const authTailor = async (req, res, next) => {
9 | // Implementation Athorization using Bearer Token
10 | let token;
11 | if (
12 | req.headers.authorization &&
13 | req.headers.authorization.startsWith("Bearer")
14 | ) {
15 | try {
16 | token = req.headers.authorization.split(" ")[1];
17 |
18 | //decodes token id
19 | const decoded = jwt.verify(token, SECRET);
20 |
21 | req.userId = await userTailorModel
22 | .findById(decoded.id)
23 | .select("-password");
24 |
25 |
26 | next();
27 | } catch (error) {
28 | res.status(401).json({
29 | success: false,
30 | message: "Not a Authorize User. Please Sign In",
31 | type: "JWT Error"
32 | });
33 | // throw new Error("Not authorized, token failed");
34 | }
35 |
36 | }
37 | };
38 |
39 | export default authTailor;
40 |
--------------------------------------------------------------------------------
/server/middlewares/generateToken.js:
--------------------------------------------------------------------------------
1 | import jwt from "jsonwebtoken";
2 | import base64url from "base64url";
3 | import * as dotenv from "dotenv";
4 | dotenv.config();
5 |
6 | // for reuseability made this function in seperate file
7 | const generateToken = (result, SECRET, tokenValidity = "1h") => {
8 | return jwt.sign({ email: result.email, id: result._id }, SECRET, {
9 | expiresIn: tokenValidity,
10 | });
11 | };
12 |
13 | export default generateToken;
14 |
--------------------------------------------------------------------------------
/server/middlewares/sendEmail.js:
--------------------------------------------------------------------------------
1 | import nodemailer from "nodemailer";
2 |
3 | const SMPT_HOST = process.env.SMPT_HOST;
4 | const SMPT_PORT = process.env.SMPT_PORT;
5 | const SMPT_SERVICES = process.env.SMPT_SERVICES;
6 | const SMPT_MAIL = process.env.SMPT_MAIL;
7 | const SMPT_PASSWORD = process.env.SMPT_PASSWORD;
8 |
9 | const sendEmail = async (options) => {
10 | const transporter = nodemailer.createTransport({
11 | host: SMPT_HOST,
12 | port: SMPT_PORT,
13 | services: SMPT_SERVICES,
14 | auth: {
15 | user: SMPT_MAIL,
16 | pass: SMPT_PASSWORD,
17 | },
18 | });
19 |
20 | const mailOptions = {
21 | from: SMPT_MAIL,
22 | to: options.email,
23 | subject: options.subject,
24 | html: options.message_Content,
25 | };
26 |
27 | const mailInfo = await transporter.sendMail(mailOptions);
28 |
29 | // console.log(mailInfo);
30 | };
31 |
32 | export default sendEmail;
--------------------------------------------------------------------------------
/server/models/cart.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | const cartSchema = mongoose.Schema({
4 | customerId: { type: String, required: true },
5 | orders: [
6 | {
7 | orderData: {
8 | type: {
9 | category: String,
10 | clothDetails: {
11 | sleeve: String,
12 | collar: String,
13 | backDetails: String,
14 | cuffs: String,
15 | color: String,
16 | fabric: String,
17 | },
18 | measurements: {
19 | height: String,
20 | weight: String,
21 | shoeSize: String,
22 | age: String,
23 | gender: String,
24 | neckSize: String,
25 | chestSize: String,
26 | shoulderSize: String,
27 | waistSize: String,
28 | armLength: String,
29 | inseam: String,
30 | },
31 | fabricMode: String,
32 | },
33 | required: true,
34 | },
35 | },
36 | ],
37 | });
38 |
39 | var CartList = mongoose.model("CartList", cartSchema);
40 |
41 | export default CartList;
42 |
--------------------------------------------------------------------------------
/server/models/order.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | const orderListSchema = mongoose.Schema({
4 | tailorId: {
5 | type: String,
6 | required: false,
7 | },
8 | requests: [
9 | {
10 | customerId: { type: String, required: true },
11 | orderData: {
12 | type: {
13 | category: String,
14 | clothDetails: {
15 | sleeve: String,
16 | collar: String,
17 | backDetails: String,
18 | cuffs: String,
19 | color: String,
20 | fabric: String,
21 | },
22 | measurements: {
23 | height: String,
24 | weight: String,
25 | shoeSize: String,
26 | age: String,
27 | gender: String,
28 | neckSize: String,
29 | chestSize: String,
30 | shoulderSize: String,
31 | waistSize: String,
32 | armLength: String,
33 | inseam: String,
34 | },
35 | fabricMode: String,
36 | },
37 | required: true,
38 | },
39 | status: {
40 | type: String,
41 | enum: ["pending", "accepted", "rejected"],
42 | default: "pending",
43 | },
44 | order: {
45 | type: Boolean,
46 | default: false,
47 | }
48 | },
49 | ],
50 | createdAt: {
51 | type: Date,
52 | default: Date.now,
53 | },
54 | });
55 |
56 | var OrderList = mongoose.model("OrderList", orderListSchema);
57 |
58 | export default OrderList;
59 |
--------------------------------------------------------------------------------
/server/models/tailorDetails.js:
--------------------------------------------------------------------------------
1 | import mongoose, { mongo } from "mongoose";
2 |
3 | const tailorListSchema = mongoose.Schema(
4 | {
5 | // contact: String,
6 | // country: String,
7 | // state: String,
8 | // city: String,
9 | // pincode: String,
10 | // passport: String,
11 | // aadhar: String,
12 | // proffesionalDoc: String,
13 | // address: String,
14 | // address2: String,
15 | // bio: String,
16 | // prizerange: [String],
17 | // types: [String],
18 | // creator: String,
19 | // name: String,
20 | // rating: String,
21 | // avaliable: Boolean,
22 | // tailorID: {
23 | // type: mongoose.Schema.Types.ObjectId,
24 | // ref: "TailorUsers",
25 | // },
26 | contact: {
27 | type: Number,
28 | required: true,
29 | },
30 | country: {
31 | type: String,
32 | required: true,
33 | },
34 | state: {
35 | type: String,
36 | required: true,
37 | },
38 | city: {
39 | type: String,
40 | required: true,
41 | },
42 | pincode: {
43 | type: Number,
44 | required: true,
45 | },
46 | passport: {
47 | type: String,
48 | },
49 | aadhar: {
50 | type: Number,
51 | },
52 | proffesionalDoc: {
53 | type: Number,
54 | },
55 | address: {
56 | type: String,
57 | required: true,
58 | },
59 | address2: {
60 | type: String,
61 | },
62 | bio: {
63 | type: String,
64 | required: true,
65 | },
66 | prizerange: {
67 | type: Array,
68 | required: true,
69 | },
70 | types: [
71 | {
72 | type: String,
73 | // required: true,
74 | },
75 | ],
76 | creator: {
77 | type: mongoose.Schema.Types.ObjectId,
78 | ref: "TailorUsers",
79 | },
80 | name: {
81 | type: String,
82 | // required: true,
83 | },
84 | rating: {
85 | type: Number,
86 | },
87 | Availability: {
88 | type: Boolean,
89 | default: false,
90 | },
91 | },
92 | {
93 | timestamps: true,
94 | }
95 | );
96 |
97 | var TailorList = mongoose.model("TailorList", tailorListSchema);
98 |
99 | export default TailorList;
100 |
--------------------------------------------------------------------------------
/server/models/test.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UBA-GCOEN/StichHub/1eb512f98f1f76cab581ceda39b9f89fbfb4547b/server/models/test.js
--------------------------------------------------------------------------------
/server/models/userCustomer.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | const userCustomerSchema = mongoose.Schema({
4 | name: {type: String, required: true},
5 | email: {type: String, required: true},
6 | password: {type: String, required: true},
7 | id: {type: String },
8 | })
9 |
10 | export default mongoose.model("CustomerUsers", userCustomerSchema);
--------------------------------------------------------------------------------
/server/models/userTailor.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | const userTailorSchema = mongoose.Schema({
4 | id: { type: String },
5 | name: { type: String, required: true },
6 | email: { type: String, required: true },
7 | password: { type: String, required: true },
8 | // adding additional field to improve registration process.
9 | mobile: {
10 | type: Number,
11 | // required: true,
12 | },
13 | role: {
14 | type: String,
15 | default: "tailor",
16 | },
17 | isVerified: {
18 | type: Boolean,
19 | default: false,
20 | },
21 | });
22 |
23 | export default mongoose.model("TailorUsers", userTailorSchema);
24 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "type": "module",
7 | "scripts": {
8 | "start": "ncc build index.js && node index.js",
9 | "server": "nodemon index.js"
10 | },
11 | "keywords": [],
12 | "author": "",
13 | "license": "ISC",
14 | "dependencies": {
15 | "@cashfreepayments/cashfree-sdk": "^0.1.7",
16 | "base64url": "^3.0.1",
17 | "bcrypt": "^5.1.0",
18 | "body-parser": "^1.20.2",
19 | "cors": "^2.8.5",
20 | "dotenv": "^16.0.3",
21 | "email-validator": "^2.0.4",
22 | "express": "^4.18.2",
23 | "express-rate-limit": "^6.7.1",
24 | "jsonwebtoken": "^9.0.0",
25 | "mongoose": "^7.0.2",
26 | "nodemailer": "^6.9.2",
27 | "nodemon": "^2.0.21",
28 | "stripe": "^12.2.0",
29 | "twilio": "^4.12.0"
30 | },
31 | "devDependencies": {
32 | "@vercel/ncc": "^0.36.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/server/routes/cart.js:
--------------------------------------------------------------------------------
1 | import express from 'express';
2 | import { addOrder, getCartList } from '../controllers/cart.js';
3 |
4 | const router = express.Router();
5 | import authCustomer from '../middlewares/authCustomer.js';
6 |
7 | router.post('/:orderId/:tailorId', authCustomer, addOrder);
8 | router.get('/list', authCustomer, getCartList);
9 |
10 |
11 | export default router;
--------------------------------------------------------------------------------
/server/routes/orders.js:
--------------------------------------------------------------------------------
1 | import express from 'express';
2 | import { addOrder, getOrders, updateStatus, getOrdersCustomers } from '../controllers/order.js';
3 |
4 | const router = express.Router();
5 | import authCustomer from '../middlewares/authCustomer.js';
6 | import authTailor from '../middlewares/authTailor.js';
7 |
8 | router.post('/request', authCustomer, addOrder);
9 | router.get('/request/tailor', authTailor, getOrders);
10 | router.get('/request/customer', authCustomer, getOrdersCustomers);
11 | router.put('/:orderId/request/:requestId/status', authTailor, updateStatus);
12 |
13 |
14 | export default router;
--------------------------------------------------------------------------------
/server/routes/payment.js:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import dotenv from "dotenv";
3 | dotenv.config();
4 | import { PaymentGateway } from "@cashfreepayments/cashfree-sdk";
5 | import OrderList from "../models/order.js";
6 |
7 | const router = express.Router();
8 |
9 | const CLIENT_ID = process.env.CLIENT_ID;
10 | const CLIENT_SECRET = process.env.CLIENT_SECRET;
11 |
12 | const pg = new PaymentGateway({
13 | env: "TEST",
14 | appId: CLIENT_ID,
15 | secretKey: CLIENT_SECRET,
16 | });
17 |
18 | router.post("/", async (req, res) => {
19 | const { amount, orderId, customerName, customerEmail, customerPhone } =
20 | req.body;
21 |
22 | pg.orders
23 | .createOrders({
24 | orderId: orderId, // required
25 | orderAmount: amount, // required
26 | orderCurrency: "INR",
27 | customerName: customerName, // required
28 | customerPhone: customerPhone, // required
29 | customerEmail: customerEmail, // required
30 | paymentModes: "cc, dc, nb, upi, paypal, wallet",
31 | returnUrl: "https://stichhub-backend.vercel.app/payment/response", // required
32 | })
33 | .then((response) => {
34 | res.json(response);
35 | })
36 | .catch((error) => {
37 | console.error(error);
38 | res.status(500).json({ error: "Failed to create payment order" });
39 | });
40 | });
41 |
42 | router.post("/response", async (req, res) => {
43 | const data = req.body;
44 |
45 | res.redirect("https://stichhub.vercel.app/cart/success");
46 |
47 | });
48 |
49 | export default router;
50 |
--------------------------------------------------------------------------------
/server/routes/tailorsDetails.js:
--------------------------------------------------------------------------------
1 |
2 | import express from 'express';
3 | import { addTailor, getTailorList, getSpecificTailor, verifyTailorDetails, updateTailorProfile, } from '../controllers/tailorDetails.js'
4 |
5 |
6 | const router = express.Router();
7 | import authTailor from "../middlewares/authTailor.js";
8 |
9 |
10 | router.get("/list", getTailorList);
11 | router.post("/list", authTailor, addTailor);
12 | router.put("/profileupdate", authTailor, updateTailorProfile);
13 | router.get('/specific', authTailor, getSpecificTailor);
14 | router.post("/verifydetails", verifyTailorDetails)
15 |
16 |
17 | export default router;
18 |
--------------------------------------------------------------------------------
/server/routes/test.js:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import {getTest} from "../controllers/test.js"
3 |
4 | import nodemailer from "nodemailer";
5 | const router = express.Router();
6 |
7 | const sendEmail = async (req,res) => {
8 | console.log(req.body);
9 | const { name,email,phoneno,message} = req.body;
10 |
11 | try {
12 | // Create a Nodemailer transporter using your Gmail account details
13 | const transporter = nodemailer.createTransport({
14 | service: 'gmail',
15 | auth: {
16 | user: process.env.GMAIL_USER,
17 | pass: process.env.GMAIL_PASS,
18 | },
19 | });
20 |
21 | // Configure the email options
22 | const mailOptions = {
23 | from: process.env.GMAIL_USER,
24 | to: process.env.GMAIL_RECEIVER,
25 | subject:"Contact Form Details",
26 |
27 | html: `
28 |
29 |
Name:
30 |
${name}
31 |
Email:
32 |
${email}
33 |
Phone:
34 |
${phoneno}
35 |
Message:
36 |
${message}
37 |
38 |
`
39 | };
40 |
41 | // Send the email
42 | const info = await transporter.sendMail(mailOptions);
43 |
44 | console.log('Email sent:', info.response);
45 | res.status(200).json({ message: 'Email sent successfully' });
46 | } catch (error) {
47 | console.error('Error sending email:', error);
48 | res.status(500).json({ message: 'Error sending email' });
49 | }
50 | }
51 |
52 | router.get("/", getTest);
53 | router.post("/send-email",sendEmail);
54 |
55 | export default router;
56 |
--------------------------------------------------------------------------------
/server/routes/userCustomer.js:
--------------------------------------------------------------------------------
1 | import express from 'express';
2 | import { signin, register, deleteAccount } from '../controllers/userCustomer.js'
3 | import rateLimit from "express-rate-limit";
4 |
5 | const limiter = rateLimit({
6 | windowMs: 15 * 60 * 1000, // 15 minutes
7 | max: 100, // limit each IP to 100 requests per windowMs
8 | });
9 |
10 | const router = express.Router();
11 |
12 | router.post("/signin",limiter, signin);
13 | router.post("/register",limiter, register);
14 | router.post("/delete",limiter, deleteAccount)
15 |
16 | export default router;
17 |
--------------------------------------------------------------------------------
/server/routes/userTailor.js:
--------------------------------------------------------------------------------
1 |
2 | import express from "express";
3 | import rateLimit from "express-rate-limit";
4 | import {
5 | signin,
6 | register,
7 | resendVerificationLink,
8 | verifyEmail,
9 | getMySelf,
10 | deleteAccount,
11 | } from "../controllers/userTailor.js";
12 | import authTailor from "../middlewares/authTailor.js";
13 | const limiter = rateLimit({
14 | windowMs: 15 * 60 * 1000, // 15 minutes
15 | max: 100, // limit each IP to 100 requests per windowMs
16 | });
17 |
18 | const router = express.Router();
19 |
20 | router.post("/signin", limiter,signin);
21 | router.post("/register", limiter,register);
22 | router.put("/verify",limiter, verifyEmail);
23 | router.post("/resend/verificationlink", limiter,resendVerificationLink);
24 | router.get("/getmyself",limiter, authTailor, getMySelf);
25 | router.post("/delete", limiter ,deleteAccount)
26 |
27 |
28 | export default router;
29 |
--------------------------------------------------------------------------------
/server/services/mail.js:
--------------------------------------------------------------------------------
1 | import nodemailer from "nodemailer";
2 | import * as dotenv from "dotenv";
3 | dotenv.config();
4 |
5 | const SOURCE_EMAIL = process.env.SOURCE_EMAIL;
6 | const SOURCE_PASSWORD = process.env.SOURCE_PASSWORD;
7 |
8 | const Transporter = nodemailer.createTransport({
9 | service: "gmail",
10 | auth: { user: SOURCE_EMAIL, pass: SOURCE_PASSWORD },
11 | });
12 |
13 | const sendWelcomeMail = async (name, email) => {
14 | let info = await Transporter.sendMail({
15 | from: SOURCE_EMAIL,
16 | to: email,
17 | subject: `Welcome to StichHub!!`,
18 |
19 | html: `Hi ${name} ,
20 | Thank you for registering at StichHub!
21 | We're excited to have you on board. Check out the website and its amazing 3D & AR Feature:
22 | https://stichhub.vercel.app
23 |
24 | If you did not register for an account on StichHub, please disregard this email. It's possible that another person with a similar email address accidentally used it during registration.
25 |
26 | If you encounter any issues or have any questions, please don't hesitate to reach out to our support team at stichhub.office@gmail.com . We're here to help!
27 |
28 | We're thrilled to have you on board.
29 | Thank you for choosing StichHub!
30 |
31 | Best regards,
32 | The StichHub Team `,
33 | });
34 | };
35 |
36 | export default sendWelcomeMail;
37 |
--------------------------------------------------------------------------------
/server/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "builds": [
4 | {
5 | "src": "index.js",
6 | "use": "@vercel/node",
7 | "config": {
8 | "includeFiles": ["./routes/**/*"]
9 | }
10 | }
11 | ],
12 | "routes": [{ "src": "/[^.]+", "dest": "/", "status": 200 }]
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/service-client.yml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: service-client
5 | spec:
6 | type: NodePort
7 | selector:
8 | app: client
9 | ports:
10 | - port: 5173
11 | targetPort: 5173
12 | nodePort: 30007
13 |
--------------------------------------------------------------------------------
/service-server.yml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: service-server
5 | spec:
6 | selector:
7 | app: server
8 | ports:
9 | - port: 5000
10 | targetPort: 5000
11 |
--------------------------------------------------------------------------------