Skip to content

Rafa2908/iKicks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

iKicks πŸ‘Ÿ

Full-stack sneaker e-commerce platform built with Node.js, Express, PostgreSQL, and React.

iKicks Banner


πŸ“Œ Overview

iKicks is a full-stack sneaker store where users can browse, filter, and purchase sneakers with a seamless checkout experience. Built with a focus on clean architecture, relational data modeling, and secure authentication.

What users can do:

  • Browse and filter sneakers by brand, size, colorway, and category
  • View product details with multiple images
  • Add items to cart by size
  • Checkout securely via Stripe
  • Save addresses and track orders
  • Wishlist products for later

What admins can do:

  • Add, update, and delete products
  • Manage inventory per size
  • View and manage all orders
  • Access a protected admin dashboard

πŸš€ Features

βœ… Implemented

  • JWT authentication (register, login, role-based access)
  • Admin middleware β€” role verified from token, not request body
  • PostgreSQL schema β€” 11 tables, fully normalized
  • Cart logic β€” add, update, remove items by size
  • Order placement with database transactions
  • Price snapshot on cart and order items
  • Shipping address management
  • Wishlist

πŸ”„ In Progress

  • React frontend
  • Stripe payment integration
  • Product image upload (Cloudinary)
  • Admin dashboard UI

πŸ“‹ Planned

  • Search and filtering
  • Order history page
  • Email notifications
  • Analytics dashboard

πŸ“Έ Screenshots

Product Listing

Product Listing

Product Detail

Product Detail

Shopping Cart

Cart

Checkout

Checkout

Admin Dashboard

Admin


πŸ›  Tech Stack

Layer Technology
Frontend React, React Router, Axios, TailwindCSS
Backend Node.js, Express.js
Database PostgreSQL (hosted on Neon)
Auth JWT + bcrypt
Payments Stripe
Media Cloudinary
Dev Tools Postman, draw.io, dbdiagram.io

πŸ—„ Database

iKicks uses a fully normalized PostgreSQL schema with 11 tables.

Key design decisions:

  • Snapshot pattern β€” prices stored at time of cart add and purchase
  • Weak entity β€” product_size depends on products
  • Role enforcement via JWT payload, not request body
  • Database transactions for order placement

πŸ“‚ See /docs/erd/README.md for full schema documentation and diagrams.

ERD Preview


πŸ”Œ API Reference

Base URL: http://localhost:3000/api

Auth

Method Endpoint Auth Description
POST /auth/register β€” Create account
POST /auth/login β€” Login, receive JWT

Products

Method Endpoint Auth Description
GET /products β€” Get all products
GET /products/:id β€” Get product by ID
POST /products πŸ”’ Admin Add a product
PUT /products/:id πŸ”’ Admin Update product
DELETE /products/:id πŸ”’ Admin Delete product

Cart

Method Endpoint Auth Description
GET /cart βœ… Get user's cart
POST /cart βœ… Add item to cart
PUT /cart/:id βœ… Update item quantity
DELETE /cart/:id βœ… Remove item

Orders

Method Endpoint Auth Description
POST /orders βœ… Place an order
GET /orders βœ… Get user's orders
GET /admin/orders πŸ”’ Admin Get all orders

πŸ“‚ Project Structure

ikicks/
β”‚
β”œβ”€β”€ client/                   # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── utils/
β”‚   └── package.json
β”‚
β”œβ”€β”€ server/                   # Express backend
β”‚   β”œβ”€β”€ controllers/          # Route logic
β”‚   β”œβ”€β”€ middleware/           # auth, admin, error handler
β”‚   β”œβ”€β”€ routes/               # Express routers
β”‚   β”œβ”€β”€ db/                   # Pool config + schema SQL
β”‚   β”œβ”€β”€ utils/                # Regex validators, helpers
β”‚   β”œβ”€β”€ .env                  # Environment variables (gitignored)
β”‚   β”œβ”€β”€ .env.example
β”‚   └── index.js
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ erd/                  # ERD diagrams + README
β”‚   β”œβ”€β”€ api/                  # API documentation
β”‚   └── screenshots/          # App screenshots
β”‚
β”œβ”€β”€ .gitignore
β”œβ”€β”€ README.md
└── package.json

βš™οΈ Setup & Run

Prerequisites

  • Node.js v18+
  • PostgreSQL or a Neon account

1. Clone the repo

git clone https://github.com/yourusername/ikicks.git
cd ikicks

2. Configure environment

cd server
cp .env.example .env

Fill in your .env:

PORT=3000
DBURL=your_neon_connection_string
JWT_SECRET=your_secret_key
STRIPE_SECRET_KEY=your_stripe_key

3. Set up the database

psql -U postgres -f ./server/db/schema.sql

4. Install and run

# Backend
cd server && npm install && npm run dev

# Frontend (separate terminal)
cd client && npm install && npm run dev

🌱 Environment Variables

Variable Description
PORT Server port (default 3000)
DBURL PostgreSQL connection string
JWT_SECRET Secret key for signing tokens
STRIPE_SECRET_KEY Stripe secret key
CLOUDINARY_URL Cloudinary media URL

πŸ‘€ Author

Jose Calderon


Built as part of a summer full-stack development sprint β€” May 2026

About

Full-stack sneaker e-commerce platform with JWT auth, role-based access control, and a normalized PostgreSQL schema. Built with Node.js, Express, and React.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors