Index: backend/app/migrations/0001_initial.py
===================================================================
--- backend/app/migrations/0001_initial.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
+++ backend/app/migrations/0001_initial.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
@@ -0,0 +1,39 @@
+# Generated by Django 5.1.7 on 2025-04-18 16:32
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Subject',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.TextField()),
+                ('code', models.TextField()),
+                ('level', models.IntegerField()),
+                ('short', models.TextField(blank=True, null=True)),
+                ('prerequisite', models.TextField(blank=True, null=True)),
+                ('activated', models.BooleanField()),
+                ('e_2024_2025', models.IntegerField(blank=True, null=True)),
+                ('e_2023_2024', models.IntegerField(blank=True, null=True)),
+                ('e_2022_2023', models.IntegerField(blank=True, null=True)),
+                ('mandatory', models.BooleanField()),
+                ('mandatoryfor', models.JSONField(blank=True, default=list)),
+                ('semester', models.IntegerField()),
+                ('season', models.TextField()),
+                ('electivefor', models.JSONField(blank=True, default=list)),
+                ('professors', models.JSONField(blank=True, default=list)),
+                ('assistants', models.JSONField(blank=True, default=list)),
+            ],
+            options={
+                'db_table': 'subjectdata',
+            },
+        ),
+    ]
Index: backend/app/migrations/0002_alter_subject_assistants_alter_subject_electivefor_and_more.py
===================================================================
--- backend/app/migrations/0002_alter_subject_assistants_alter_subject_electivefor_and_more.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
+++ backend/app/migrations/0002_alter_subject_assistants_alter_subject_electivefor_and_more.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
@@ -0,0 +1,34 @@
+# Generated by Django 5.1.7 on 2025-04-18 17:34
+
+import django.contrib.postgres.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='subject',
+            name='assistants',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None),
+        ),
+        migrations.AlterField(
+            model_name='subject',
+            name='electivefor',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None),
+        ),
+        migrations.AlterField(
+            model_name='subject',
+            name='mandatoryfor',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None),
+        ),
+        migrations.AlterField(
+            model_name='subject',
+            name='professors',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None),
+        ),
+    ]
Index: backend/app/models.py
===================================================================
--- backend/app/models.py	(revision be4422a27cef942ba1134b618c7a1160e6c44522)
+++ backend/app/models.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
@@ -1,3 +1,26 @@
 from django.db import models
+from django.contrib.postgres.fields import ArrayField
 
-# Create your models here.
+class Subject(models.Model):
+    name = models.TextField(null=False)
+    code = models.TextField(null=False)
+    level = models.IntegerField(null=False)
+    short = models.TextField(blank=True, null=True)
+    prerequisite = models.TextField(blank=True, null=True)
+    activated = models.BooleanField(null=False)
+    e_2024_2025 = models.IntegerField(blank=True, null=True)
+    e_2023_2024 = models.IntegerField(blank=True, null=True)
+    e_2022_2023 = models.IntegerField(blank=True, null=True)
+    mandatory = models.BooleanField(null=False)
+    mandatoryfor = ArrayField(models.CharField(blank=True))
+    semester = models.IntegerField(null=False)
+    season = models.TextField(null=False)
+    electivefor = ArrayField(models.CharField(blank=True))
+    professors = ArrayField(models.CharField(blank=True))
+    assistants = ArrayField(models.CharField(blank=True))
+
+    def __str__(self):
+        return f"{self.code} - {self.name}"
+
+    class Meta:
+        db_table = 'subjectdata'
Index: backend/app/views.py
===================================================================
--- backend/app/views.py	(revision be4422a27cef942ba1134b618c7a1160e6c44522)
+++ backend/app/views.py	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
@@ -1,4 +1,8 @@
+import json
 from django.http import HttpResponse, JsonResponse
 from django.shortcuts import render
+from django.db import connection
+from django.core import serializers
+from .models import Subject
 
 # Create your views here.
@@ -6,4 +10,9 @@
     return HttpResponse("ok")
 
+
 def test_api(request):
-    return JsonResponse({"message": "hello world"})
+    subjects = Subject.objects.all()
+    subjects_data = list(subjects.values())  
+    json_data = json.dumps({"rows": subjects_data})
+    
+    return JsonResponse(json.loads(json_data), safe=False)
Index: frontend/src/Home.tsx
===================================================================
--- frontend/src/Home.tsx	(revision be4422a27cef942ba1134b618c7a1160e6c44522)
+++ frontend/src/Home.tsx	(revision fd21ab677700a338f9ed25144fcbae96f675a38e)
@@ -1,17 +1,62 @@
 import { useEffect, useState } from "react";
 
+const subject_values = [
+	"id",
+	"name",
+	"code",
+	"level",
+	"short",
+	"prerequisite",
+	"activated",
+	"e_2024_2025",
+	"e_2023_2024",
+	"e_2022_2023",
+	"mandatory",
+	"mandatoryfor",
+	"semester",
+	"season",
+	"electivefor",
+	"professors",
+	"assistants",
+];
+
 function Home() {
-	const [data, setData] = useState("");
+	const [data, setData] = useState<any[]>([]);
+	const [isLoaded, setIsLoaded] = useState(false);
 	useEffect(() => {
 		const fetchData = async () => {
 			const response = await fetch("http://localhost:8000/api");
 			const data = await response.json();
-			console.log(data);
-			setData(data.message);
+			setData(data.rows);
+			setIsLoaded(true);
 		};
 		fetchData();
 	}, []);
 
-	return <>{data == "" ? <p>Loading....</p> : <p>{data}</p>}</>;
+	return !isLoaded ? (
+		<p>Loading...</p>
+	) : (
+		<>
+			{data.slice(0, 10).map((item) => {
+				return (
+					<div>
+						<ul>
+							{subject_values.map((header) => {
+								return Array.isArray(item[header]) ? (
+									<li>
+										{header}: {item[header].join(", ")}
+									</li>
+								) : (
+									<li key={header}>
+										{header}: {item[header]}
+									</li>
+								);
+							})}
+						</ul>
+					</div>
+				);
+			})}
+		</>
+	);
 }
 
