├── .eslintrc.json ├── .gitignore ├── README.md ├── jsconfig.json ├── next.config.mjs ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── public ├── assets │ ├── icons │ │ ├── Group 38729.svg │ │ ├── Wrench.svg │ │ ├── check.svg │ │ ├── deliveryt.svg │ │ ├── group.svg │ │ ├── logo.eps │ │ ├── person.svg │ │ └── quote.svg │ ├── images │ │ ├── about_us │ │ │ ├── parts.jpg │ │ │ └── person.jpg │ │ ├── banner │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ └── 6.jpg │ │ ├── checkout │ │ │ └── checkout.png │ │ ├── homeCarousel │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ └── 4.jpg │ │ ├── login │ │ │ └── login.svg │ │ ├── products │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ └── 6.png │ │ ├── services │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ └── 6.jpg │ │ └── team │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ └── 3.jpg │ └── logo.svg └── services.json ├── src ├── app │ ├── api │ │ └── auth │ │ │ └── [...nextauth] │ │ │ └── route.js │ ├── checkout │ │ ├── [id] │ │ │ └── page.jsx │ │ └── api │ │ │ └── new-booking │ │ │ └── route.js │ ├── favicon.ico │ ├── globals.css │ ├── layout.js │ ├── login │ │ └── page.jsx │ ├── my-bookings │ │ ├── api │ │ │ ├── [email] │ │ │ │ └── route.js │ │ │ └── booking │ │ │ │ └── [id] │ │ │ │ └── route.js │ │ ├── page.jsx │ │ └── update │ │ │ └── [id] │ │ │ └── page.jsx │ ├── page.js │ ├── services │ │ ├── [id] │ │ │ └── page.jsx │ │ └── api │ │ │ ├── [id] │ │ │ └── route.js │ │ │ ├── get-all │ │ │ └── route.js │ │ │ └── seed │ │ │ └── route.js │ └── signup │ │ ├── api │ │ └── route.js │ │ └── page.jsx ├── components │ ├── Homepage │ │ ├── About.jsx │ │ ├── Banner.jsx │ │ ├── Homepage.jsx │ │ └── Services.jsx │ ├── cards │ │ └── ServiceCard.jsx │ └── shared │ │ ├── Footer.jsx │ │ ├── Navbar.jsx │ │ └── SocialSignin.jsx ├── lib │ ├── connectDB.js │ └── services.js ├── middleware.js └── services │ ├── AuthProvider.jsx │ └── getServices.js └── tailwind.config.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | # or 12 | pnpm dev 13 | # or 14 | bun dev 15 | ``` 16 | 17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 18 | 19 | You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. 20 | 21 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. 22 | 23 | ## Learn More 24 | 25 | To learn more about Next.js, take a look at the following resources: 26 | 27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 29 | 30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 31 | 32 | ## Deploy on Vercel 33 | 34 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 35 | 36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 37 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./src/*"] 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | 4 | images: { 5 | remotePatterns: [ 6 | { 7 | protocol: "https", 8 | hostname: "*", 9 | port: "", 10 | pathname: "**", 11 | }, 12 | ], 13 | }, 14 | }; 15 | 16 | export default nextConfig; 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "car-doctor-pro", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "axios": "^1.7.2", 13 | "bcrypt": "^5.1.1", 14 | "mongodb": "^6.7.0", 15 | "next": "14.2.3", 16 | "next-auth": "^4.24.7", 17 | "react": "^18", 18 | "react-dom": "^18", 19 | "react-icons": "^5.2.1", 20 | "react-toastify": "^10.0.5" 21 | }, 22 | "devDependencies": { 23 | "daisyui": "^4.12.2", 24 | "eslint": "^8", 25 | "eslint-config-next": "14.2.3", 26 | "postcss": "^8", 27 | "tailwindcss": "^3.4.1" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /public/assets/icons/Group 38729.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/assets/icons/Wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/assets/icons/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/assets/icons/deliveryt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/assets/icons/group.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/assets/icons/logo.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/icons/logo.eps -------------------------------------------------------------------------------- /public/assets/icons/person.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/assets/icons/quote.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/assets/images/about_us/parts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/about_us/parts.jpg -------------------------------------------------------------------------------- /public/assets/images/about_us/person.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/about_us/person.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/1.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/2.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/3.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/4.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/5.jpg -------------------------------------------------------------------------------- /public/assets/images/banner/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/banner/6.jpg -------------------------------------------------------------------------------- /public/assets/images/checkout/checkout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/checkout/checkout.png -------------------------------------------------------------------------------- /public/assets/images/homeCarousel/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/homeCarousel/1.jpg -------------------------------------------------------------------------------- /public/assets/images/homeCarousel/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/homeCarousel/2.jpg -------------------------------------------------------------------------------- /public/assets/images/homeCarousel/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/homeCarousel/3.jpg -------------------------------------------------------------------------------- /public/assets/images/homeCarousel/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/homeCarousel/4.jpg -------------------------------------------------------------------------------- /public/assets/images/login/login.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /public/assets/images/products/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/1.png -------------------------------------------------------------------------------- /public/assets/images/products/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/2.png -------------------------------------------------------------------------------- /public/assets/images/products/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/3.png -------------------------------------------------------------------------------- /public/assets/images/products/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/4.png -------------------------------------------------------------------------------- /public/assets/images/products/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/5.png -------------------------------------------------------------------------------- /public/assets/images/products/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/products/6.png -------------------------------------------------------------------------------- /public/assets/images/services/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/1.jpg -------------------------------------------------------------------------------- /public/assets/images/services/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/2.jpg -------------------------------------------------------------------------------- /public/assets/images/services/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/3.jpg -------------------------------------------------------------------------------- /public/assets/images/services/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/4.jpg -------------------------------------------------------------------------------- /public/assets/images/services/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/5.jpg -------------------------------------------------------------------------------- /public/assets/images/services/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/services/6.jpg -------------------------------------------------------------------------------- /public/assets/images/team/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/team/1.jpg -------------------------------------------------------------------------------- /public/assets/images/team/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/team/2.jpg -------------------------------------------------------------------------------- /public/assets/images/team/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/public/assets/images/team/3.jpg -------------------------------------------------------------------------------- /public/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/services.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "635a0c0b64a6d231228942ae", 4 | "service_id": "04", 5 | "title": "Engine Oil Change", 6 | "img": "https://i.ibb.co/T2cpBd5/888.jpg", 7 | "price": "20.00", 8 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 9 | "facility": [ 10 | { 11 | "name": "Instant Car Services", 12 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 13 | }, 14 | { 15 | "name": "24/7 Quality Service", 16 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 17 | }, 18 | { 19 | "name": "Easy Customer Service", 20 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 21 | }, 22 | { 23 | "name": "Quality Cost Service", 24 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 25 | } 26 | ] 27 | }, 28 | { 29 | "_id": "635a0c0b64a6d231228942af", 30 | "service_id": "05", 31 | "title": "Battery Charge", 32 | "img": "https://i.ibb.co/ydCbDN3/5555.jpg", 33 | "price": "20.00", 34 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 35 | "facility": [ 36 | { 37 | "name": "Instant Car Services", 38 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 39 | }, 40 | { 41 | "name": "24/7 Quality Service", 42 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 43 | }, 44 | { 45 | "name": "Easy Customer Service", 46 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 47 | }, 48 | { 49 | "name": "Quality Cost Service", 50 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 51 | } 52 | ] 53 | }, 54 | { 55 | "_id": "635b591a1dafe382a9da8c96", 56 | "service_id": "01", 57 | "title": "Full car Repair", 58 | "img": "https://i.ibb.co/R6Z2nFM/55.jpg", 59 | "price": "200.00", 60 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 61 | "facility": [ 62 | { 63 | "name": "Instant Car Services", 64 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 65 | }, 66 | { 67 | "name": "24/7 Quality Service", 68 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 69 | }, 70 | { 71 | "name": "Easy Customer Service", 72 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 73 | }, 74 | { 75 | "name": "Quality Cost Service", 76 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 77 | } 78 | ] 79 | }, 80 | { 81 | "_id": "635b5afc1dafe382a9da8c98", 82 | "service_id": "02", 83 | "title": "Engine Repair", 84 | "img": "https://i.ibb.co/5MvmD2g/88.jpg", 85 | "price": "150.00", 86 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 87 | "facility": [ 88 | { 89 | "name": "Instant Car Services", 90 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 91 | }, 92 | { 93 | "name": "24/7 Quality Service", 94 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 95 | }, 96 | { 97 | "name": "Easy Customer Service", 98 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 99 | }, 100 | { 101 | "name": "Quality Cost Service", 102 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 103 | } 104 | ] 105 | }, 106 | { 107 | "_id": "635b5b691dafe382a9da8c99", 108 | "service_id": "03", 109 | "title": "Automatic Services", 110 | "img": "https://i.ibb.co/wh7t3N3/555.jpg", 111 | "price": "30.00", 112 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 113 | "facility": [ 114 | { 115 | "name": "Instant Car Services", 116 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 117 | }, 118 | { 119 | "name": "24/7 Quality Service", 120 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 121 | }, 122 | { 123 | "name": "Easy Customer Service", 124 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 125 | }, 126 | { 127 | "name": "Quality Cost Service", 128 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 129 | } 130 | ] 131 | }, 132 | { 133 | "_id": "635b5ba51dafe382a9da8c9a", 134 | "service_id": "06", 135 | "title": "Electrical System", 136 | "img": "https://i.ibb.co/KzCG8qr/8888.jpg", 137 | "price": "20.00", 138 | "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Eius veniam nostrum dolores nemo quas. Minima ullam, veniam, nesciunt quae dolore animi blanditiis deserunt, ea esse dolorum ipsum quibusdam ipsa! Corrupti at, excepturi, fugiat aut nihil neque aliquid sapiente dignissimos provident, animi molestiae ipsum. Repudiandae ipsa id nihil reiciendis soluta eos ducimus pariatur, nam architecto tenetur quo quos commodi est libero repellendus vitae. Fuga numquam nulla nam, facere neque expedita voluptatibus pariatur necessitatibus vel, dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum. Aspernatur ex quibusdam at cum nulla!", 139 | "facility": [ 140 | { 141 | "name": "Instant Car Services", 142 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 143 | }, 144 | { 145 | "name": "24/7 Quality Service", 146 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 147 | }, 148 | { 149 | "name": "Easy Customer Service", 150 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 151 | }, 152 | { 153 | "name": "Quality Cost Service", 154 | "details": "Fuga numquam nulla nam, facere neque dignissimos ab esse magni accusamus eveniet ad corrupti, architecto nostrum." 155 | } 156 | ] 157 | } 158 | ] 159 | -------------------------------------------------------------------------------- /src/app/api/auth/[...nextauth]/route.js: -------------------------------------------------------------------------------- 1 | import { connectDB } from "@/lib/connectDB"; 2 | import NextAuth from "next-auth/next"; 3 | import CredentialsProvider from "next-auth/providers/credentials"; 4 | import GoogleProvider from "next-auth/providers/google"; 5 | import GitHubProvider from "next-auth/providers/github"; 6 | import bcrypt from "bcrypt"; 7 | 8 | const handler = NextAuth({ 9 | secret: process.env.NEXT_PUBLIC_AUTH_SECRET, 10 | session: { 11 | strategy: "jwt", 12 | maxAge: 30 * 24 * 60 * 60, 13 | rolling: false, 14 | }, 15 | providers: [ 16 | CredentialsProvider({ 17 | credentials: { 18 | email: {}, 19 | password: {}, 20 | }, 21 | async authorize(credentials) { 22 | const { email, password } = credentials; 23 | if (!email || !password) { 24 | return null; 25 | } 26 | const db = await connectDB(); 27 | const currentUser = await db.collection("users").findOne({ email }); 28 | if (!currentUser) { 29 | return null; 30 | } 31 | const passwordMatched = bcrypt.compareSync( 32 | password, 33 | currentUser.password 34 | ); 35 | if (!passwordMatched) { 36 | return null; 37 | } 38 | return currentUser; 39 | }, 40 | }), 41 | GoogleProvider({ 42 | clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID, 43 | clientSecret: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_SECRET, 44 | }), 45 | GitHubProvider({ 46 | clientId: process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID, 47 | clientSecret: process.env.NEXT_PUBLIC_GITHUB_CLIENT_SECRET, 48 | }), 49 | ], 50 | pages: { 51 | signIn: "/login", 52 | 53 | }, 54 | callbacks: { 55 | async signIn({ user, account }) { 56 | if (account.provider === "google" || account.provider === "github" || account.provider === "facebook") { 57 | const { name, email, image } = user; 58 | try { 59 | const db = await connectDB(); 60 | const userCollection = db.collection("users"); 61 | const userExist = await userCollection.findOne({ email }); 62 | if (!userExist) { 63 | const res = await userCollection.insertOne(user); 64 | return user; 65 | } else { 66 | return user; 67 | } 68 | } catch (error) { 69 | console.log(error); 70 | } 71 | } else { 72 | return user; 73 | } 74 | }, 75 | }, 76 | }); 77 | 78 | export { handler as GET, handler as POST }; 79 | -------------------------------------------------------------------------------- /src/app/checkout/[id]/page.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { getServicesDetails } from "@/services/getServices"; 3 | import { useSession } from "next-auth/react"; 4 | import Image from "next/image"; 5 | import React, { useEffect, useState } from "react"; 6 | import { ToastContainer, toast } from "react-toastify"; 7 | 8 | const Checkout = ({ params }) => { 9 | const {data} = useSession(); 10 | const [ service, setService ] = useState({}); 11 | const loadService = async () => { 12 | const details = await getServicesDetails(params.id); 13 | setService(details.service); 14 | }; 15 | const { _id, title, description, img, price, facility } = service || {}; 16 | 17 | const handleBooking = async (event) => { 18 | event.preventDefault(); 19 | const newBooking = { 20 | email : data?.user?.email, 21 | name : data?.user?.name, 22 | address : event.target.address.value, 23 | phone : event.target.phone.value, 24 | date : event.target.date.value, 25 | serviceTitle : title, 26 | serviceID : _id, 27 | price : price, 28 | } 29 | 30 | const resp = await fetch('https://car-doctor-pro-nine.vercel.app/checkout/api/new-booking', { 31 | method: 'POST', 32 | body: JSON.stringify(newBooking), 33 | headers : { 34 | "content-type" : "application/json" 35 | } 36 | }) 37 | const response =await resp?.json() 38 | toast.success(response?.message) 39 | event.target.reset() 40 | 41 | }; 42 | 43 | useEffect(() => { 44 | loadService() 45 | },[params]) 46 | 47 | return ( 48 |
49 | 50 |
51 | service 59 |
60 |

61 | Checkout {title} 62 |

63 |
64 |
65 |
66 |
67 |
68 |
69 | 72 | 73 |
74 |
75 | 78 | 79 |
80 |
81 | 84 | 91 |
92 |
93 | 96 | 103 |
104 |
105 | 108 | 115 |
116 |
117 | 120 | 126 |
127 |
128 |
129 | 134 |
135 |
136 |
137 |
138 | ); 139 | }; 140 | 141 | export default Checkout; 142 | -------------------------------------------------------------------------------- /src/app/checkout/api/new-booking/route.js: -------------------------------------------------------------------------------- 1 | import { connectDB } from "@/lib/connectDB"; 2 | 3 | export const POST = async (request) => { 4 | const newBooking = await request.json(); 5 | const db = await connectDB(); 6 | const bookingsCollection = db.collection("bookings"); 7 | 8 | try { 9 | const res = await bookingsCollection.insertOne(newBooking); 10 | return Response.json({ message: "Booked Successfully" }, { status: 200 }); 11 | } catch (error) { 12 | return Response.json({ message: "Something Went Wrong" }, { status: 400 }); 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammingHero1/B9-Car-Doctor-pro-with-NextJs/de83214f8e16d39a78cd0ea8d99e7730971346fb/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | 6 | 7 | @layer utilities { 8 | .text-balance { 9 | text-wrap: balance; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/layout.js: -------------------------------------------------------------------------------- 1 | import { Inter } from "next/font/google"; 2 | import "./globals.css"; 3 | import Navbar from "@/components/shared/Navbar"; 4 | import Footer from "@/components/shared/Footer"; 5 | import AuthProvider from "@/services/AuthProvider"; 6 | 7 | import 'react-toastify/dist/ReactToastify.css'; 8 | import { ToastContainer } from "react-toastify"; 9 | import { Suspense } from "react"; 10 | const inter = Inter({ subsets: ["latin"] }); 11 | 12 | export const metadata = { 13 | title: { 14 | default: "Car Doctor", 15 | template: "%s | Car Doctor", 16 | }, 17 | description: "Car Reaper Workshop", 18 | }; 19 | 20 | export default function RootLayout({ children }) { 21 | return ( 22 | 23 | 24 | 25 | 26 | 27 | 28 | {children} 29 |