diff --git a/ai/__pycache__/__init__.cpython-311.pyc b/ai/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..8bcb2fb
Binary files /dev/null and b/ai/__pycache__/__init__.cpython-311.pyc differ
diff --git a/ai/__pycache__/local_ai_api.cpython-311.pyc b/ai/__pycache__/local_ai_api.cpython-311.pyc
new file mode 100644
index 0000000..fa9977d
Binary files /dev/null and b/ai/__pycache__/local_ai_api.cpython-311.pyc differ
diff --git a/assets/pasted-20251119-223636-11a12b2c.png b/assets/pasted-20251119-223636-11a12b2c.png
new file mode 100644
index 0000000..9347d63
Binary files /dev/null and b/assets/pasted-20251119-223636-11a12b2c.png differ
diff --git a/assets/pasted-20251119-224750-5fe94e0e.png b/assets/pasted-20251119-224750-5fe94e0e.png
new file mode 100644
index 0000000..a7cabea
Binary files /dev/null and b/assets/pasted-20251119-224750-5fe94e0e.png differ
diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc
index c9de752..f0c2919 100644
Binary files a/core/__pycache__/models.cpython-311.pyc and b/core/__pycache__/models.cpython-311.pyc differ
diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc
index 1918799..ef076c1 100644
Binary files a/core/__pycache__/urls.cpython-311.pyc and b/core/__pycache__/urls.cpython-311.pyc differ
diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc
index f722d6b..4ffdee9 100644
Binary files a/core/__pycache__/views.cpython-311.pyc and b/core/__pycache__/views.cpython-311.pyc differ
diff --git a/core/migrations/0004_conversation_message.py b/core/migrations/0004_conversation_message.py
new file mode 100644
index 0000000..0ab77e8
--- /dev/null
+++ b/core/migrations/0004_conversation_message.py
@@ -0,0 +1,32 @@
+# Generated by Django 5.2.7 on 2025-11-19 22:34
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('core', '0003_todoitem_description_todoitem_tags'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Conversation',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=200)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Message',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', models.TextField()),
+ ('is_from_user', models.BooleanField(default=True)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='core.conversation')),
+ ],
+ ),
+ ]
diff --git a/core/migrations/__pycache__/0004_conversation_message.cpython-311.pyc b/core/migrations/__pycache__/0004_conversation_message.cpython-311.pyc
new file mode 100644
index 0000000..8fae4d9
Binary files /dev/null and b/core/migrations/__pycache__/0004_conversation_message.cpython-311.pyc differ
diff --git a/core/models.py b/core/models.py
index aee7a5b..424eaaf 100644
--- a/core/models.py
+++ b/core/models.py
@@ -24,3 +24,19 @@ class TodoItem(models.Model):
def __str__(self):
return self.title
+
+class Conversation(models.Model):
+ title = models.CharField(max_length=200)
+ created_at = models.DateTimeField(auto_now_add=True)
+
+ def __str__(self):
+ return self.title
+
+class Message(models.Model):
+ conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE, related_name='messages')
+ content = models.TextField()
+ is_from_user = models.BooleanField(default=True)
+ created_at = models.DateTimeField(auto_now_add=True)
+
+ def __str__(self):
+ return f"Message from {'User' if self.is_from_user else 'AI'} at {self.created_at}"
\ No newline at end of file
diff --git a/core/templates/base.html b/core/templates/base.html
index ce24be9..905e789 100644
--- a/core/templates/base.html
+++ b/core/templates/base.html
@@ -15,17 +15,20 @@