Index: kupi-mk/DOCKER_README.md
===================================================================
--- kupi-mk/DOCKER_README.md	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/DOCKER_README.md	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,221 @@
+# Kupi.mk - Docker Setup Guide
+
+## 🐳 Docker Deployment
+
+This guide will help you run the entire Kupi.mk application using Docker, making it work consistently on any PC.
+
+## Prerequisites
+
+- Docker Desktop (or Docker Engine + Docker Compose)
+- 4GB RAM minimum
+- 2GB free disk space
+
+## 🚀 Quick Start
+
+### 1. Clone the repository
+```bash
+git clone <repository-url>
+cd kupi-mk
+```
+
+### 2. Run the setup script
+```bash
+./docker-setup.sh
+```
+
+### 3. Access the application
+- **Frontend**: http://localhost:3000
+- **Backend API**: http://localhost:5001
+- **Database**: localhost:5433
+
+## 📁 Docker Architecture
+
+```
+kupi-mk/
+├── docker-compose.yml          # Orchestrates all services
+├── docker-setup.sh             # Automated setup script
+├── backend/
+│   ├── Dockerfile              # Backend container config
+│   ├── .dockerignore           # Files to exclude
+│   └── .env.docker             # Environment template
+├── frontend/
+│   ├── Dockerfile              # Frontend container config
+│   ├── nginx.conf              # Nginx configuration
+│   ├── .dockerignore           # Files to exclude
+│   └── .env.docker             # Environment template
+└── database_*.sql              # Database initialization
+```
+
+## 🔧 Manual Setup
+
+If you prefer manual control:
+
+### 1. Create environment files
+```bash
+cp backend/.env.docker backend/.env
+cp frontend/.env.docker frontend/.env
+```
+
+### 2. Build and start services
+```bash
+docker-compose up --build -d
+```
+
+### 3. View logs
+```bash
+docker-compose logs -f
+```
+
+### 4. Stop services
+```bash
+docker-compose down
+```
+
+## 🌐 Services
+
+| Service | Container Port | Host Port | Description |
+|---------|----------------|-----------|-------------|
+| Frontend | 80 | 3000 | React app served by Nginx |
+| Backend | 5001 | 5001 | Node.js API server |
+| Database | 5432 | 5433 | PostgreSQL database |
+
+## 🔒 Environment Variables
+
+### Backend (.env)
+```env
+DB_HOST=postgres
+DB_PORT=5432
+DB_NAME=kupi_mk
+DB_USER=admin
+DB_PASSWORD=password123
+JWT_SECRET=your-secret-key
+PORT=5001
+```
+
+### Frontend (.env)
+```env
+REACT_APP_API_URL=http://localhost:5001/api
+REACT_APP_BACKEND_URL=http://localhost:5001
+```
+
+## 🗄️ Data Persistence
+
+- **Database data**: Stored in Docker volume `postgres_data`
+- **Uploaded files**: Stored in Docker volume `backend_uploads`
+- **Data survives container restarts**
+
+## 🛠️ Development vs Production
+
+### Development Mode
+```bash
+# Start with file watching and hot reload
+docker-compose -f docker-compose.dev.yml up
+```
+
+### Production Mode
+```bash
+# Optimized builds, no dev dependencies
+docker-compose up --build -d
+```
+
+## 🔍 Troubleshooting
+
+### Check service status
+```bash
+docker-compose ps
+```
+
+### View logs
+```bash
+# All services
+docker-compose logs
+
+# Specific service
+docker-compose logs backend
+docker-compose logs frontend
+docker-compose logs postgres
+```
+
+### Restart services
+```bash
+docker-compose restart
+```
+
+### Clean rebuild
+```bash
+docker-compose down --volumes --remove-orphans
+docker-compose up --build -d
+```
+
+### Access database directly
+```bash
+docker-compose exec postgres psql -U admin -d kupi_mk
+```
+
+## 🚨 Common Issues
+
+### Port conflicts
+If ports are already in use, edit `docker-compose.yml`:
+```yaml
+ports:
+  - "3001:80"  # Change 3000 to 3001
+  - "5002:5001" # Change 5001 to 5002
+```
+
+### Permission issues on Linux
+```bash
+sudo docker-compose up --build -d
+```
+
+### Out of disk space
+```bash
+docker system prune -a --volumes
+```
+
+## 📊 Monitoring
+
+### Resource usage
+```bash
+docker stats
+```
+
+### Container health
+```bash
+docker-compose exec backend curl http://localhost:5001/api/products
+```
+
+## 🔄 Updates
+
+### Pull latest changes
+```bash
+git pull
+docker-compose up --build -d
+```
+
+### Database migrations
+Database changes are automatically applied on container startup via initialization scripts.
+
+## 🌍 Deployment to Cloud
+
+This Docker setup works on:
+- ✅ **AWS ECS/EKS**
+- ✅ **Google Cloud Run**
+- ✅ **Azure Container Instances**
+- ✅ **DigitalOcean App Platform**
+- ✅ **Heroku** (with Docker support)
+- ✅ **Any VPS** with Docker
+
+## 🔐 Security Notes
+
+- Change default passwords in production
+- Use environment variables for secrets
+- Enable HTTPS with reverse proxy
+- Regular security updates
+
+## 📞 Support
+
+For issues with Docker setup:
+1. Check logs: `docker-compose logs`
+2. Verify requirements are met
+3. Try clean rebuild
+4. Check firewall/antivirus settings
Index: kupi-mk/backend/.dockerignore
===================================================================
--- kupi-mk/backend/.dockerignore	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/backend/.dockerignore	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,15 @@
+# .dockerignore for backend
+node_modules
+npm-debug.log*
+.git
+.gitignore
+README.md
+.env
+.nyc_output
+coverage
+.nyc_output
+.cache
+.DS_Store
+.vscode
+.idea
+*.log
Index: kupi-mk/backend/.env.docker
===================================================================
--- kupi-mk/backend/.env.docker	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/backend/.env.docker	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,20 @@
+# Database Configuration
+DB_HOST=postgres
+DB_PORT=5432
+DB_NAME=kupi_mk
+DB_USER=admin
+DB_PASSWORD=password123
+
+# Server Configuration
+NODE_ENV=production
+PORT=5001
+
+# JWT Secret (CHANGE THIS IN PRODUCTION!)
+JWT_SECRET=your-super-secret-jwt-key-change-this-in-production-make-it-long-and-random
+
+# CORS Configuration
+ALLOWED_ORIGINS=http://localhost:3000,http://frontend
+
+# File Upload Configuration
+MAX_FILE_SIZE=10485760
+ALLOWED_FILE_TYPES=image/jpeg,image/jpg,image/png,image/gif,image/webp
Index: kupi-mk/backend/Dockerfile
===================================================================
--- kupi-mk/backend/Dockerfile	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/backend/Dockerfile	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,27 @@
+# Use Node.js 18 LTS as base image
+FROM node:18-alpine
+
+# Set working directory
+WORKDIR /app
+
+# Copy package files first for better caching
+COPY package*.json ./
+
+# Install dependencies
+RUN npm ci --only=production
+
+# Copy application code
+COPY . .
+
+# Create uploads directory
+RUN mkdir -p uploads/products
+
+# Expose port
+EXPOSE 5001
+
+# Add healthcheck
+HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
+  CMD curl -f http://localhost:5001/api/products || exit 1
+
+# Start the application
+CMD ["npm", "start"]
Index: kupi-mk/backend/Dockerfile.dev
===================================================================
--- kupi-mk/backend/Dockerfile.dev	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/backend/Dockerfile.dev	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,26 @@
+# Development Dockerfile for backend with hot reload
+FROM node:18-alpine
+
+# Set working directory
+WORKDIR /app
+
+# Install nodemon globally for hot reload
+RUN npm install -g nodemon
+
+# Copy package files first for better caching
+COPY package*.json ./
+
+# Install all dependencies (including dev dependencies)
+RUN npm install
+
+# Copy application code
+COPY . .
+
+# Create uploads directory
+RUN mkdir -p uploads/products
+
+# Expose port
+EXPOSE 5001
+
+# Start with nodemon for hot reload
+CMD ["npm", "run", "dev"]
Index: kupi-mk/copy-database-from-docker.sh
===================================================================
--- kupi-mk/copy-database-from-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/copy-database-from-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+# Export Docker database and import to local
+echo "🔄 Copying Docker database to local machine..."
+
+# Configuration
+LOCAL_DB_NAME="kupi_mk"
+LOCAL_DB_USER="admin"
+DOCKER_CONTAINER="kupi-mk-postgres"
+EXPORT_FILE="/tmp/docker-db-export.sql"
+
+# Step 1: Check if Docker container is running
+echo "🐳 Step 1: Checking Docker container..."
+if ! docker ps | grep -q $DOCKER_CONTAINER; then
+    echo "❌ Docker container '$DOCKER_CONTAINER' is not running!"
+    echo "Start it with: docker-compose up -d postgres"
+    exit 1
+fi
+
+echo "✅ Docker container is running!"
+
+# Step 2: Export from Docker database
+echo "📤 Step 2: Exporting from Docker database..."
+docker exec $DOCKER_CONTAINER pg_dump -U admin -d kupi_mk \
+  --no-owner --no-acl --clean --if-exists > "$EXPORT_FILE"
+
+if [ $? -ne 0 ]; then
+    echo "❌ Failed to export Docker database!"
+    exit 1
+fi
+
+echo "✅ Docker database exported successfully!"
+echo "📁 Export size: $(du -h "$EXPORT_FILE" | cut -f1)"
+
+# Step 3: Import to local database
+echo "📥 Step 3: Importing to local database..."
+psql -h localhost -p 5432 -U $LOCAL_DB_USER -d $LOCAL_DB_NAME -f "$EXPORT_FILE"
+
+if [ $? -eq 0 ]; then
+    echo "✅ Database successfully copied to local machine!"
+    echo ""
+    echo "🎉 Your Docker database is now available locally!"
+    echo "   Local database: localhost:5432"
+    echo ""
+    echo "🔍 To verify, you can check with:"
+    echo "   psql -h localhost -p 5432 -U $LOCAL_DB_USER -d $LOCAL_DB_NAME -c '\\dt'"
+    
+    # Cleanup
+    rm "$EXPORT_FILE"
+    
+else
+    echo "❌ Failed to import database to local machine!"
+fi
Index: kupi-mk/copy-database-to-docker.sh
===================================================================
--- kupi-mk/copy-database-to-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/copy-database-to-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Export local database and import to Docker
+echo "🔄 Copying local database to Docker container..."
+
+# Configuration
+LOCAL_DB_NAME="kupi_mk"
+LOCAL_DB_USER="admin"
+DOCKER_CONTAINER="kupi-mk-postgres"
+EXPORT_FILE="/tmp/local-db-export.sql"
+
+# Step 1: Export local database
+echo "📤 Step 1: Exporting local database..."
+pg_dump -h localhost -p 5432 -U $LOCAL_DB_USER -d $LOCAL_DB_NAME \
+  --no-owner --no-acl --clean --if-exists \
+  > "$EXPORT_FILE"
+
+if [ $? -ne 0 ]; then
+    echo "❌ Failed to export local database!"
+    echo "Make sure:"
+    echo "  1. Local PostgreSQL is running on port 5432"
+    echo "  2. Database '$LOCAL_DB_NAME' exists"
+    echo "  3. User '$LOCAL_DB_USER' has access"
+    exit 1
+fi
+
+echo "✅ Local database exported successfully!"
+echo "📁 Export size: $(du -h "$EXPORT_FILE" | cut -f1)"
+
+# Step 2: Check if Docker container is running
+echo "🐳 Step 2: Checking Docker container..."
+if ! docker ps | grep -q $DOCKER_CONTAINER; then
+    echo "❌ Docker container '$DOCKER_CONTAINER' is not running!"
+    echo "Start it with: docker-compose up -d postgres"
+    exit 1
+fi
+
+echo "✅ Docker container is running!"
+
+# Step 3: Copy SQL file to Docker container
+echo "📋 Step 3: Copying SQL file to Docker container..."
+docker cp "$EXPORT_FILE" $DOCKER_CONTAINER:/tmp/import.sql
+
+# Step 4: Import into Docker database
+echo "📥 Step 4: Importing into Docker database..."
+docker exec -i $DOCKER_CONTAINER psql -U admin -d kupi_mk -f /tmp/import.sql
+
+if [ $? -eq 0 ]; then
+    echo "✅ Database successfully copied to Docker!"
+    echo ""
+    echo "🎉 Your local database is now available in Docker container!"
+    echo "   Docker database: localhost:5433"
+    echo ""
+    echo "🔍 To verify, you can check with:"
+    echo "   docker exec -it $DOCKER_CONTAINER psql -U admin -d kupi_mk -c '\\dt'"
+    
+    # Cleanup
+    rm "$EXPORT_FILE"
+    docker exec $DOCKER_CONTAINER rm /tmp/import.sql
+    
+else
+    echo "❌ Failed to import database to Docker!"
+    echo "Check logs with: docker-compose logs postgres"
+fi
Index: kupi-mk/docker-compose.dev.yml
===================================================================
--- kupi-mk/docker-compose.dev.yml	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/docker-compose.dev.yml	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,60 @@
+version: '3.8'
+
+services:
+  # PostgreSQL Database
+  postgres:
+    image: postgres:15-alpine
+    container_name: kupi-mk-postgres-dev
+    environment:
+      POSTGRES_DB: kupi_mk
+      POSTGRES_USER: admin
+      POSTGRES_PASSWORD: password123
+    ports:
+      - "5433:5432"  # Changed external port to avoid conflict
+    volumes:
+      - postgres_data_dev:/var/lib/postgresql/data
+      - ./database_setup.sql:/docker-entrypoint-initdb.d/01-setup.sql
+      - ./database_updates_cart_reviews.sql:/docker-entrypoint-initdb.d/02-updates.sql
+    healthcheck:
+      test: ["CMD-SHELL", "pg_isready -U admin -d kupi_mk"]
+      interval: 10s
+      timeout: 5s
+      retries: 5
+    networks:
+      - kupi-mk-network
+
+  # Backend API (Development mode with hot reload)
+  backend:
+    build: 
+      context: ./backend
+      dockerfile: Dockerfile.dev
+    container_name: kupi-mk-backend-dev
+    environment:
+      NODE_ENV: development
+      PORT: 5001
+      DB_HOST: postgres
+      DB_PORT: 5432
+      DB_NAME: kupi_mk
+      DB_USER: admin
+      DB_PASSWORD: password123
+      JWT_SECRET: dev-jwt-secret-key
+    ports:
+      - "5001:5001"
+    depends_on:
+      postgres:
+        condition: service_healthy
+    volumes:
+      - ./backend:/app
+      - /app/node_modules
+      - backend_uploads_dev:/app/uploads
+    networks:
+      - kupi-mk-network
+    restart: unless-stopped
+
+volumes:
+  postgres_data_dev:
+  backend_uploads_dev:
+
+networks:
+  kupi-mk-network:
+    driver: bridge
Index: kupi-mk/docker-compose.yml
===================================================================
--- kupi-mk/docker-compose.yml	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/docker-compose.yml	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,72 @@
+version: '3.8'
+
+services:
+  # PostgreSQL Database
+  postgres:
+    image: postgres:15-alpine
+    container_name: kupi-mk-postgres
+    environment:
+      POSTGRES_DB: kupi_mk
+      POSTGRES_USER: admin
+      POSTGRES_PASSWORD: password123
+    ports:
+      - "5433:5432"  # Changed external port to avoid conflict
+    volumes:
+      - postgres_data:/var/lib/postgresql/data
+      - ./database_setup.sql:/docker-entrypoint-initdb.d/01-setup.sql
+      - ./database_updates_cart_reviews.sql:/docker-entrypoint-initdb.d/02-updates.sql
+    healthcheck:
+      test: ["CMD-SHELL", "pg_isready -U admin -d kupi_mk"]
+      interval: 10s
+      timeout: 5s
+      retries: 5
+    networks:
+      - kupi-mk-network
+
+  # Backend API
+  backend:
+    build: 
+      context: ./backend
+      dockerfile: Dockerfile
+    container_name: kupi-mk-backend
+    environment:
+      NODE_ENV: production
+      PORT: 5001
+      DB_HOST: postgres
+      DB_PORT: 5432
+      DB_NAME: kupi_mk
+      DB_USER: admin
+      DB_PASSWORD: password123
+      JWT_SECRET: your-super-secret-jwt-key-change-this-in-production
+    ports:
+      - "5001:5001"
+    depends_on:
+      postgres:
+        condition: service_healthy
+    volumes:
+      - backend_uploads:/app/uploads
+    networks:
+      - kupi-mk-network
+    restart: unless-stopped
+
+  # Frontend React App
+  frontend:
+    build:
+      context: ./frontend
+      dockerfile: Dockerfile
+    container_name: kupi-mk-frontend
+    ports:
+      - "3000:80"
+    depends_on:
+      - backend
+    networks:
+      - kupi-mk-network
+    restart: unless-stopped
+
+volumes:
+  postgres_data:
+  backend_uploads:
+
+networks:
+  kupi-mk-network:
+    driver: bridge
Index: kupi-mk/docker-setup-smart.sh
===================================================================
--- kupi-mk/docker-setup-smart.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/docker-setup-smart.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,196 @@
+#!/bin/bash
+
+# Kupi.mk Docker Setup Script with Port Conflict Resolution
+set -e
+
+echo "🚀 Setting up Kupi.mk with Docker (with port conflict resolution)..."
+
+# Function to check if port is in use
+check_port() {
+    local port=$1
+    if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
+        return 0 # Port is in use
+    else
+        return 1 # Port is free
+    fi
+}
+
+# Function to find next available port
+find_available_port() {
+    local start_port=$1
+    local port=$start_port
+    while check_port $port; do
+        ((port++))
+        if [ $port -gt $((start_port + 100)) ]; then
+            echo "❌ Could not find available port after checking 100 ports starting from $start_port"
+            exit 1
+        fi
+    done
+    echo $port
+}
+
+# Check and resolve port conflicts
+echo "🔍 Checking for port conflicts..."
+
+# Check PostgreSQL port (5432)
+if check_port 5432; then
+    echo "⚠️  Port 5432 is in use (probably by existing PostgreSQL)"
+    echo "   Using port 5433 for Docker PostgreSQL instead"
+    DB_PORT=5433
+else
+    echo "✅ Port 5432 is available"
+    DB_PORT=5432
+fi
+
+# Check Backend port (5001)
+if check_port 5001; then
+    BACKEND_PORT=$(find_available_port 5002)
+    echo "⚠️  Port 5001 is in use, using port $BACKEND_PORT instead"
+else
+    echo "✅ Port 5001 is available"
+    BACKEND_PORT=5001
+fi
+
+# Check Frontend port (3000)
+if check_port 3000; then
+    FRONTEND_PORT=$(find_available_port 3001)
+    echo "⚠️  Port 3000 is in use, using port $FRONTEND_PORT instead"
+else
+    echo "✅ Port 3000 is available"
+    FRONTEND_PORT=3000
+fi
+
+# Create dynamic docker-compose.yml with available ports
+echo "📝 Creating docker-compose.yml with available ports..."
+cat > docker-compose.dynamic.yml << EOF
+version: '3.8'
+
+services:
+  postgres:
+    image: postgres:15-alpine
+    container_name: kupi-mk-postgres
+    environment:
+      POSTGRES_DB: kupi_mk
+      POSTGRES_USER: admin
+      POSTGRES_PASSWORD: password123
+    ports:
+      - "$DB_PORT:5432"
+    volumes:
+      - postgres_data:/var/lib/postgresql/data
+      - ./database_setup.sql:/docker-entrypoint-initdb.d/01-setup.sql
+      - ./database_updates_cart_reviews.sql:/docker-entrypoint-initdb.d/02-updates.sql
+    healthcheck:
+      test: ["CMD-SHELL", "pg_isready -U admin -d kupi_mk"]
+      interval: 10s
+      timeout: 5s
+      retries: 5
+    networks:
+      - kupi-mk-network
+
+  backend:
+    build: 
+      context: ./backend
+      dockerfile: Dockerfile
+    container_name: kupi-mk-backend
+    environment:
+      NODE_ENV: production
+      PORT: 5001
+      DB_HOST: postgres
+      DB_PORT: 5432
+      DB_NAME: kupi_mk
+      DB_USER: admin
+      DB_PASSWORD: password123
+      JWT_SECRET: your-super-secret-jwt-key-change-this-in-production
+    ports:
+      - "$BACKEND_PORT:5001"
+    depends_on:
+      postgres:
+        condition: service_healthy
+    volumes:
+      - backend_uploads:/app/uploads
+    networks:
+      - kupi-mk-network
+    restart: unless-stopped
+
+  frontend:
+    build:
+      context: ./frontend
+      dockerfile: Dockerfile
+    container_name: kupi-mk-frontend
+    ports:
+      - "$FRONTEND_PORT:80"
+    depends_on:
+      - backend
+    networks:
+      - kupi-mk-network
+    restart: unless-stopped
+
+volumes:
+  postgres_data:
+  backend_uploads:
+
+networks:
+  kupi-mk-network:
+    driver: bridge
+EOF
+
+# Check Docker installation
+if ! command -v docker &> /dev/null; then
+    echo "❌ Docker is not installed. Please install Docker first."
+    exit 1
+fi
+
+if ! command -v docker-compose &> /dev/null; then
+    echo "❌ Docker Compose is not installed. Please install Docker Compose first."
+    exit 1
+fi
+
+# Create environment files if they don't exist
+if [ ! -f "backend/.env" ]; then
+    echo "📝 Creating backend .env file..."
+    cp backend/.env.docker backend/.env
+fi
+
+if [ ! -f "frontend/.env" ]; then
+    echo "📝 Creating frontend .env file..."
+    # Update frontend .env with correct backend URL
+    cat > frontend/.env << EOF
+REACT_APP_API_URL=http://localhost:$BACKEND_PORT/api
+REACT_APP_BACKEND_URL=http://localhost:$BACKEND_PORT
+GENERATE_SOURCEMAP=false
+EOF
+fi
+
+# Clean up any existing containers
+echo "🧹 Cleaning up existing containers..."
+docker-compose -f docker-compose.dynamic.yml down --remove-orphans 2>/dev/null || true
+docker rm -f kupi-mk-postgres kupi-mk-backend kupi-mk-frontend 2>/dev/null || true
+
+# Build and start containers
+echo "🏗️  Building and starting containers..."
+docker-compose -f docker-compose.dynamic.yml up --build -d
+
+# Wait for services to be ready
+echo "⏳ Waiting for services to be ready..."
+sleep 30
+
+# Check if services are running
+if docker-compose -f docker-compose.dynamic.yml ps | grep -q "Up"; then
+    echo "✅ Services are running!"
+    echo ""
+    echo "🌐 Application URLs:"
+    echo "   Frontend: http://localhost:$FRONTEND_PORT"
+    echo "   Backend API: http://localhost:$BACKEND_PORT"
+    echo "   Database: localhost:$DB_PORT"
+    echo ""
+    echo "📊 To view logs:"
+    echo "   docker-compose -f docker-compose.dynamic.yml logs -f"
+    echo ""
+    echo "🛑 To stop:"
+    echo "   docker-compose -f docker-compose.dynamic.yml down"
+    echo ""
+    echo "💡 The dynamic compose file 'docker-compose.dynamic.yml' has been created with your available ports"
+else
+    echo "❌ Some services failed to start. Check logs with:"
+    echo "   docker-compose -f docker-compose.dynamic.yml logs"
+fi
Index: kupi-mk/docker-setup.sh
===================================================================
--- kupi-mk/docker-setup.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/docker-setup.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+# Kupi.mk Docker Setup Script
+# This script sets up the entire application with Docker
+
+set -e
+
+echo "🚀 Setting up Kupi.mk with Docker..."
+
+# Check if Docker and Docker Compose are installed
+if ! command -v docker &> /dev/null; then
+    echo "❌ Docker is not installed. Please install Docker first."
+    exit 1
+fi
+
+if ! command -v docker-compose &> /dev/null; then
+    echo "❌ Docker Compose is not installed. Please install Docker Compose first."
+    exit 1
+fi
+
+# Create environment files if they don't exist
+if [ ! -f "backend/.env" ]; then
+    echo "📝 Creating backend .env file..."
+    cp backend/.env.docker backend/.env
+fi
+
+if [ ! -f "frontend/.env" ]; then
+    echo "📝 Creating frontend .env file..."
+    cp frontend/.env.docker frontend/.env
+fi
+
+# Stop any existing containers
+echo "🛑 Stopping existing containers..."
+docker-compose down --remove-orphans 2>/dev/null || true
+
+# Clean up any existing containers with the same name
+echo "🧹 Cleaning up existing containers..."
+docker rm -f kupi-mk-postgres kupi-mk-backend kupi-mk-frontend 2>/dev/null || true
+
+# Build and start containers
+echo "🏗️  Building and starting containers..."
+docker-compose up --build -d
+
+# Wait for services to be ready
+echo "⏳ Waiting for services to be ready..."
+sleep 30
+
+# Check if services are running
+if docker-compose ps | grep -q "Up"; then
+    echo "✅ Services are running!"
+    echo ""
+    echo "🌐 Application URLs:"
+    echo "   Frontend: http://localhost:3000"
+    echo "   Backend API: http://localhost:5001"
+    echo "   Database: localhost:5433 (external port changed to avoid conflicts)"
+    echo ""
+    echo "📊 To view logs:"
+    echo "   docker-compose logs -f"
+    echo ""
+    echo "🛑 To stop:"
+    echo "   docker-compose down"
+else
+    echo "❌ Some services failed to start. Check logs with:"
+    echo "   docker-compose logs"
+fi
Index: kupi-mk/frontend/.dockerignore
===================================================================
--- kupi-mk/frontend/.dockerignore	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/frontend/.dockerignore	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,16 @@
+# .dockerignore for frontend
+node_modules
+build
+npm-debug.log*
+.git
+.gitignore
+README.md
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+.cache
+.DS_Store
+.vscode
+.idea
+*.log
Index: kupi-mk/frontend/.env.docker
===================================================================
--- kupi-mk/frontend/.env.docker	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/frontend/.env.docker	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,6 @@
+# React App Configuration for Docker
+REACT_APP_API_URL=http://localhost:5001/api
+REACT_APP_BACKEND_URL=http://localhost:5001
+
+# Build Configuration
+GENERATE_SOURCEMAP=false
Index: kupi-mk/frontend/Dockerfile
===================================================================
--- kupi-mk/frontend/Dockerfile	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/frontend/Dockerfile	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,31 @@
+# Build stage
+FROM node:18-alpine AS builder
+
+WORKDIR /app
+
+# Copy package files
+COPY package*.json ./
+
+# Install all dependencies (including dev dependencies for build)
+RUN npm ci
+
+# Copy source code
+COPY . .
+
+# Build the application
+RUN npm run build
+
+# Production stage
+FROM nginx:alpine
+
+# Copy built application from builder stage
+COPY --from=builder /app/build /usr/share/nginx/html
+
+# Copy custom nginx configuration
+COPY nginx.conf /etc/nginx/conf.d/default.conf
+
+# Expose port
+EXPOSE 80
+
+# Start nginx
+CMD ["nginx", "-g", "daemon off;"]
Index: kupi-mk/frontend/nginx.conf
===================================================================
--- kupi-mk/frontend/nginx.conf	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/frontend/nginx.conf	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,26 @@
+server {
+    listen 80;
+    server_name localhost;
+    root /usr/share/nginx/html;
+    index index.html;
+
+    # Handle client-side routing
+    location / {
+        try_files $uri $uri/ /index.html;
+    }
+
+    # Enable gzip compression
+    gzip on;
+    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+    # Cache static assets
+    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
+        expires 1y;
+        add_header Cache-Control "public, no-transform";
+    }
+
+    # Security headers
+    add_header X-Frame-Options "SAMEORIGIN" always;
+    add_header X-Content-Type-Options "nosniff" always;
+    add_header X-XSS-Protection "1; mode=block" always;
+}
Index: kupi-mk/frontend/src/context/AuthContext.js
===================================================================
--- kupi-mk/frontend/src/context/AuthContext.js	(revision bfc4bbc3a64bdafba2745cc5cc1af602bae674ec)
+++ kupi-mk/frontend/src/context/AuthContext.js	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -73,4 +73,9 @@
   };
 
+  const updateUser = (userData) => {
+    setUser(userData);
+    localStorage.setItem('user', JSON.stringify(userData));
+  };
+
   const value = {
     user,
@@ -79,4 +84,5 @@
     logout,
     isAuthenticated,
+    updateUser,
     loading
   };
Index: kupi-mk/frontend/src/pages/Profile.js
===================================================================
--- kupi-mk/frontend/src/pages/Profile.js	(revision bfc4bbc3a64bdafba2745cc5cc1af602bae674ec)
+++ kupi-mk/frontend/src/pages/Profile.js	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -5,5 +5,5 @@
 
 const Profile = () => {
-  const { user, setUser } = useAuth();
+  const { user, updateUser } = useAuth();
   const navigate = useNavigate();
   const [userProducts, setUserProducts] = useState([]);
@@ -95,5 +95,5 @@
     try {
       const response = await api.put('/users/profile', editForm);
-      setUser(response.data);
+      updateUser(response.data);
       setIsEditModalOpen(false);
       alert('Профилот е успешно ажуриран!');
@@ -114,5 +114,5 @@
       try {
         const response = await api.patch('/users/become-seller');
-        setUser(response.data);
+        updateUser(response.data);
         alert('Успешно станавте продавач!');
       } catch (error) {
Index: kupi-mk/test-docker.sh
===================================================================
--- kupi-mk/test-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
+++ kupi-mk/test-docker.sh	(revision 00628fb98ac38f1e1fbdd26925e1498095325603)
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# Test Docker setup script
+echo "🧪 Testing Kupi.mk Docker setup..."
+
+# Test if containers are running
+if docker-compose ps | grep -q "Up"; then
+    echo "✅ Containers are running"
+else
+    echo "❌ Containers are not running"
+    exit 1
+fi
+
+# Test backend health
+echo "🔍 Testing backend..."
+if curl -f http://localhost:5001/api/products > /dev/null 2>&1; then
+    echo "✅ Backend is responding"
+else
+    echo "❌ Backend is not responding"
+fi
+
+# Test frontend
+echo "🔍 Testing frontend..."
+if curl -f http://localhost:3000 > /dev/null 2>&1; then
+    echo "✅ Frontend is accessible"
+else
+    echo "❌ Frontend is not accessible"
+fi
+
+# Test database
+echo "🔍 Testing database..."
+if docker-compose exec -T postgres pg_isready -U admin -d kupi_mk > /dev/null 2>&1; then
+    echo "✅ Database is ready"
+else
+    echo "❌ Database is not ready"
+fi
+
+echo "🎉 Docker setup test completed!"
