Index: ckend/app/admin.py
===================================================================
--- backend/app/admin.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,3 +1,0 @@
-from django.contrib import admin
-
-# Register your models here.
Index: ckend/app/apps.py
===================================================================
--- backend/app/apps.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,6 +1,0 @@
-from django.apps import AppConfig
-
-
-class AppConfig(AppConfig):
-    default_auto_field = 'django.db.models.BigAutoField'
-    name = 'app'
Index: ckend/app/migrations/0001_initial.py
===================================================================
--- backend/app/migrations/0001_initial.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,49 +1,0 @@
-# Generated by Django 5.1.7 on 2025-04-19 13:10
-
-import django.contrib.postgres.fields
-import django.db.models.deletion
-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()),
-                ('abstract', models.TextField()),
-            ],
-            options={
-                'db_table': 'subject',
-            },
-        ),
-        migrations.CreateModel(
-            name='Subject_Info',
-            fields=[
-                ('subject', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='app.subject')),
-                ('level', models.IntegerField()),
-                ('short', models.TextField(blank=True, null=True)),
-                ('prerequisite', models.TextField(blank=True, null=True)),
-                ('activated', models.BooleanField()),
-                ('participants', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True), size=None)),
-                ('mandatory', models.BooleanField()),
-                ('mandatory_for', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None)),
-                ('semester', models.IntegerField()),
-                ('season', models.TextField()),
-                ('elective_for', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None)),
-                ('professors', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None)),
-                ('assistants', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True), size=None)),
-            ],
-            options={
-                'db_table': 'subject_info',
-            },
-        ),
-    ]
Index: ckend/app/migrations/0002_alter_subject_info_assistants_and_more.py
===================================================================
--- backend/app/migrations/0002_alter_subject_info_assistants_and_more.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,34 +1,0 @@
-# Generated by Django 5.1.7 on 2025-04-19 13:20
-
-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_info',
-            name='assistants',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), size=None),
-        ),
-        migrations.AlterField(
-            model_name='subject_info',
-            name='elective_for',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=16), size=None),
-        ),
-        migrations.AlterField(
-            model_name='subject_info',
-            name='mandatory_for',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=16), size=None),
-        ),
-        migrations.AlterField(
-            model_name='subject_info',
-            name='professors',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), size=None),
-        ),
-    ]
Index: ckend/app/models.py
===================================================================
--- backend/app/models.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,42 +1,0 @@
-from django.db import models
-from django.contrib.postgres.fields import ArrayField
-
-# to access subject_info for a subject use subject.subject_info.<optional_field>
-# to access subject from subject_info use subject_info.subject.<optional_field>
-
-class Subject(models.Model):
-    name = models.TextField(null=False)
-    code = models.TextField(null=False)
-    abstract = models.TextField()
-
-    def __str__(self):
-        return f"{self.code} - {self.name}"
-    
-    class Meta:
-        db_table = "subject"
-
-class Subject_Info(models.Model):
-    subject = models.OneToOneField(
-        Subject,
-        on_delete=models.CASCADE,
-        primary_key=True
-    )
-
-    level = models.IntegerField(null=False)
-    short = models.TextField(blank=True, null=True)
-    prerequisite = models.TextField(blank=True, null=True)
-    activated = models.BooleanField(null=False)
-    participants = ArrayField(models.IntegerField(blank=True))
-    mandatory = models.BooleanField(null=False)
-    mandatory_for = ArrayField(models.CharField(max_length=16, blank=True))
-    semester = models.IntegerField(null=False)
-    season = models.TextField(null=False)
-    elective_for = ArrayField(models.CharField(max_length=16, blank=True))
-    professors = ArrayField(models.CharField(max_length=64, blank=True))
-    assistants = ArrayField(models.CharField(max_length=64, blank=True))
-
-    def __str__(self):
-        return f"Subject info for {self.subject.name}"
-
-    class Meta:
-        db_table = 'subject_info'
Index: ckend/app/tests.py
===================================================================
--- backend/app/tests.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,3 +1,0 @@
-from django.test import TestCase
-
-# Create your tests here.
Index: ckend/app/views.py
===================================================================
--- backend/app/views.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ 	(revision )
@@ -1,25 +1,0 @@
-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_Info, Subject
-
-# Create your views here.
-def index(request):
-    return HttpResponse("ok")
-
-
-def test_api(request):
-    all_subjects = Subject.objects.all()
-    all_subjects_info = Subject_Info.objects.all()
-
-    all_subjects_list = list(all_subjects.values())  
-    all_subjects_info_list = list(all_subjects_info.values())  
-
-    for subject, subject_info in zip(all_subjects_list, all_subjects_info_list):
-        subject["info"] = subject_info
-
-    json_data = json.dumps({"rows": all_subjects_list[:177]})
-    
-    return JsonResponse(json.loads(json_data), safe=False)
Index: backend/backend/settings.py
===================================================================
--- backend/backend/settings.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ backend/backend/settings.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -40,5 +40,5 @@
     'django.contrib.messages',
     'django.contrib.staticfiles',
-    'app'
+    'subjects'
 ]
 
Index: backend/backend/urls.py
===================================================================
--- backend/backend/urls.py	(revision a10b60907c41d700da6d0812c47d4152b26794d4)
+++ backend/backend/urls.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -17,9 +17,9 @@
 from django.contrib import admin
 from django.urls import path
-from app.views import index,test_api
+from subjects.views import index,all_subjects
 
 urlpatterns = [
     path('admin/', admin.site.urls),
-    path('api/', test_api),
+    path('subjects/', all_subjects),
     path('', index),
 ]
Index: backend/subjects/admin.py
===================================================================
--- backend/subjects/admin.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
+++ backend/subjects/admin.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
Index: backend/subjects/apps.py
===================================================================
--- backend/subjects/apps.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
+++ backend/subjects/apps.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AppConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'subjects'
Index: backend/subjects/models.py
===================================================================
--- backend/subjects/models.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
+++ backend/subjects/models.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -0,0 +1,42 @@
+from django.db import models
+from django.contrib.postgres.fields import ArrayField
+
+# to access subject_info for a subject use subject.subject_info.<optional_field>
+# to access subject from subject_info use subject_info.subject.<optional_field>
+
+class Subject(models.Model):
+    name = models.TextField(null=False)
+    code = models.TextField(null=False)
+    abstract = models.TextField()
+
+    def __str__(self):
+        return f"{self.code} - {self.name}"
+    
+    class Meta:
+        db_table = "subject"
+
+class Subject_Info(models.Model):
+    subject = models.OneToOneField(
+        Subject,
+        on_delete=models.CASCADE,
+        primary_key=True
+    )
+
+    level = models.IntegerField(null=False)
+    short = models.TextField(blank=True, null=True)
+    prerequisite = models.TextField(blank=True, null=True)
+    activated = models.BooleanField(null=False)
+    participants = ArrayField(models.IntegerField(blank=True))
+    mandatory = models.BooleanField(null=False)
+    mandatory_for = ArrayField(models.CharField(max_length=16, blank=True))
+    semester = models.IntegerField(null=False)
+    season = models.TextField(null=False)
+    elective_for = ArrayField(models.CharField(max_length=16, blank=True))
+    professors = ArrayField(models.CharField(max_length=64, blank=True))
+    assistants = ArrayField(models.CharField(max_length=64, blank=True))
+
+    def __str__(self):
+        return f"Subject info for {self.subject.name}"
+
+    class Meta:
+        db_table = 'subject_info'
Index: backend/subjects/tests.py
===================================================================
--- backend/subjects/tests.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
+++ backend/subjects/tests.py	(revision 613c3509b5e55b20717d4e829f9ed21c3ee79854)
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
