Index: kupi-mk/DATABASE_SHARING.md
===================================================================
--- kupi-mk/DATABASE_SHARING.md	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/DATABASE_SHARING.md	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,137 @@
+# Database Sharing Guide
+
+This guide explains how to share your database with team members for the kupi-mk project.
+
+## 🎯 Quick Start
+
+### For the Person Sharing the Database:
+1. **Export your current database:**
+   ```bash
+   cd kupi-mk
+   node scripts/export-database.js
+   ```
+
+2. **Commit the export to Git:**
+   ```bash
+   git add database-exports/latest-export.sql
+   git commit -m "Add latest database export"
+   git push
+   ```
+
+### For Team Members Getting the Database:
+1. **Pull the latest changes:**
+   ```bash
+   git pull
+   ```
+
+2. **Import the database:**
+   ```bash
+   cd kupi-mk
+   node scripts/import-database.js
+   ```
+
+## 📋 Detailed Instructions
+
+### Setting Up Your Database (First Time)
+
+1. **Install PostgreSQL** (if not already installed)
+2. **Create the database and user:**
+   ```sql
+   CREATE DATABASE kupi_mk;
+   CREATE USER admin WITH PASSWORD 'password123';
+   GRANT ALL PRIVILEGES ON DATABASE kupi_mk TO admin;
+   ```
+
+3. **Import the shared database:**
+   ```bash
+   node scripts/import-database.js
+   ```
+
+### Exporting Your Database
+
+When you want to share your current database state:
+
+```bash
+# Export current database
+node scripts/export-database.js
+
+# The script creates two files:
+# - database-exports/database-export-[timestamp].sql (timestamped backup)
+# - database-exports/latest-export.sql (for easy sharing)
+```
+
+### Importing a Database
+
+To get the latest shared database:
+
+```bash
+# Import the latest export
+node scripts/import-database.js
+
+# Or import a specific export file
+node scripts/import-database.js database-export-2025-01-15T10-30-00-000Z.sql
+```
+
+## 🔄 Workflow for Team Collaboration
+
+### Daily Workflow:
+1. **Start of day:** `git pull` and `node scripts/import-database.js`
+2. **Work on your features**
+3. **End of day (if you added data):** `node scripts/export-database.js` and commit
+
+### When Someone Adds Important Data:
+1. **Data creator:** Export and commit the database
+2. **Team members:** Pull and import the new database
+
+## 📁 File Structure
+
+```
+kupi-mk/
+├── scripts/
+│   ├── export-database.js    # Export script
+│   └── import-database.js    # Import script
+├── database-exports/
+│   ├── latest-export.sql     # Always the newest export
+│   └── database-export-*.sql # Timestamped backups
+└── database_setup.sql        # Original schema
+```
+
+## ⚠️ Important Notes
+
+1. **Always backup before importing** - The import script will DELETE existing data
+2. **Images are NOT included** - Only database records are shared
+3. **Coordinate with your team** - Avoid conflicting exports
+4. **Test data only** - Don't use this for production databases
+
+## 🚨 Troubleshooting
+
+### Connection Issues:
+```bash
+# Make sure PostgreSQL is running
+sudo systemctl status postgresql
+
+# Check if you can connect
+psql -U admin -d kupi_mk -h localhost
+```
+
+### Permission Issues:
+```bash
+# Make sure scripts are executable
+chmod +x scripts/*.js
+```
+
+### Missing Dependencies:
+```bash
+# Install required packages
+npm install
+```
+
+## 🎉 Alternative: Using Docker (Advanced)
+
+For even easier sharing, you can use Docker:
+
+1. **Create a docker-compose.yml** with your database
+2. **Share the entire Docker setup**
+3. **Team members just run `docker-compose up`**
+
+This ensures everyone has the exact same environment!
Index: kupi-mk/backend/server.js
===================================================================
--- kupi-mk/backend/server.js	(revision a8705a654b3e61259c4923770fa2cf0925582d5b)
+++ kupi-mk/backend/server.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -16,17 +16,27 @@
 app.use(helmet({
   crossOriginResourcePolicy: { policy: "cross-origin" },
+  crossOriginOpenerPolicy: { policy: "same-origin-allow-popups" },
+  crossOriginEmbedderPolicy: false,
   contentSecurityPolicy: {
     directives: {
       defaultSrc: ["'self'"],
-      imgSrc: ["'self'", "data:", "http://localhost:3000", "http://localhost:5000"],
+      imgSrc: ["'self'", "data:", "*"],
       styleSrc: ["'self'", "'unsafe-inline'", "https:"],
       fontSrc: ["'self'", "https:", "data:"],
+      connectSrc: ["'self'", "*"],
     },
   },
 }));
+// Debug middleware to log CORS requests
+app.use((req, res, next) => {
+  console.log(`🌐 Request from: ${req.headers.origin || 'no origin'} to ${req.url}`);
+  next();
+});
+
+// Simple CORS - allow all origins
 app.use(cors({
-  origin: ['http://localhost:3000', 'http://127.0.0.1:3000'],
-  credentials: true,
-  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
+  origin: '*', // Allow all origins
+  credentials: false, // Set to false when using wildcard
+  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
   allowedHeaders: ['Content-Type', 'Authorization'],
 }));
@@ -61,7 +71,8 @@
 });
 
-app.listen(PORT, async () => {
+app.listen(PORT, '0.0.0.0', async () => {
   console.log(`🚀 Kupi.mk server running on port ${PORT}`);
   console.log(`🌍 Environment: ${process.env.NODE_ENV}`);
+  console.log(`📡 Server accessible at: http://localhost:${PORT} and http://192.168.100.162:${PORT}`);
   
   // Connect to database
Index: kupi-mk/database-exports/.gitignore
===================================================================
--- kupi-mk/database-exports/.gitignore	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/database-exports/.gitignore	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,5 @@
+# Track only the latest export for easy sharing
+database-export-*.sql
+
+# Keep the latest export for team sharing
+!latest-export.sql
Index: kupi-mk/database-exports/latest-export.sql
===================================================================
--- kupi-mk/database-exports/latest-export.sql	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/database-exports/latest-export.sql	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,81 @@
+-- Database Schema Export\n-- Generated on: 2025-09-13T09:20:04.834Z\n\n-- Database setup script for Kupi.mk
+-- Run this after creating the database and user (admin/password123)
+
+-- Create users table
+CREATE TABLE IF NOT EXISTS users (
+    id SERIAL PRIMARY KEY,
+    username VARCHAR(50) UNIQUE NOT NULL,
+    email VARCHAR(100) UNIQUE NOT NULL,
+    password VARCHAR(255) NOT NULL,
+    first_name VARCHAR(50) NOT NULL,
+    last_name VARCHAR(50) NOT NULL,
+    phone VARCHAR(20),
+    address TEXT,
+    is_seller BOOLEAN DEFAULT false,
+    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+-- Create categories table
+CREATE TABLE IF NOT EXISTS categories (
+    id SERIAL PRIMARY KEY,
+    name VARCHAR(100) UNIQUE NOT NULL,
+    description TEXT,
+    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+-- Create products table
+CREATE TABLE IF NOT EXISTS products (
+    id SERIAL PRIMARY KEY,
+    title VARCHAR(200) NOT NULL,
+    description TEXT NOT NULL,
+    price DECIMAL(10,2) NOT NULL,
+    category_id INTEGER REFERENCES categories(id),
+    seller_id INTEGER REFERENCES users(id),
+    images TEXT[],
+    stock_quantity INTEGER DEFAULT 0,
+    location VARCHAR(100),
+    is_active BOOLEAN DEFAULT true,
+    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+-- Insert default categories
+INSERT INTO categories (name, description) VALUES 
+('Електроника', 'Мобилни телефони, лаптопи, таблети и друга електроника'),
+('Облека и мода', 'Машка и женска облека, чевли, додатоци'),
+('Дом и градина', 'Мебел, декорации, алатки за градина'),
+('Спорт и рекреација', 'Спортска опрема, фитнес, активности на отворено'),
+('Книги и медија', 'Книги, филмови, музика, игри'),
+('Возила', 'Автомобили, мотори, делови'),
+('Убавина и здравје', 'Козметика, парфеми, здравствени производи'),
+('Храна и пијалаци', 'Свежа храна, органски производи, локални специјалитети')
+ON CONFLICT (name) DO NOTHING;
+
+-- Create indexes for better performance
+CREATE INDEX IF NOT EXISTS idx_products_category ON products(category_id);
+CREATE INDEX IF NOT EXISTS idx_products_seller ON products(seller_id);
+CREATE INDEX IF NOT EXISTS idx_products_active ON products(is_active);
+CREATE INDEX IF NOT EXISTS idx_products_created ON products(created_at DESC);
+\n\n-- Users Data\nDELETE FROM users;\nINSERT INTO users (id, username, email, password, first_name, last_name, phone, address, is_seller, created_at, updated_at) VALUES (1, 'Alek', 'aleksandar.grozdanoski@students.finki.ukim.mk', '$2a$10$Mu2BRi5IYogtWbI5oG0d1eNrnA77zhrebhB4K8dyk8WszNO1AeMTS', 'Aleksandar', 'Grozdanoski', '+389 111 111 111', 'Test 11', true, '2025-07-08T15:31:19.026Z', '2025-07-08T15:31:19.026Z');\nINSERT INTO users (id, username, email, password, first_name, last_name, phone, address, is_seller, created_at, updated_at) VALUES (2, 'Финки', 'aleksandar.grozdanoski@gmail.com', '$2a$10$W96h4qhsXSE6SaOwKQTcBOuHejL8MTw7/noFxUcSUrBWPV7OQc9Y6', 'Александар', 'Грозданоски', '+389 77 728 802', 'Karposh', true, '2025-07-10T14:48:38.036Z', '2025-07-10T14:48:38.036Z');\n\n-- Categories Data\nDELETE FROM categories;\nINSERT INTO categories (id, name, description, created_at) VALUES (1, 'Електроника', 'Телефони, лаптопи, компјутери', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (2, 'Облека', 'Машка, женска и детска облека', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (3, 'Дом и градина', 'Мебел, декорации, алатки', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (4, 'Спорт и рекреација', 'Спортска опрема и додатоци', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (5, 'Книги и музика', 'Книги, CD-а, винили', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (6, 'Автомобили', 'Возила и авто делови', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (7, 'Храна и пијалоци', 'Локални производи', '2025-07-08T15:23:29.408Z');\nINSERT INTO categories (id, name, description, created_at) VALUES (8, 'Убавина и здравје', 'Козметика и здравствени производи', '2025-07-08T15:23:29.408Z');\n\n-- Products Data\nDELETE FROM products;\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (1, 'ASUS TUF Gaming F16 Gaming Laptop', ' About this item
+
+    READY FOR ANYTHING – Dive headfirst into gaming on Windows 11 powered by the Intel Core 5 210H processor and an NVIDIA GeForce RTX 4050 laptop GPU with a Max TGP of 115W and NVIDIA Advanced Optimus.
+    SUBTLE STYLING – The TUF Gaming F16 maintains its classic design, boasting a subtle embossed TUF logo on its sleek cover.
+    IMMERSIVE VISUALS – The TUF Gaming F16’s FHD 144Hz display with 100% sRGB color draws you into the action. Adaptive-Sync technology reduces lag, minimizes stuttering, and eliminates visual tearing for ultra-smooth gameplay.
+    MILITARY GRADE DURABILITY – As a TUF gaming machine, the F16 has been rigorously tested to meet Military Grade testing standard, MIL-STD-810H. Rest easy knowing this laptop will operate at peak performance in harsh conditions.
+    EFFICIENT COOLING – Equipped with Arc Flow Fans, 4 exhaust vents, 5 dedicated heat pipes, and an anti-dust filter, the TUF Gaming F16 optimizes cooling performance without extra noise.
+    AUDIO EXCELLENCE – Elevate your audio experience with Dolby Atmos and Hi-Res Audio on the TUF Gaming F16.
+    XBOX GAME PASS ULTIMATE – Get a free 90-day pass and gain access to over 100 high-quality games. With games added all the time, there’s always something new to play.
+', 30000.00, 1, 1, ARRAY['/uploads/products/images-1751989170759-623412890.jpg', '/uploads/products/images-1751989170761-868673686.jpg', '/uploads/products/images-1751989170763-257960560.jpg'], 2, 'Skopje', true, '2025-07-08T15:39:30.825Z', '2025-07-08T15:39:30.825Z');\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (2, 'Plant Based Cold Process Natural Bar Soap For Face And Body, With Premium Essential Oils, For Men And Women 3 Pack (Vanilla Orange)', '
+    PREMIUM QUALITY: Traditional Cold Process Soap. Made by hand in Canada using 100% plant based and all natural ingredients. All natural aromas from premium essential oils and all natural colorants exclusively from minerals, clays and plant extracts.
+    CLEAN & HEALTHY SKIN: Olive Oil, Coconut Oil, Shea Butter, Avocado Oil and Kaolin Clay leave your skin feeling nourished AND clean!
+    NEVER SYNTHETIC: Our proprietary scents and colors are achieved exclusively from Premium Essential Oils and 100% Natural Clays, Minerals and Plant Extracts. NO phthalates, NO parabens, NO sulfates, NO silicones, NO micas or oxides, NO dyes.
+    SUSTAINABLE AT OUR CORE: All ingredients are sourced sustainably and packaged in recycled kraft paperboard. Our products leave nothing but paper behind!
+    THOUGHTFUL GIFT: Crate 61 Hand Made Traditional Bar Soaps make for a great gift! Choose from 15 scents and counting!
+', 3000.00, 8, 1, ARRAY['/uploads/products/images-1752078188118-651572011.jpg', '/uploads/products/images-1752078188127-900106182.jpg', '/uploads/products/images-1752078188130-341642272.jpg'], 2, 'Skopje, Gjorce', false, '2025-07-09T16:05:48.797Z', '2025-07-09T16:23:08.139Z');\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (3, 'Dietz & Watson Kosher Pickles', 'Домашни кисели краставички тегла 300', 200.00, 7, 1, ARRAY['/uploads/products/images-1752077533009-579481821.jpg', '/uploads/products/images-1752077533014-946225510.jpg', '/uploads/products/images-1752077533017-203334489.jpg'], 100, 'Prilep', true, '2025-07-09T16:12:13.037Z', '2025-07-09T16:12:13.037Z');\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (4, 'Flash Furniture Elon Series Plastic Modern Dining Chair with Wooden Legs, Mid-Century Modern Accent Chair for Dining Rooms and Offices, White ', 'По два се продаваат', 3000.00, 3, 1, ARRAY['/uploads/products/images-1752077720088-739770947.jpg', '/uploads/products/images-1752077720090-136112412.jpg', '/uploads/products/images-1752077720091-665653731.jpg'], 10, 'Skpje, Gazibaba', true, '2025-07-09T16:15:20.112Z', '2025-07-09T16:15:20.112Z');\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (5, 'Рачно направен сапун', '
+    PREMIUM QUALITY: Traditional Cold Process Soap. Made by hand in Canada using 100% plant based and all natural ingredients. All natural aromas from premium essential oils and all natural colorants exclusively from minerals, clays and plant extracts.
+    CLEAN & HEALTHY SKIN: Olive Oil, Coconut Oil, Shea Butter, Avocado Oil and Kaolin Clay leave your skin feeling nourished AND clean!
+    NEVER SYNTHETIC: Our proprietary scents and colors are achieved exclusively from Premium Essential Oils and 100% Natural Clays, Minerals and Plant Extracts. NO phthalates, NO parabens, NO sulfates, NO silicones, NO micas or oxides, NO dyes.
+    SUSTAINABLE AT OUR CORE: All ingredients are sourced sustainably and packaged in recycled kraft paperboard. Our products leave nothing but paper behind!
+    THOUGHTFUL GIFT: Crate 61 Hand Made Traditional Bar Soaps make for a great gift! Choose from 15 scents and counting!
+', 3000.00, 8, 1, ARRAY['/uploads/products/images-1752078337413-720452194.jpg', '/uploads/products/images-1752078337420-342447963.jpg', '/uploads/products/images-1752078337422-266048273.jpg'], 2, 'Bitola', true, '2025-07-09T16:25:37.440Z', '2025-07-09T16:25:37.440Z');\nINSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (7, 'Сет лажички', '5 лажици', 700.00, 3, 2, ARRAY['/uploads/products/images-1752160993750-904970899.jpg', '/uploads/products/images-1752160993756-316550375.jpg'], 10, 'Скопје, Карпош', true, '2025-07-10T15:23:13.796Z', '2025-07-10T15:23:13.796Z');\n\n-- Reset sequences\nSELECT setval('users_id_seq', (SELECT MAX(id) FROM users));\nSELECT setval('categories_id_seq', (SELECT MAX(id) FROM categories));\nSELECT setval('products_id_seq', (SELECT MAX(id) FROM products));\n
Index: kupi-mk/frontend/src/config/api.js
===================================================================
--- kupi-mk/frontend/src/config/api.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/frontend/src/config/api.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,42 @@
+// Dynamic API configuration that works on any device
+const getServerBaseUrl = () => {
+  // In production, use environment variable or default
+  if (process.env.NODE_ENV === 'production') {
+    return process.env.REACT_APP_API_URL?.replace('/api', '') || 'http://localhost:5000';
+  }
+
+  // In development, automatically detect the correct IP
+  const hostname = window.location.hostname;
+  
+  if (hostname === 'localhost' || hostname === '127.0.0.1') {
+    // If accessing via localhost, use localhost for API too
+    return 'http://localhost:5000';
+  } else {
+    // If accessing via network IP, use the same IP for API
+    return `http://${hostname}:5000`;
+  }
+};
+
+export const SERVER_BASE_URL = getServerBaseUrl();
+export const API_BASE_URL = `${SERVER_BASE_URL}/api`;
+
+// Debug logging
+console.log('🔧 Dynamic API Configuration:');
+console.log(`  Current hostname: ${window.location.hostname}`);
+console.log(`  SERVER_BASE_URL: ${SERVER_BASE_URL}`);
+console.log(`  API_BASE_URL: ${API_BASE_URL}`);
+
+export const getImageUrl = (imagePath) => {
+  if (!imagePath) return '/placeholder-image.svg';
+  
+  // If it's already a full URL, return as is
+  if (imagePath.startsWith('http')) return imagePath;
+  
+  // If it starts with /, add the backend URL
+  if (imagePath.startsWith('/')) {
+    return `${SERVER_BASE_URL}${imagePath}`;
+  }
+  
+  // Otherwise assume it's a relative path
+  return `${SERVER_BASE_URL}/uploads/products/${imagePath}`;
+};
Index: kupi-mk/frontend/stop-servers.sh
===================================================================
--- kupi-mk/frontend/stop-servers.sh	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/frontend/stop-servers.sh	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,18 @@
+#!/bin/bash
+echo "🛑 Stopping all Kupi.mk servers..."
+
+# Kill by port
+echo "🔍 Killing processes on ports 3000, 5000, 5001, 5002..."
+lsof -ti:3000 | xargs kill -9 2>/dev/null
+lsof -ti:5000 | xargs kill -9 2>/dev/null
+lsof -ti:5001 | xargs kill -9 2>/dev/null
+lsof -ti:5002 | xargs kill -9 2>/dev/null
+
+# Kill by process name
+echo "🔍 Killing Node.js processes..."
+pkill -f "npm run dev" 2>/dev/null
+pkill -f "npm start" 2>/dev/null
+pkill -f "react-scripts" 2>/dev/null
+pkill -f "nodemon" 2>/dev/null
+
+echo "✅ All servers stopped!"
Index: kupi-mk/package-lock.json
===================================================================
--- kupi-mk/package-lock.json	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/package-lock.json	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,345 @@
+{
+  "name": "kupi-mk-root",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "kupi-mk-root",
+      "version": "1.0.0",
+      "license": "MIT",
+      "devDependencies": {
+        "concurrently": "^7.6.0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+      "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/chalk/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+      "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/concurrently": {
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz",
+      "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "date-fns": "^2.29.1",
+        "lodash": "^4.17.21",
+        "rxjs": "^7.0.0",
+        "shell-quote": "^1.7.3",
+        "spawn-command": "^0.0.2-1",
+        "supports-color": "^8.1.0",
+        "tree-kill": "^1.2.2",
+        "yargs": "^17.3.1"
+      },
+      "bin": {
+        "conc": "dist/bin/concurrently.js",
+        "concurrently": "dist/bin/concurrently.js"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
+      }
+    },
+    "node_modules/date-fns": {
+      "version": "2.30.0",
+      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+      "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "^7.21.0"
+      },
+      "engines": {
+        "node": ">=0.11"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/date-fns"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/escalade": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "7.8.2",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+      "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.1.0"
+      }
+    },
+    "node_modules/shell-quote": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+      "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/spawn-command": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
+      "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
+      "dev": true
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
+    "node_modules/tree-kill": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+      "dev": true,
+      "bin": {
+        "tree-kill": "cli.js"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "17.7.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+      "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^8.0.1",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.3",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^21.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    }
+  }
+}
Index: kupi-mk/scripts/export-database.js
===================================================================
--- kupi-mk/scripts/export-database.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/scripts/export-database.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,140 @@
+#!/usr/bin/env node
+
+const { Pool } = require('pg');
+const fs = require('fs');
+const path = require('path');
+
+// Database configuration
+const pool = new Pool({
+  host: process.env.DB_HOST || 'localhost',
+  port: process.env.DB_PORT || 5432,
+  database: process.env.DB_NAME || 'kupi_mk',
+  user: process.env.DB_USER || 'admin',
+  password: process.env.DB_PASSWORD || 'password123',
+});
+
+async function exportDatabase() {
+  const client = await pool.connect();
+  
+  try {
+    console.log('🔄 Starting database export...');
+    
+    // Create exports directory if it doesn't exist
+    const exportsDir = path.join(__dirname, '../database-exports');
+    if (!fs.existsSync(exportsDir)) {
+      fs.mkdirSync(exportsDir, { recursive: true });
+    }
+    
+    // Export schema (table structure)
+    console.log('📋 Exporting schema...');
+    
+    let schemaSQL = "-- Database Schema Export\\n-- Generated on: " + new Date().toISOString() + "\\n\\n";
+    
+    // Add the original schema from database_setup.sql
+    const setupSQL = fs.readFileSync(path.join(__dirname, '../database_setup.sql'), 'utf8');
+    schemaSQL += setupSQL + "\\n\\n";
+    
+    // Export data
+    console.log('📊 Exporting data...');
+    
+    // Export users
+    const usersResult = await client.query('SELECT * FROM users ORDER BY id');
+    schemaSQL += "-- Users Data\\n";
+    schemaSQL += "DELETE FROM users;\\n";
+    for (const user of usersResult.rows) {
+      const values = [
+        user.id,
+        `'${user.username.replace(/'/g, "''")}'`,
+        `'${user.email.replace(/'/g, "''")}'`,
+        `'${user.password.replace(/'/g, "''")}'`,
+        `'${user.first_name.replace(/'/g, "''")}'`,
+        `'${user.last_name.replace(/'/g, "''")}'`,
+        user.phone ? `'${user.phone.replace(/'/g, "''")}'` : 'NULL',
+        user.address ? `'${user.address.replace(/'/g, "''")}'` : 'NULL',
+        user.is_seller,
+        `'${user.created_at.toISOString()}'`,
+        `'${user.updated_at.toISOString()}'`
+      ].join(', ');
+      
+      schemaSQL += `INSERT INTO users (id, username, email, password, first_name, last_name, phone, address, is_seller, created_at, updated_at) VALUES (${values});\\n`;
+    }
+    
+    // Export categories
+    const categoriesResult = await client.query('SELECT * FROM categories ORDER BY id');
+    schemaSQL += "\\n-- Categories Data\\n";
+    schemaSQL += "DELETE FROM categories;\\n";
+    for (const category of categoriesResult.rows) {
+      const values = [
+        category.id,
+        `'${category.name.replace(/'/g, "''")}'`,
+        category.description ? `'${category.description.replace(/'/g, "''")}'` : 'NULL',
+        `'${category.created_at.toISOString()}'`
+      ].join(', ');
+      
+      schemaSQL += `INSERT INTO categories (id, name, description, created_at) VALUES (${values});\\n`;
+    }
+    
+    // Export products
+    const productsResult = await client.query('SELECT * FROM products ORDER BY id');
+    schemaSQL += "\\n-- Products Data\\n";
+    schemaSQL += "DELETE FROM products;\\n";
+    for (const product of productsResult.rows) {
+      const imagesArray = product.images ? `ARRAY[${product.images.map(img => `'${img.replace(/'/g, "''")}'`).join(', ')}]` : 'NULL';
+      const values = [
+        product.id,
+        `'${product.title.replace(/'/g, "''")}'`,
+        `'${product.description.replace(/'/g, "''")}'`,
+        product.price,
+        product.category_id || 'NULL',
+        product.seller_id,
+        imagesArray,
+        product.stock_quantity || 0,
+        product.location ? `'${product.location.replace(/'/g, "''")}'` : 'NULL',
+        product.is_active,
+        `'${product.created_at.toISOString()}'`,
+        `'${product.updated_at.toISOString()}'`
+      ].join(', ');
+      
+      schemaSQL += `INSERT INTO products (id, title, description, price, category_id, seller_id, images, stock_quantity, location, is_active, created_at, updated_at) VALUES (${values});\\n`;
+    }
+    
+    // Reset sequences
+    schemaSQL += "\\n-- Reset sequences\\n";
+    schemaSQL += "SELECT setval('users_id_seq', (SELECT MAX(id) FROM users));\\n";
+    schemaSQL += "SELECT setval('categories_id_seq', (SELECT MAX(id) FROM categories));\\n";
+    schemaSQL += "SELECT setval('products_id_seq', (SELECT MAX(id) FROM products));\\n";
+    
+    // Write to file
+    const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
+    const filename = `database-export-${timestamp}.sql`;
+    const filepath = path.join(exportsDir, filename);
+    
+    fs.writeFileSync(filepath, schemaSQL);
+    
+    // Also create a latest export for easy access
+    fs.writeFileSync(path.join(exportsDir, 'latest-export.sql'), schemaSQL);
+    
+    console.log('✅ Database exported successfully!');
+    console.log(`📁 Export saved to: ${filepath}`);
+    console.log(`📁 Latest export: ${path.join(exportsDir, 'latest-export.sql')}`);
+    
+    // Show statistics
+    console.log('\\n📊 Export Statistics:');
+    console.log(`👥 Users: ${usersResult.rows.length}`);
+    console.log(`📂 Categories: ${categoriesResult.rows.length}`);
+    console.log(`📦 Products: ${productsResult.rows.length}`);
+    
+  } catch (error) {
+    console.error('❌ Export failed:', error);
+  } finally {
+    client.release();
+    await pool.end();
+  }
+}
+
+// Run export if called directly
+if (require.main === module) {
+  exportDatabase();
+}
+
+module.exports = { exportDatabase };
Index: kupi-mk/scripts/import-database.js
===================================================================
--- kupi-mk/scripts/import-database.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
+++ kupi-mk/scripts/import-database.js	(revision 7e266178b50727346a82a51f7eb256e68c1941da)
@@ -0,0 +1,95 @@
+#!/usr/bin/env node
+
+const { Pool } = require('pg');
+const fs = require('fs');
+const path = require('path');
+
+// Database configuration
+const pool = new Pool({
+  host: process.env.DB_HOST || 'localhost',
+  port: process.env.DB_PORT || 5432,
+  database: process.env.DB_NAME || 'kupi_mk',
+  user: process.env.DB_USER || 'admin',
+  password: process.env.DB_PASSWORD || 'password123',
+});
+
+async function importDatabase(filename = 'latest-export.sql') {
+  const client = await pool.connect();
+  
+  try {
+    console.log('🔄 Starting database import...');
+    
+    // Check if file exists
+    const exportsDir = path.join(__dirname, '../database-exports');
+    const filepath = path.join(exportsDir, filename);
+    
+    if (!fs.existsSync(filepath)) {
+      console.error(`❌ File not found: ${filepath}`);
+      console.log('Available files:');
+      if (fs.existsSync(exportsDir)) {
+        const files = fs.readdirSync(exportsDir).filter(f => f.endsWith('.sql'));
+        files.forEach(file => console.log(`  - ${file}`));
+      }
+      return;
+    }
+    
+    console.log(`📁 Reading file: ${filepath}`);
+    const sqlContent = fs.readFileSync(filepath, 'utf8');
+    
+    // Split into individual statements and execute
+    const statements = sqlContent
+      .split(';')
+      .map(stmt => stmt.trim())
+      .filter(stmt => stmt.length > 0 && !stmt.startsWith('--'));
+    
+    console.log(`📝 Executing ${statements.length} SQL statements...`);
+    
+    // Begin transaction
+    await client.query('BEGIN');
+    
+    try {
+      for (let i = 0; i < statements.length; i++) {
+        const statement = statements[i];
+        if (statement.trim()) {
+          await client.query(statement);
+          if ((i + 1) % 10 === 0) {
+            console.log(`   Processed ${i + 1}/${statements.length} statements...`);
+          }
+        }
+      }
+      
+      // Commit transaction
+      await client.query('COMMIT');
+      
+      console.log('✅ Database imported successfully!');
+      
+      // Show statistics
+      const usersCount = await client.query('SELECT COUNT(*) FROM users');
+      const categoriesCount = await client.query('SELECT COUNT(*) FROM categories');
+      const productsCount = await client.query('SELECT COUNT(*) FROM products');
+      
+      console.log('\\n📊 Import Statistics:');
+      console.log(`👥 Users: ${usersCount.rows[0].count}`);
+      console.log(`📂 Categories: ${categoriesCount.rows[0].count}`);
+      console.log(`📦 Products: ${productsCount.rows[0].count}`);
+      
+    } catch (error) {
+      await client.query('ROLLBACK');
+      throw error;
+    }
+    
+  } catch (error) {
+    console.error('❌ Import failed:', error.message);
+  } finally {
+    client.release();
+    await pool.end();
+  }
+}
+
+// Run import if called directly
+if (require.main === module) {
+  const filename = process.argv[2] || 'latest-export.sql';
+  importDatabase(filename);
+}
+
+module.exports = { importDatabase };
