├── .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 |
54 |
55 |
56 |
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
3 | 4 |
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 | 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 | 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 | 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 | {props.head+" 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 | {props.head+" 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 | a cartoon of a person holding a row of shirts 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 | 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 |
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 |
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 | 36 |
37 | 38 | {/* Image Part */} 39 |
40 | 41 | a cartoon character pointing at a store 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 | a cartoon character pointing at a store 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 |
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 | logo with text that says StichHub stitch your way 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 |
36 | a cartoon character next to a robot 40 | a cartoon of a person standing in front of a door 44 | a person sitting at a table with a laptop 48 |
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 | a person with a sewing machine 29 |

30 | Call tailor Home to get Measurements 31 |

32 |
33 | 34 |
35 | a calculator and a note 39 |

40 | Calculate Measurements with our Technology 41 |

42 |
43 | 44 |
45 | a yellow enter button 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 | Page not found 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 | {props.head+" 10 |
11 |
12 |

{prop.head}

13 |

{prop.tail}

14 |
15 |
16 | 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 | {props.head+" 26 |
27 |
28 |

{prop.head}

29 |

{prop.tail}

30 |
31 |
32 | 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 |
18 |
22 | 23 |
24 | 38 |
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 | 34 | 35 | 36 | {/* Tailor button */} 37 | 38 | 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 |
11 |
12 |
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 |
11 |
12 |
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 | photo of tailor item 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 | 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 | 45 | 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 | profile picture 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 |
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 | --------------------------------------------------------------------------------