diff --git a/mysite/db.sqlite3 b/mysite/db.sqlite3
index 974c5e166f6b93251f10bc9a0ddf5e87c5a80de3..8ec908c4e378dfe884c1eb99c603a9cbf7f79871 100644
Binary files a/mysite/db.sqlite3 and b/mysite/db.sqlite3 differ
diff --git a/mysite/media/products/armband.jpg b/mysite/media/products/armband.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d685db123bea21375d335401ba961dc131b7a91d
Binary files /dev/null and b/mysite/media/products/armband.jpg differ
diff --git a/mysite/media/products/potato.jpg b/mysite/media/products/potato.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..53ecf645de65738daab938c0ee70414dbb0eb302
Binary files /dev/null and b/mysite/media/products/potato.jpg differ
diff --git a/mysite/mysite/__pycache__/settings.cpython-312.pyc b/mysite/mysite/__pycache__/settings.cpython-312.pyc
index 636a975437a4c92337e3427375783ccd3a816f72..8994de667dd7457f89959557cc6e0213c496f231 100644
Binary files a/mysite/mysite/__pycache__/settings.cpython-312.pyc and b/mysite/mysite/__pycache__/settings.cpython-312.pyc differ
diff --git a/mysite/mysite/__pycache__/urls.cpython-312.pyc b/mysite/mysite/__pycache__/urls.cpython-312.pyc
index 438bd7d557730105f8813189aed3f0a5e77d45d2..32930c4eb834a3e24c29f93581dad29dd2cacb3e 100644
Binary files a/mysite/mysite/__pycache__/urls.cpython-312.pyc and b/mysite/mysite/__pycache__/urls.cpython-312.pyc differ
diff --git a/mysite/mysite/settings.py b/mysite/mysite/settings.py
index f5063d18db57b58cf84e7d15bc6c9b05fa12c52c..dbc97c1bbf49cb1f416894145c53c58f2f3f5224 100644
--- a/mysite/mysite/settings.py
+++ b/mysite/mysite/settings.py
@@ -43,12 +43,15 @@ INSTALLED_APPS = [
     "django.contrib.sessions",
     "django.contrib.messages",
     "django.contrib.staticfiles",
-    "themeApp"
+    "themeApp",
+    'rest_framework',
+    'corsheaders'
 ]
 
 MIDDLEWARE = [
     "django.middleware.security.SecurityMiddleware",
     "django.contrib.sessions.middleware.SessionMiddleware",
+    'corsheaders.middleware.CorsMiddleware',
     "django.middleware.common.CommonMiddleware",
     "django.middleware.csrf.CsrfViewMiddleware",
     "django.contrib.auth.middleware.AuthenticationMiddleware",
@@ -128,3 +131,12 @@ STATIC_URL = "static/"
 # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
 
 DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
+
+
+#CORS_ALLOWED_ORIGINS = [
+#    "http://localhost:8000",0
+    # Add other allowed origins here
+#]*/
+
+CORS_ALLOW_ALL_ORIGINS = True
+# but not recommended
\ No newline at end of file
diff --git a/mysite/mysite/urls.py b/mysite/mysite/urls.py
index c4cdb8cb41708b1e4be3f85461c7b946f56350e1..484d157442db3b755418769f797d6919538508df 100644
--- a/mysite/mysite/urls.py
+++ b/mysite/mysite/urls.py
@@ -18,8 +18,15 @@ Including another URLconf
 from django.contrib import admin
 from django.urls import path, include
 
+from django.conf import settings
+from django.conf.urls.static import static
+
 urlpatterns = [
     path('admin/', admin.site.urls),
     path('polls/', include('polls.urls')),  # Include the URLs from the polls app
     path('themeApp/', include('themeApp.urls')),  # Include the URLs from the themeApp app
-]
\ No newline at end of file
+  #  path('/', include('themeApp.urls')),
+]
+
+if settings.DEBUG:
+    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
\ No newline at end of file
diff --git a/mysite/themeApp/__pycache__/admin.cpython-312.pyc b/mysite/themeApp/__pycache__/admin.cpython-312.pyc
index 32119b6c6cc50c70efb6907865869651a7ea57e1..fbe8f2a237fc31df8b92baccb87644133134def4 100644
Binary files a/mysite/themeApp/__pycache__/admin.cpython-312.pyc and b/mysite/themeApp/__pycache__/admin.cpython-312.pyc differ
diff --git a/mysite/themeApp/__pycache__/serializers.cpython-312.pyc b/mysite/themeApp/__pycache__/serializers.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..382e09ac021b03532c5108db1fbe434b588aa307
Binary files /dev/null and b/mysite/themeApp/__pycache__/serializers.cpython-312.pyc differ
diff --git a/mysite/themeApp/__pycache__/urls.cpython-312.pyc b/mysite/themeApp/__pycache__/urls.cpython-312.pyc
index 91274d110a9427ccc5704c70042a7de523ef00b5..8079493aad844ed284f4dc18ec37339e5b3dd5af 100644
Binary files a/mysite/themeApp/__pycache__/urls.cpython-312.pyc and b/mysite/themeApp/__pycache__/urls.cpython-312.pyc differ
diff --git a/mysite/themeApp/__pycache__/views.cpython-312.pyc b/mysite/themeApp/__pycache__/views.cpython-312.pyc
index 1b0663520ea562de66185c401b16962ce57bcd94..37ae501e3bd67f39f097208fa619116022f7cd79 100644
Binary files a/mysite/themeApp/__pycache__/views.cpython-312.pyc and b/mysite/themeApp/__pycache__/views.cpython-312.pyc differ
diff --git a/mysite/themeApp/admin.py b/mysite/themeApp/admin.py
index c8127a27064975690f17f228e8505a6959c8e294..4423e5b9b77e4702b6826aad3786ebd08aa1fbc0 100644
--- a/mysite/themeApp/admin.py
+++ b/mysite/themeApp/admin.py
@@ -1,4 +1,4 @@
 from django.contrib import admin
 from .models import Product
 # Register your models here.
-admin.site.register(Product)
\ No newline at end of file
+admin.site.register(Product)
diff --git a/mysite/themeApp/migrations/0002_category.py b/mysite/themeApp/migrations/0002_category.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff2d2adbc5dbff9544b292a4861fbdd939ccff28
--- /dev/null
+++ b/mysite/themeApp/migrations/0002_category.py
@@ -0,0 +1,20 @@
+# Generated by Django 5.0.6 on 2024-05-21 15:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('themeApp', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Category',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=100)),
+            ],
+        ),
+    ]
diff --git a/mysite/themeApp/migrations/__pycache__/0002_category.cpython-312.pyc b/mysite/themeApp/migrations/__pycache__/0002_category.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f2c893bb569843c6cd44e621be8aca0d02250615
Binary files /dev/null and b/mysite/themeApp/migrations/__pycache__/0002_category.cpython-312.pyc differ
diff --git a/mysite/themeApp/serializers.py b/mysite/themeApp/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..cbb7c93f290837be63b075e725c0d253fae97457
--- /dev/null
+++ b/mysite/themeApp/serializers.py
@@ -0,0 +1,8 @@
+# myapp/serializers.py
+from rest_framework import serializers
+from .models import Product
+
+class ProductSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Product
+        fields = '__all__'
diff --git a/mysite/themeApp/urls.py b/mysite/themeApp/urls.py
index 8fe2ca2f087045fc91c461276d51d7099a284c31..58fa4e91468095fd5d0923ff22604d47c0bdcf8b 100644
--- a/mysite/themeApp/urls.py
+++ b/mysite/themeApp/urls.py
@@ -1,15 +1,11 @@
-from django.urls import path
-from django.conf.urls.static import static
-from django.conf import settings
-from . import views
+# myapp/urls.py
+from django.urls import path, include
+from rest_framework.routers import DefaultRouter
+from .views import ProductViewSet
 
-from django.urls import path
-from . import views
+router = DefaultRouter()
+router.register(r'products', ProductViewSet)
 
 urlpatterns = [
-    path('', views.home, name='home'),  # The view for the root URL of the themeApp
-    # Add other URL patterns as needed
+    path('', include(router.urls)),
 ]
-
-if settings.DEBUG:
-    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
\ No newline at end of file
diff --git a/mysite/themeApp/views.py b/mysite/themeApp/views.py
index e29268a6149182cc5e6b5cde209034813f8408bc..ca456411cffbc4b24297586677875c660f493387 100644
--- a/mysite/themeApp/views.py
+++ b/mysite/themeApp/views.py
@@ -1,8 +1,10 @@
-from django.http import HttpResponse
+# myapp/views.py
+from rest_framework import viewsets
+from .models import Product
+from .serializers import ProductSerializer
 
-# Create your views here.
+class ProductViewSet(viewsets.ModelViewSet):
+    queryset = Product.objects.all()
+    serializer_class = ProductSerializer
 
-from django.http import HttpResponse
 
-def home(request):
-    return HttpResponse("Welcome to the themeApp home page.")
\ No newline at end of file
diff --git a/theme-costume-app/package-lock.json b/theme-costume-app/package-lock.json
index 863750e870c60c21b55df235c3caaae94d831ee9..37d78eab603732be70223beb2f1de7467dabda1e 100644
--- a/theme-costume-app/package-lock.json
+++ b/theme-costume-app/package-lock.json
@@ -15,6 +15,7 @@
         "@testing-library/jest-dom": "^5.17.0",
         "@testing-library/react": "^13.4.0",
         "@testing-library/user-event": "^13.5.0",
+        "axios": "^1.7.1",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-router-dom": "^6.22.3",
@@ -5925,6 +5926,29 @@
         "node": ">=4"
       }
     },
+    "node_modules/axios": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.1.tgz",
+      "integrity": "sha512-+LV37nQcd1EpFalkXksWNBiA17NZ5m5/WspmHGmZmdx1qBOg/VNq/c4eRJiA9VQQHBOs+N0ZhhdU10h2TyNK7Q==",
+      "dependencies": {
+        "follow-redirects": "^1.15.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/axios/node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/axobject-query": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
@@ -15350,6 +15374,11 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
     "node_modules/psl": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
diff --git a/theme-costume-app/package.json b/theme-costume-app/package.json
index a32b663c2d738119b7fe2c04dadb5fdd82b698c7..7037ae1ade3448ef7fba67ae0b0f128e9f52ad12 100644
--- a/theme-costume-app/package.json
+++ b/theme-costume-app/package.json
@@ -10,6 +10,7 @@
     "@testing-library/jest-dom": "^5.17.0",
     "@testing-library/react": "^13.4.0",
     "@testing-library/user-event": "^13.5.0",
+    "axios": "^1.7.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "react-router-dom": "^6.22.3",
diff --git a/theme-costume-app/src/App.js b/theme-costume-app/src/App.js
index 20e0c8a48a837a1ac181bb4033febc2cc3a1afa9..599c40f27c3ceae4812f1c1f1fdcae03d20d5f63 100644
--- a/theme-costume-app/src/App.js
+++ b/theme-costume-app/src/App.js
@@ -4,6 +4,7 @@ import Home from './Home';
 import About from './About';
 import Profile from './Profile';
 import Charts from './Charts';
+import Dashboard from './Dashboard';
 import ResponsiveAppBar from './components/ResponsiveAppBar';
 
 function App() {
@@ -32,6 +33,7 @@ function App() {
           <Route path="/" element={<Home />} />
           <Route path="/news" element={<About />} />
           <Route path="/Topplistan" element={<Charts />} />
+          <Route path="/dashboard" element={<Dashboard />} />
 
         </Routes>  
       </div>
diff --git a/theme-costume-app/src/Dashboard.js b/theme-costume-app/src/Dashboard.js
new file mode 100644
index 0000000000000000000000000000000000000000..a3446eac830b13d51cdc4b1fac3082ee710e9e7b
--- /dev/null
+++ b/theme-costume-app/src/Dashboard.js
@@ -0,0 +1,56 @@
+import React, { useEffect, useState } from 'react';
+import axios from 'axios';
+
+function ProductsPage() {
+    const [products, setProducts] = useState([]);
+    const [loading, setLoading] = useState(true);
+    const [error, setError] = useState(null);
+
+    useEffect(() => {
+        axios.get('http://127.0.0.1:8000/themeApp/products/')  // Replace with your Django API endpoint
+            .then(response => {
+                setProducts(response.data);
+                setLoading(false);
+            })
+            .catch(error => {
+                setError(error);
+                setLoading(false);
+            });
+    }, []);
+
+    if (loading) return <p>Loading...</p>;
+    if (error) return <p>Error loading products: {error.message}</p>;
+
+    return (
+        <div style={{ padding: '20px' }}>
+            <h1 style={{ fontSize: '24px', marginBottom: '20px' }}>Products</h1>
+            <ul style={{ listStyleType: 'none', padding: 0 }}>
+                {products.map(product => (
+                    <li key={product.id} style={{ 
+                        fontSize: '18px', 
+                        padding: '10px', 
+                        marginBottom: '10px', 
+                        border: '1px solid #ccc', 
+                        borderRadius: '4px', 
+                        cursor: 'pointer',
+                        transition: 'box-shadow 0.3s ease-in-out',
+                        display: 'flex',
+                        alignItems: 'center'
+                    }}
+                    onMouseEnter={(e) => {
+                        e.currentTarget.style.boxShadow = '0 0 20px rgba(0, 0, 0, 0.35)';
+                    }}
+                    onMouseLeave={(e) => {
+                        e.currentTarget.style.boxShadow = 'none';
+                    }}
+                    >
+                        <img src={product.image} alt={product.name} style={{ width: '50px', height: '50px', marginRight: '10px', borderRadius: '4px' }} />
+                        {product.name}
+                    </li>
+                ))}
+            </ul>
+        </div>
+    );
+}
+
+export default ProductsPage;