{"id":46114925,"url":"https://github.com/naser-almuhana/prostore","last_synced_at":"2026-03-01T23:09:19.271Z","repository":{"id":284073114,"uuid":"953726771","full_name":"naser-almuhana/prostore","owner":"naser-almuhana","description":"A full featured Ecommerce website built with Next.js, TailwindCSS, TypeScript, PostgreSQL and Prisma.","archived":false,"fork":false,"pushed_at":"2025-04-21T01:24:25.000Z","size":6154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-21T02:42:40.400Z","etag":null,"topics":["admin-dashboard","authjs","ecommerce","fullstack-development","nextjs","paypal","postgresql","prisma","reactjs","resend-email","shadcn-ui","stripe","tawilwindcss","typescript","uploadthing","vercel-deployment"],"latest_commit_sha":null,"homepage":"https://prostore-alpha-two.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naser-almuhana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-03-24T01:19:05.000Z","updated_at":"2025-04-21T01:24:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"748465ae-c4fb-4269-a0ca-90cc29111f59","html_url":"https://github.com/naser-almuhana/prostore","commit_stats":null,"previous_names":["naseralmuhana/prostore","naser-almuhana/prostore"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/naser-almuhana/prostore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naser-almuhana%2Fprostore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naser-almuhana%2Fprostore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naser-almuhana%2Fprostore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naser-almuhana%2Fprostore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naser-almuhana","download_url":"https://codeload.github.com/naser-almuhana/prostore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naser-almuhana%2Fprostore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["admin-dashboard","authjs","ecommerce","fullstack-development","nextjs","paypal","postgresql","prisma","reactjs","resend-email","shadcn-ui","stripe","tawilwindcss","typescript","uploadthing","vercel-deployment"],"created_at":"2026-03-01T23:09:18.544Z","updated_at":"2026-03-01T23:09:19.258Z","avatar_url":"https://github.com/naser-almuhana.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProStore - Fullstack eCommerce Platform\n\nProStore is a full-stack eCommerce website built with **Next.js 15**,**React 19**, **Prisma**, **TailwindCSS v4**, **Stripe**, **PayPal**, and more. It allows users to browse products, manage their carts, and complete purchases with various payment methods. The platform includes an admin dashboard for managing products, orders, and users.\n\n\u003cimg src=\"/public/images/screen.png\" alt=\"Next.js Ecommerce\" /\u003e\n\n## 🌟 Live Demo\n\n- [Main Store](https://prostore-alpha-two.vercel.app/)\n- [Sample Product](https://prostore-alpha-two.vercel.app/product/polo-sporting-stretch-shirt)\n- [Product Search](https://prostore-alpha-two.vercel.app/search?q=all\u0026category=Men%27s+Dress+Shirts\u0026price=1-50\u0026rating=all\u0026sort=newest\u0026page=1)\n- [Checkout Flow](https://prostore-alpha-two.vercel.app/cart) → [Shipping](https://prostore-alpha-two.vercel.app/shipping-address) → [Payment](https://prostore-alpha-two.vercel.app/payment-method) → [place-order](https://prostore-alpha-two.vercel.app/place-order)\n\n## 🚀 Features\n\n### 🛍️ Customer Experience\n\n| Feature                | Description                                                   |\n| ---------------------- | ------------------------------------------------------------- |\n| **Product Discovery**  | Search by name/category, filter by price/rating, sort options |\n| **Rich Product Pages** | Image galleries, reviews, availability status                 |\n| **Smart Cart**         | Guest cart → user cart on login, real-time price updates      |\n| **Checkout Flow**      | 3-step process: Shipping → Payment → Review                   |\n| **Order Tracking**     | View order status, payment confirmation, delivery updates     |\n\n### 💻 Admin Dashboard\n\n| Feature                | Description                                      |\n| ---------------------- | ------------------------------------------------ |\n| **Analytics**          | Sales charts, revenue metrics, customer insights |\n| **Product Management** | CRUD operations for product catalog              |\n| **Order Processing**   | Update payment/delivery status, view all orders  |\n| **User Management**    | View users, modify roles, manage access          |\n\n### 💳 Payment Options\n\n| Method               | Features                                        |\n| -------------------- | ----------------------------------------------- |\n| **PayPal**           | Secure checkout, automatic payment confirmation |\n| **Stripe**           | Credit card processing, PCI-compliant           |\n| **Cash on Delivery** | Admin-marked payment status                     |\n\n### ✉️ Notifications\n\n- Email receipts with order details\n- Toast notifications for all user actions\n\n## 🛠️ Tech Stack\n\n### Frontend\n\n- **Framework**: Next.js 15 (App Router) - React 19\n- **UI**: ShadCN components\n- **Styling**: TailwindCSS v4\n- **State**: React Server Components\n- **Forms**: React Hook Form + Zod + Uploadthing\n\n### Backend\n\n- **ORM**: Prisma\n- **Database**: PostgreSQL (NeonDB)\n- **Auth**: NextAuth.js\n- **Payments**: Stripe \u0026 PayPal \u0026 Cash on Delivery\n- **Emails**: Resend + React Email\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- **Node.js** (v18 or later)\n- **NeonDB Account** (Postgresql)\n- **Stripe \u0026 PayPal Developer Accounts** for payment integrations\n- **Resend Developer Account** for email notifications\n\n### Installation\n\nFollow these steps to get the application up and running locally:\n\n1. **Clone the Repository**\n\n   Clone the repository to your local machine:\n\n   ```bash\n   git clone https://github.com/your-username/prostore.git\n   cd prostore\n   ```\n\n2. **Install Dependencies**\n\n   Install the required dependencies using npm or yarn:\n\n   ```bash\n   npm install\n   or\n   yarn install\n   ```\n\n3. **Set Up Environment Variables**\n\n   Copy the .env.example file to .env and fill in your environment variables as described below:\n\n   ```bash\n   cp .env.example .env\n   ```\n\n   Update the .env file with the necessary values. This file contains crucial information such as your database connection URL, Stripe/PayPal credentials, and other keys. You will need to create accounts for services like Stripe, PayPal, and Resend to obtain these credentials. For more details about the environment variables, please see the [Explanation of Environment Variables](#explanation-of-environment-variables) section.\n   \u003cbr\u003e\n\n4. **Run Database Migrations**\n\n   Run Prisma migrations to set up the database schema:\n\n   ```bash\n   npm run db:generate\n   ```\n\n   and then migrate\n\n   ```bash\n   npx prisma migrate dev\n   ```\n\n   If you'd like to seed the database with sample data (optional), run:\n\n   ```bash\n   npx tsx ./db/seed.ts\n   ```\n\n5. **Start the Development Server**\n\n   For local development, run the following:\n\n   ```bash\n   npm run dev\n   ```\n\n   Your app will be available at http://localhost:3000\n   \u003cbr\u003e\n\n6. **Build and Deploy for Production**\n\n   To build the app for production:\n\n   ```bash\n   npm run build\n   ```\n\n   After building, you can start the app in production mode:\n\n   ```bash\n   npm run start\n   ```\n\n   This will serve the app optimized for production.\n\n## Explanation of Environment Variables\n\nHere’s a brief explanation of each environment variable in your `.env` file:\n\n### General Configuration\n\n- `NEXT_PUBLIC_APP_NAME`: Name of your app (public-facing).\n- `NEXT_PUBLIC_APP_DESCRIPTION`: Description of your app (public-facing).\n- `NEXT_PUBLIC_SERVER_URL`: URL of your server (base URL for API requests).\n\n### Authentication \u0026 Security\n\n- `AUTH_SECRET`: A secret used for signing and verifying tokens.\n- `AUTH_TRUST_HOST`: Used to trust the host (usually set to true or a specific domain).\n- `ENCRYPTION_KEY`: Key used for encrypting sensitive data.\n\n### Database Configuration\n\n- `DATABASE_URL`: The connection string to your database (e.g., PostgreSQL, MySQL, etc.).\n\n### Payment Configuration\n\n- `PAYMENT_METHODS`: List of accepted payment methods (e.g., PayPal, Stripe).\n- `DEFAULT_PAYMENT_METHOD`: The default payment method to be used in the app.\n\n### PayPal Integration\n\n- `PAYPAL_API_URL`: The PayPal API URL to communicate with.\n- `PAYPAL_CLIENT_ID`: Your PayPal client ID for OAuth integration.\n- `PAYPAL_APP_SECRET`: The secret associated with your PayPal app for authentication.\n\n### Stripe Integration\n\n- `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY`: The publishable Stripe key, exposed on the client side.\n- `STRIPE_SECRET_KEY`: The secret Stripe key, used for server-side authentication.\n\n### File Upload\n\n- `UPLOADTHING_TOKEN`: Token used for authentication with your file upload service.\n- `UPLOADTHING_SECRET`: Secret key for file uploads.\n- `UPLOADTHING_APPID`: The app ID for UploadThing.\n\n### Email Service\n\n- `RESEND_API_KEY`: API key for sending emails using Resend.\n- `SENDER_EMAIL`: The email address used to send notifications and receipts.\n\n### Other Configuration\n\n- `NEXT_PUBLIC_TARGET_DATE`: A public-facing target date (likely for countdown timers or promotions).\n\n## License\n\nMIT License\n\nCopyright (c) [2025] [Naser Almuhana]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaser-almuhana%2Fprostore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaser-almuhana%2Fprostore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaser-almuhana%2Fprostore/lists"}