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.
