{"id":27100578,"url":"https://github.com/iamanonymous419/marketverse","last_synced_at":"2026-04-13T04:40:44.133Z","repository":{"id":286410089,"uuid":"961280023","full_name":"iamanonymous419/marketverse","owner":"iamanonymous419","description":"This project uses Nextjs and other web frameworks to mimic an online store where customers may purchase and sell goods.","archived":false,"fork":false,"pushed_at":"2025-04-06T09:16:43.000Z","size":208,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:56:17.130Z","etag":null,"topics":["clerk","cloudinary","docker","docker-compose","drizzle-orm","jenkins","makefile","nextjs15","postgresql","shadcn-ui","tailwindscss","typescript"],"latest_commit_sha":null,"homepage":"https://marketverse-puce.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamanonymous419.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-06T06:55:06.000Z","updated_at":"2025-04-06T09:16:46.000Z","dependencies_parsed_at":"2025-04-06T10:35:29.425Z","dependency_job_id":null,"html_url":"https://github.com/iamanonymous419/marketverse","commit_stats":null,"previous_names":["iamanonymous419/marketverse"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamanonymous419%2Fmarketverse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamanonymous419%2Fmarketverse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamanonymous419%2Fmarketverse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamanonymous419%2Fmarketverse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamanonymous419","download_url":"https://codeload.github.com/iamanonymous419/marketverse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248111958,"owners_count":21049577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clerk","cloudinary","docker","docker-compose","drizzle-orm","jenkins","makefile","nextjs15","postgresql","shadcn-ui","tailwindscss","typescript"],"created_at":"2025-04-06T13:20:00.010Z","updated_at":"2026-04-13T04:40:44.123Z","avatar_url":"https://github.com/iamanonymous419.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project - MarketVerse\n\n[![Next.js](https://img.shields.io/badge/Frontend-Next.js-black?logo=next.js)](https://nextjs.org)\n[![Tailwind CSS](https://img.shields.io/badge/Styling-Tailwind%20CSS-38B2AC?logo=tailwindcss)](https://tailwindcss.com)\n[![Shadcn UI](https://img.shields.io/badge/UI-Shadcn%20UI-blueviolet)](https://ui.shadcn.com)\n[![Lucide Icons](https://img.shields.io/badge/Icons-Lucide-lightgrey)](https://lucide.dev)\n[![React Hook Form](https://img.shields.io/badge/Forms-React%20Hook%20Form-red?logo=react)](https://react-hook-form.com)\n[![Zod](https://img.shields.io/badge/Validation-Zod-blue)](https://zod.dev)\n[![Typed.js](https://img.shields.io/badge/Animations-Typed.js-yellow)](https://github.com/mattboldt/typed.js)\n[![TanStack Query](https://img.shields.io/badge/Data%20Fetching-TanStack%20Query-ff4154?logo=react-query)](https://tanstack.com/query)\n[![Zustand](https://img.shields.io/badge/State%20Management-Zustand-orange)](https://zustand-demo.pmnd.rs)\n[![Drizzle ORM](https://img.shields.io/badge/ORM-Drizzle%20ORM-ff69b4)](https://orm.drizzle.team)\n[![PostgreSQL](https://img.shields.io/badge/Database-PostgreSQL-blue?logo=postgresql)](https://www.postgresql.org)\n[![Cloudinary](https://img.shields.io/badge/Storage-Cloudinary-yellow?logo=cloudinary)](https://cloudinary.com)\n[![Clerk](https://img.shields.io/badge/Authentication-Clerk-ff9900)](https://clerk.com)\n[![Nodemailer](https://img.shields.io/badge/Email-Nodemailer-green)](https://nodemailer.com)\n[![Docker](https://img.shields.io/badge/Container-Docker-blue?logo=docker)](https://www.docker.com)\n[![Kubernetes](https://img.shields.io/badge/Kubernetes-K8s-blue?logo=kubernetes)](https://kubernetes.io)\n[![Jenkins](https://img.shields.io/badge/CI%2FCD-Jenkins%20%7C%20ArgoCD-brightgreen?logo=jenkins)](https://www.jenkins.io)\n[![Helm](https://img.shields.io/badge/IaC-Helm%20%7C%20Makefile-purple?logo=helm)](https://helm.sh)\n[![Prometheus](https://img.shields.io/badge/Monitoring-Prometheus-red?logo=prometheus)](https://prometheus.io)\n[![Grafana](https://img.shields.io/badge/Dashboard-Grafana-orange?logo=grafana)](https://grafana.com)\n[![AWS](https://img.shields.io/badge/Cloud-AWS-orange?logo=amazon-aws)](https://aws.amazon.com)\n[![Minikube](https://img.shields.io/badge/K8s%20Local-Minikube-blue?logo=kubernetes)](https://minikube.sigs.k8s.io)\n[![Vercel](https://img.shields.io/badge/Hosting-Vercel-black?logo=vercel)](https://vercel.com)\n[![ESLint](https://img.shields.io/badge/Code%20Quality-ESLint-purple?logo=eslint)](https://eslint.org)\n[![Prettier](https://img.shields.io/badge/Formatter-Prettier-blue?logo=prettier)](https://prettier.io)\n[![TypeScript](https://img.shields.io/badge/Type%20Safety-TypeScript-blue?logo=typescript)](https://www.typescriptlang.org)\n[![TSX](https://img.shields.io/badge/Bundler-TSX-lightblue)](https://www.typescriptlang.org/docs/handbook/jsx.html)\n[![PostCSS](https://img.shields.io/badge/CSS%20Processing-PostCSS-red?logo=postcss)](https://postcss.org)\n\n**MarketVerse** is a dynamic e-commerce platform built with Next.js, where users can seamlessly buy and sell products. Whether you want to shop for quality goods or become a seller to showcase your products, MarketVerse provides a smooth and intuitive experience. With secure transactions, user-friendly navigation, and a robust marketplace, MarketVerse empowers individuals to connect, trade, and grow their businesses effortlessly.\n\n\u003e [!WARNING]\n\u003e This project is created for **learning purposes** to explore and implement various web development and DevOps technologies.\n\n# Table of Contents\n\n- [Project - MarketVerse](#project---marketverse)\n- [Table of Contents](#table-of-contents)\n  - [Prerequisites](#prerequisites)\n  - [Tech Stack](#tech-stack)\n    - [Frontend](#frontend)\n    - [Backend \\\u0026 API](#backend--api)\n    - [Development \\\u0026 Build Tools](#development--build-tools)\n    - [DevOps \\\u0026 Deployment](#devops--deployment)\n  - [Features](#features)\n  - [Project Structure](#project-structure)\n  - [Future Plans](#future-plans)\n  - [How To Setup This Project](#how-to-setup-this-project)\n    - [Local Development Setup](#local-development-setup)\n      - [1. Clone the Repository](#1-clone-the-repository)\n      - [2. Install Dependencies](#2-install-dependencies)\n      - [3. Set Up Environment Variables](#3-set-up-environment-variables)\n      - [4. Generate and Push Schema to Database](#4-generate-and-push-schema-to-database)\n      - [5. Run the Development Server](#5-run-the-development-server)\n      - [6. Access the Application](#6-access-the-application)\n    - [Docker Development Setup](#docker-development-setup)\n      - [1. Clone the Repository](#1-clone-the-repository-1)\n      - [2. Build the Docker Image](#2-build-the-docker-image)\n      - [3. Create Docker Network](#3-create-docker-network)\n      - [4. Set Up PostgreSQL Database](#4-set-up-postgresql-database)\n      - [5. Initialize Database Schema](#5-initialize-database-schema)\n      - [6. Run the Container](#6-run-the-container)\n      - [Using Docker Compose](#using-docker-compose)\n  - [Author](#author)\n\n## Prerequisites\n\nBefore running MarketVerse, ensure you have the following installed:\n\n- **Node.js** (\u003e= 18.0.0) → [Download Here](https://nodejs.org/)\n- **Docker** \u0026 **Docker Compose** → [Install Guide](https://docs.docker.com/get-docker/)\n- **PostgreSQL** (\u003e= 14) → [Setup Guide](https://www.postgresql.org/download/)\n- **Cloudinary Account** → [Sign Up](https://cloudinary.com/) (For image uploads)\n- **Clerk Account** → [Sign Up](https://clerk.dev/) (For authentication)\n\n## Tech Stack\n\n### Frontend\n\n[![Next.js](https://img.shields.io/badge/Framework-Next.js-black?logo=next.js)](https://nextjs.org)\n[![Tailwind CSS](https://img.shields.io/badge/Styling-Tailwind%20CSS-38B2AC?logo=tailwindcss)](https://tailwindcss.com)\n[![Shadcn UI](https://img.shields.io/badge/UI%20Components-Shadcn%20UI-blueviolet)](https://ui.shadcn.com)\n[![Lucide Icons](https://img.shields.io/badge/Icons-Lucide-lightgrey)](https://lucide.dev)\n[![React Hook Form](https://img.shields.io/badge/Forms-React%20Hook%20Form-red?logo=react)](https://react-hook-form.com)\n[![Zod](https://img.shields.io/badge/Validation-Zod-blue)](https://zod.dev)\n[![Typed.js](https://img.shields.io/badge/Animations-Typed.js-yellow)](https://mattboldt.com/demos/typed-js)\n[![TanStack Query](https://img.shields.io/badge/Data%20Fetching-TanStack%20Query-ff4154?logo=react-query)](https://tanstack.com/query/latest)\n\n### Backend \u0026 API\n\n[![Drizzle ORM](https://img.shields.io/badge/Database%20ORM-Drizzle%20ORM-ff69b4)](https://orm.drizzle.team)\n[![PostgreSQL](https://img.shields.io/badge/Database-PostgreSQL-blue?logo=postgresql)](https://www.postgresql.org)\n[![Cloudinary](https://img.shields.io/badge/Storage-Cloudinary-yellow?logo=cloudinary)](https://cloudinary.com)\n[![Clerk](https://img.shields.io/badge/Authentication-Clerk-ff9900)](https://clerk.dev)\n[![Nodemailer](https://img.shields.io/badge/Email%20Service-Nodemailer-green)](https://nodemailer.com)\n\n### Development \u0026 Build Tools\n\n[![TypeScript](https://img.shields.io/badge/Type%20Safety-TypeScript-blue?logo=typescript)](https://www.typescriptlang.org)\n[![ESLint](https://img.shields.io/badge/Code%20Quality-ESLint-purple?logo=eslint)](https://eslint.org)\n[![Prettier](https://img.shields.io/badge/Formatter-Prettier-blue?logo=prettier)](https://prettier.io)\n[![TSX](https://img.shields.io/badge/Bundling-TSX-lightblue)](https://www.typescriptlang.org/docs/handbook/jsx.html)\n[![PostCSS](https://img.shields.io/badge/CSS%20Processing-PostCSS-red?logo=postcss)](https://postcss.org)\n\n### DevOps \u0026 Deployment\n\n#### Containerization \u0026 Orchestration\n\n[![Docker](https://img.shields.io/badge/Container-Docker-blue?logo=docker)](https://www.docker.com)\n[![Kubernetes](https://img.shields.io/badge/Orchestration-Kubernetes-326CE5?logo=kubernetes)](https://kubernetes.io)\n[![Minikube](https://img.shields.io/badge/Local%20K8s-Minikube-3970e4?logo=kubernetes)](https://minikube.sigs.k8s.io/docs)\n[![AWS EKS](https://img.shields.io/badge/Cloud-AWS%20EKS-FF9900?logo=amazon-aws)](https://aws.amazon.com/eks)\n\n#### Infrastructure as Code (IaC)\n\n[![Terraform](https://img.shields.io/badge/IaC-Terraform-7B42BC?logo=terraform)](https://www.terraform.io)\n[![Ansible](https://img.shields.io/badge/Automation-Ansible-EE0000?logo=ansible)](https://www.ansible.com)\n[![Helm](https://img.shields.io/badge/K8s%20Packages-Helm-0F1689?logo=helm)](https://helm.sh)\n\n#### CI/CD Pipeline \u0026 Automation\n\n[![Jenkins](https://img.shields.io/badge/CI%2FCD-Jenkins-D24939?logo=jenkins)](https://www.jenkins.io)\n[![Shell](https://img.shields.io/badge/Automation-Shell%20Scripting-4EAA25?logo=gnu-bash)](https://www.gnu.org/software/bash)\n[![Linux](\u003chttps://img.shields.io/badge/OS-Linux%20(Ubuntu%2FDebian)-FCC624?logo=linux\u003e)](https://ubuntu.com)\n\n#### Monitoring \u0026 Logging\n\n[![Grafana](https://img.shields.io/badge/Dashboard-Grafana-F46800?logo=grafana)](https://grafana.com)\n[![Prometheus](https://img.shields.io/badge/Monitoring-Prometheus-E6522C?logo=prometheus)](https://prometheus.io)\n[![Loki](https://img.shields.io/badge/Logging-Loki-33cc33?logo=loki)](https://grafana.com/oss/loki)\n\n#### Cloud \u0026 Hosting\n\n[![AWS EC2](https://img.shields.io/badge/Cloud-AWS%20EC2-FF9900?logo=amazon-aws)](https://aws.amazon.com/ec2)\n[![Vercel](https://img.shields.io/badge/Frontend%20Hosting-Vercel-000000?logo=vercel)](https://vercel.com)\n\n#### Continuous Delivery \u0026 GitOps\n\n[![ArgoCD](https://img.shields.io/badge/GitOps-ArgoCD-blue?logo=argocd)](https://argoproj.github.io/)\n\n## Features\n\n- 🛍️ Buy \u0026 sell products effortlessly\n- 🔒 Secure authentication with **Clerk**\n- 📸 Image management using **Cloudinary**\n- 📩 Email notifications with **Nodemailer**\n- 📦 PostgreSQL with **Drizzle ORM** for efficient data handling\n- 🌗 Dark Mode support with **Next-Themes**\n- ⚡ Lightning-fast UI with **React, Tailwind CSS \u0026 Shadcn UI**\n- 🛠️ Fully containerized and orchestrated using **Docker \u0026 Kubernetes**\n\n## Project Structure\n\n```\nsrc\n├── app\n│   ├── api\n│   │   ├── (buyer)\n│   │   │   └── user\n│   │   │       ├── add-user\n│   │   │       ├── address-user\n│   │   │       │   ├── default\n│   │   │       │   └── [email]\n│   │   │       ├── get-user\n│   │   │       ├── payment\n│   │   │       │   ├── unlink\n│   │   │       │   │   └── [username]\n│   │   │       │   └── [email]\n│   │   │       ├── update-user\n│   │   │       └── upload-image\n│   │   ├── (seller)\n│   │   │   ├── add-product\n│   │   │   ├── check\n│   │   │   ├── delete\n│   │   │   ├── delete-products\n│   │   │   │   └── [id]\n│   │   │   ├── details\n│   │   │   ├── get-products\n│   │   │   ├── login\n│   │   │   ├── order\n│   │   │   │   ├── accept-orders\n│   │   │   │   │   └── [orderId]\n│   │   │   │   ├── decline-orders\n│   │   │   │   │   └── [orderId]\n│   │   │   │   ├── delivered-orders\n│   │   │   │   │   └── [orderId]\n│   │   │   │   ├── get-approve-orders\n│   │   │   │   │   └── [email]\n│   │   │   │   ├── get-decline-orders\n│   │   │   │   │   └── [email]\n│   │   │   │   ├── get-delivered-orders\n│   │   │   │   │   └── [email]\n│   │   │   │   └── get-orders\n│   │   │   │       └── [email]\n│   │   │   ├── payment\n│   │   │   │   ├── unlink\n│   │   │   │   │   └── [username]\n│   │   │   │   └── [email]\n│   │   │   ├── update\n│   │   │   └── upload\n│   │   ├── cron\n│   │   │   └── newsletter\n│   │   ├── newsletter\n│   │   └── products\n│   │       ├── cart\n│   │       │   ├── add\n│   │       │   ├── fetch\n│   │       │   └── remove\n│   │       ├── fetch\n│   │       ├── order\n│   │       │   ├── auto-cancel\n│   │       │   ├── cancel\n│   │       │   │   └── [orderId]\n│   │       │   └── [email]\n│   │       ├── review\n│   │       │   └── [no]\n│   │       ├── wishlist\n│   │       │   ├── add\n│   │       │   ├── fetch\n│   │       │   └── remove\n│   │       └── [no]\n│   ├── common\n│   │   ├── address\n│   │   ├── cart\n│   │   ├── orders\n│   │   ├── payment\n│   │   ├── profile\n│   │   └── wishlist\n│   ├── dashboard\n│   │   ├── list\n│   │   ├── order\n│   │   │   ├── accept\n│   │   │   ├── complete\n│   │   │   ├── decline\n│   │   │   └── pending\n│   │   ├── payment\n│   │   ├── profile\n│   │   └── view\n│   └── products\n│       ├── buynow\n│       │   └── [id]\n│       ├── explore\n│       └── [no]\n├── components\n│   ├── custom\n│   │   ├── products\n│   │   └── skeleton\n│   ├── theme\n│   └── ui\n├── db\n├── hooks\n├── lib\n├── service\n│   ├── buyer-detail\n│   ├── product-detail\n│   └── seller-detail\n├── types\n│   ├── api\n│   ├── products\n│   └── schema\n├── utils\n└── validation\n    └── schema\n```\n\nEach folder serves a specific purpose:\n\n- **app/api** → Handles all API endpoints\n- **components/** → Reusable UI components\n- **service/** → Business logic for buyers, products, and sellers\n- **db/** → Database-related files\n- **utils/** → Helper functions\n- **validation/** → Schema validation\n\nThis structured approach ensures scalability and ease of maintenance.\n\n## Future Plans\n\n\u003e [!IMPORTANT]\n\u003e These technologies are planned for future implementation.\n\n- [x] Docker\n- [x] Kubernetes (Minikube)\n- [x] Jenkins\n- [x] Shell Scripting\n- [x] Linux\n- [x] Helm\n- [x] AWS EC2\n- [x] Terraform\n- [x] Ansible\n- [x] Grafana\n- [x] Prometheus\n- [x] GraphQL (Planned)\n- [ ] Redis (Planned)\n\n## How To Setup This Project\n\n### Local Development Setup\n\nFollow these steps to set up the project on your local machine:\n\n#### 1. Clone the Repository\n\n```bash\n# Clone the project repository\ngit clone https://github.com/iamanonymous419/marketverse.git marketverse\ncd marketverse\n\n# For a specific branch\ngit clone -b main https://github.com/iamanonymous419/marketverse.git marketverse\ncd marketverse\n```\n\n#### 2. Install Dependencies\n\n```bash\nnpm install # for npm\n# or\nbun install # for bun\n# or\nyarn install # for yarn\n# or\npnpm install # for pnpm (recommended)\n```\n\n#### 3. Set Up Environment Variables\n\nCreate a `.env.local` file in the root directory and add your environment variables:\n\n```bash\n# Clerk authentication\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\nCLERK_SECRET_KEY=\n\n# Database configuration (PostgreSQL)\nDATABASE_URL=\n\n# Cloudinary configuration\nNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=\nCLOUDINARY_API_KEY=\nCLOUDINARY_API_SECRET=\n\n# Nodemailer configuration\nSMTP_HOST=\nSMTP_PORT=\nSMTP_USER=\nSMTP_PASSWORD=\nSMTP_FROM=\n```\n\n#### 4. Generate and Push Schema to Database\n\n```bash\nnpx drizzle-kit generate\nnpx drizzle-kit push\n\n# or\npnpm exec drizzle-kit generate\npnpm exec drizzle-kit push\n\n# or (for linux)\npnpm drizzle-kit generate\npnpm drizzle-kit push\n```\n\n#### 5. Run the Development Server\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev # (recommended)\n# or\nbun dev\n```\n\n#### 6. Access the Application\n\n\u003e [!NOTE]\n\u003e Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n### Docker Development Setup\n\n#### 1. Clone the Repository\n\n```bash\n# Clone the project repository\ngit clone https://github.com/iamanonymous419/marketverse.git marketverse\ncd marketverse\n\n# For a specific branch\ngit clone -b main https://github.com/iamanonymous419/marketverse.git marketverse\ncd marketverse\n```\n\n#### 2. Build the Docker Image\n\n```bash\ndocker build --build-arg NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_key_here -t marketverse:latest .\n```\n\n#### 3. Create Docker Network\n\nCreate a Docker network to enable communication between containers:\n\n```bash\ndocker network create marketverse-network -d bridge\n```\n\n#### 4. Set Up PostgreSQL Database\n\n```bash\n# Create a volume for persistent data\ndocker volume create marketverse-data\n\n# Run PostgreSQL container\ndocker run -d \\\n  --name marketverse-database \\\n  --network marketverse-network \\\n  -p 5400:5432 \\\n  -e POSTGRES_USER=something \\\n  -e POSTGRES_PASSWORD=something \\\n  -e POSTGRES_DB=marketverse \\\n  -v marketverse-data:/var/lib/postgresql/data \\\n  postgres\n```\n\n#### 5. Initialize Database Schema\n\n_For Linux :_ Connect to the database container and run the following commands:\n\n```bash\npnpm exec drizzle-kit generate\npnpm exec drizzle-kit push\n```\n\n#### 6. Run the Container\n\n```bash\ndocker run --name marketverse --network marketverse-network -d \\\n-p 3000:3000 \\\n-e CLERK_SECRET_KEY=your_clerk_secret \\\n-e DATABASE_URL=postgresql://something:something@marketverse-database:5432/marketverse \\\n-e NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloudinary_name \\\n-e CLOUDINARY_API_KEY=your_cloudinary_key \\\n-e CLOUDINARY_API_SECRET=your_cloudinary_secret \\\n-e SMTP_HOST=your_smtp_host \\\n-e SMTP_PORT=your_smtp_port \\\n-e SMTP_USER=your_smtp_user \\\n-e SMTP_PASSWORD=your_smtp_password \\\n-e SMTP_FROM=your_smtp_from \\\nmarketverse:latest\n```\n\n#### Using Docker Compose\n\nCreate a `.env` file in the root directory and add your environment variables for Docker Compose:\n\n```env\nDATABASE_URL=\"postgresql://something:something@marketverse-database:5432/marketverse\"\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\nCLERK_SECRET_KEY=\nNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=\nCLOUDINARY_API_KEY=\nCLOUDINARY_API_SECRET=\nSMTP_HOST=smtp.gmail.com\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nSMTP_FROM=\n```\n\nThen run:\n\n```bash\ndocker-compose up --build -d\n```\n\n\u003e [!NOTE]\n\u003e Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n## Author\n\n**Anonymous**  \n📧 Email: [anonymous292009@gmail.com](mailto:anonymous292009@gmail.com)  \n🔗 GitHub: [https://github.com/iamanonymous419](https://github.com/iamanonymous419)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamanonymous419%2Fmarketverse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamanonymous419%2Fmarketverse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamanonymous419%2Fmarketverse/lists"}