A modern e-commerce checkout experience built with Remix, featuring a complete shopping flow from product browsing to order confirmation.
- 🛍️ Product Catalog: Browse products with modern card layouts
- 🛒 Shopping Cart: Add, remove, and update cart items
- 💳 Checkout Process: Complete checkout with shipping and payment forms
- 🔐 User Authentication: Secure login/logout functionality
- 📱 Responsive Design: Mobile-first design with Tailwind CSS
- 🗄️ Database: SQLite with Prisma ORM
- 🎨 Modern UI: Clean, sleek design with smooth animations
- Framework: Remix (React-based full-stack framework)
- Styling: Tailwind CSS
- Database: SQLite with Prisma ORM
- Authentication: Session-based with bcrypt
- Icons: Lucide React
- TypeScript: Full type safety
- Node.js 20+
- npm or yarn
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the root directory with:SESSION_SECRET="your-super-secret-session-key-change-this-in-production" ADYEN_API_KEY="your-adyen-api-key" ADYEN_ENVIRONMENT="TEST" ADYEN_MERCHANT_ACCOUNT="your-merchant-account"
Important: You must create this file before running the database commands!
-
Set up the database:
# Generate Prisma client npm run db:generate # Push schema to database npm run db:push # Seed the database with sample data npm run db:seed
-
Start the development server:
npm run dev
-
Open your browser: Navigate to
http://localhost:5173
Use these credentials to test the application:
- Email:
[email protected]
- Password:
password123
dropin/
├── app/
│ ├── components/ # Reusable UI components
│ │ ├── Header.tsx # Navigation header
│ │ └── ProductCard.tsx # Product display card
│ ├── lib/ # Utility functions
│ │ ├── db.server.ts # Database connection
│ │ ├── session.server.ts # Authentication utilities
│ │ └── cart.server.ts # Cart management
│ ├── routes/ # Remix routes
│ │ ├── _index.tsx # Home page
│ │ ├── login.tsx # Login page
│ │ ├── logout.tsx # Logout handler
│ │ ├── cart.tsx # Shopping cart
│ │ ├── checkout.tsx # Checkout process
│ │ ├── checkout.success.tsx # Order confirmation
│ │ └── products.$productId.tsx # Product details
│ └── root.tsx # Root layout
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # Database seeder
└── package.json
The application uses the following database models:
- User: User accounts and authentication
- Product: Product catalog with images and pricing
- CartItem: Shopping cart items
- Order: Customer orders
- OrderItem: Individual items in orders
- Responsive product grid with modern cards
- Product categories and filtering
- Add to cart functionality with quantity selection
- Real-time cart updates
- Quantity controls with stock validation
- Remove items functionality
- Order summary with tax calculation
- Multi-step checkout form
- Shipping information collection
- Payment form (demo only)
- Order confirmation and success page
- Session-based authentication
- Protected routes
- Login/logout functionality
- Redirect handling
npm run dev
- Start development servernpm run build
- Build for productionnpm run start
- Start production servernpm run db:generate
- Generate Prisma clientnpm run db:push
- Push schema changesnpm run db:seed
- Seed database with sample datanpm run lint
- Run ESLintnpm run typecheck
- Run TypeScript checks
- New Routes: Create files in
app/routes/
- Components: Add reusable components in
app/components/
- Database Changes: Update
prisma/schema.prisma
and run migrations - Styling: Use Tailwind CSS classes for consistent design
-
Build the application:
npm run build
-
Set production environment variables
-
Deploy the
build/
directory to your hosting platform
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is open source and available under the MIT License.
For questions or issues, please open an issue on GitHub.