Prostore

Overview:

Prostore is a full-stack e-commerce platform I built as part of an advanced, project-based Next.js course and extended independently to reinforce real-world patterns and best practices. The project goes well beyond a simple tutorial by implementing a complete shopping experience with authentication, payments, admin management, and analytics—mirroring the architecture and workflows used in production e-commerce applications. You may log in with 'steve@example.com' password '123456' or you may register a new user.

Key Features:

  • End-to-End Shopping Flow: Product browsing, sorting, search filters, cart management, and checkout with session persistence using cookies and JWTs.
  • Multiple Payment Options: Integrated PayPal, Stripe, and Cash on Delivery to reflect real-world checkout scenarios.
  • Authentication & User Accounts: Secure login and user profile management using NextAuth, with role-based access for administrators.
  • Reviews & Rating Systems: Users can leave product reviews to create feedback loops and trust signals common in modern storefronts.
  • Admin Dashboard: A protected admin area with product, order, and user management, plus site metrics and a monthly sales chart built with Recharts.
  • Media Management: Product image uploads handled through UploadThing for a streamlined content workflow.

Modern Tech Stack:

  • Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS, ShadCN UI, React Hook Form, Recharts
  • Backend & Data: PostgreSQL, Prisma ORM, Zod validation
  • Auth & Payments: NextAuth, PayPal API, Stripe API
  • Dev & Deployment: ESLint, Jest, Git, Vercel (CI/CD)

Challenges Solved:

  • Modeled a realistic e-commerce domain (products, orders, payments, reviews, users) using Prisma and PostgreSQL.
  • Implemented multi-provider payment flows while maintaining consistent order state across Stripe, PayPal, and COD paths.
  • Built role-based route protection and admin-only actions to safely manage store operations.
  • Created type-safe forms and validation pipelines using React Hook Form and Zod to reduce runtime errors.
  • Translated business data into meaningful visuals by implementing sales analytics and charts for the admin dashboard.

Takeaways:

This project strengthened my ability to take a complex set of requirements and implement them in a production-style Next.js application. Working through authentication, payments, admin tooling, and deployment gave me hands-on experience with the kinds of tradeoffs and edge cases that arise in real e-commerce systems, while reinforcing best practices around type safety, security, and maintainability.

View Github

Pedal pact website.
Email icon.Reveal my email

© 2026 David Graham. All rights reserved.