An open API service indexing awesome lists of open source software.

https://github.com/fisheeesh/prostore

A modern e-commerce platform built with Next.js, TypeScript, Postgres, Prisma & ShadCN.
https://github.com/fisheeesh/prostore

jest next-auth nextjs paypal postgresql prisma resend-email shadcn-ui stripe tailwindcss typescript uploadthing

Last synced: 3 months ago
JSON representation

A modern e-commerce platform built with Next.js, TypeScript, Postgres, Prisma & ShadCN.

Awesome Lists containing this project

README

          

# Prostore 🛒

A full featured Ecommerce website built with Next.js, TypeScript, PostgreSQL and Prisma.

Prostore E-commerce

## Table of Contents

- [Features](#features)
- [Usage](#usage)
- [Install Dependencies](#install-dependencies)
- [Environment Variables](#environment-variables)
- [PostgreSQL Database URL](#postgresql-database-url)
- [Next Auth Secret](#next-auth-secret)
- [PayPal Client ID and Secret](#paypal-client-id-and-secret)
- [Stripe Publishable and Secret Key](#stripe-publishable-and-secret-key)
- [Uploadthing Settings](#uploadthing-settings)
- [Resend API Key](#resend-api-key)
- [Run](#run)
- [Prisma Studio](#prisma-studio)
- [Seed Database](#seed-database)
- [Demo](#demo)
- [License](#license)

## Features

- Next Auth authentication
- Admin area with stats & chart using Recharts
- Order, product and user management
- User area with profile and orders
- Stripe API integration
- PayPal integration
- Cash on delivery option
- Interactive checkout process
- Send order confirmation email to user after purchased
- Featured products with banners
- Multiple images using Uploadthing
- Ratings & reviews system
- Search form (customer & admin)
- Sorting, filtering & pagination
- Dark/Light mode
- Much more

## Usage

### Install Dependencies

```bash
npm install
```

Note: Some dependencies may have not yet been upadated to support React 19. If you get any errors about depencency compatability, run the following:

```bash
npm install --legacy-peer-deps
```

### Environment Variables

Rename the `.example-env` file to `.env` and add the following

#### PostgreSQL Database URL

Sign up for a free PostgreSQL database through Vercel. Log into Vercel and click on "Storage" and create a new Postgres database. Then add the URL.

**Example:**

```
DATABASE_URL="your_url"
```

#### Next Auth Secret

Generate a secret with the following command and add it to your `.env`:

```bash
openssl rand -base64 32
```

**Example:**

```
NEXTAUTH_SECRET="your_key"
```

#### PayPal Client ID and Secret

Create a PayPal developer account and create a new app to get the client ID and secret.

**Example:**

```
PAYPAL_CLIENT_ID="your_id"
PAYPAL_APP_SECRET="your_secret"
```

#### Stripe Publishable and Secret Key

Create a Stripe account and get the publishable and secret key.

**Example:**

```
STRIPE_SECRET_KEY="your_secret"
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="your_key"
```

#### Uploadthing Settings

Sign up for an account at https://uploadthing.com/ and get the token, secret and app ID.

**Example:**

```
UPLOADTHING_TOKEN='your_token'
UPLOADTHING_SECRET='your_key'
UPLOADTHING_APPID="your_id"
```

#### Resend API Key

Sign up for an account at https://resend.io/ and get the API key.

**Example:**

```
RESEND_API_KEY="your_key"
```

### Run

```bash

# Run in development mode
npm run dev

# Build for production
npm run build

# Run in production mode
npm start

# Export static site
npm run export
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

## Prisma Studio

To open Prisma Studio, run the following command:

```bash
npx prisma studio
```

## Seed Database

To seed the database with sample data, run the following command:

```bash
npx tsx ./db/seed
```

## Demo

You can now play it around with it. [here](https://www.theprostore.shop)

**Recommendation**: Once you are about to register to the app, I recommend you to use your existing email address. In the system, I implemented sending email purchase receipt to user feature when the product has been paid. And yeah I really want you to experience it. Please don't miss out. 🙌🏻

For payments like **PayPal**, you can use your own personal account with email and password from PayPay sandbox account to purchase the products.

For **Stripe**, here is default card which is provided by Stripe -
```bash
Card Number: 4242 4242 4242 4242
Expiration date(MM/YY): 12 / 34
Security code: 123
```

## License

This project is licensed under the [MIT License](LICENSE).

Contact: [swanphyo444@gmail.com](mailto:swanphyo444@gmail.com)