Index: .gitignore
===================================================================
--- .gitignore	(revision fc9ca5d7afe3a568196cc585c0d3e246aa88f0a6)
+++ .gitignore	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -14,4 +14,6 @@
 instance/
 
+./backend/wait-for-db.sh
+.backend/.idea
 
 # VS Code / IDE
@@ -70,4 +72,5 @@
 # Local env files
 .env
+backend/.env
 .env.*
 
Index: backend/Dockerfile
===================================================================
--- backend/Dockerfile	(revision fc9ca5d7afe3a568196cc585c0d3e246aa88f0a6)
+++ backend/Dockerfile	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -6,4 +6,6 @@
 #     gcc \
 #     && rm -rf /var/lib/apt/lists/*
+RUN apt-get update && apt-get install -y postgresql-client
+
 
 COPY requirements.txt .
@@ -14,3 +16,5 @@
 EXPOSE 8000
 
+RUN chmod +x wait-for-db.sh
+
 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Index: backend/backend/settings.py
===================================================================
--- backend/backend/settings.py	(revision fc9ca5d7afe3a568196cc585c0d3e246aa88f0a6)
+++ backend/backend/settings.py	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -12,4 +12,5 @@
 
 from pathlib import Path
+from decouple import config
 
 # Build paths inside the project like this: BASE_DIR / 'subdir'.
@@ -79,9 +80,12 @@
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': BASE_DIR / 'db.sqlite3',
+        'ENGINE': 'django.db.backends.postgresql',
+        'NAME': config('DB_NAME'),
+        'USER': config('DB_USER'),
+        'PASSWORD': config('DB_PASS'),
+        'HOST': config('DB_HOST'),
+        'PORT': config('DB_PORT'),
     }
 }
-
 
 # Password validation
Index: backend/requirements.txt
===================================================================
--- backend/requirements.txt	(revision fc9ca5d7afe3a568196cc585c0d3e246aa88f0a6)
+++ backend/requirements.txt	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -7,2 +7,5 @@
 pip==25.0.1
 pipreqs==0.4.13
+psycopg-binary==3.2.6
+python-decouple>=3.8
+psycopg2-binary>=2.9.10
Index: backend/wait-for-db.sh
===================================================================
--- backend/wait-for-db.sh	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
+++ backend/wait-for-db.sh	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+
+host="$1"
+port="$2"
+shift 2
+cmd="$@"
+
+# Wait until PostgreSQL is ready
+until PGPASSWORD="$DB_PASS" psql -h "$host" -p "$port" -U "$DB_USER" -d "$DB_NAME" -c '\q'; do
+  >&2 echo "Postgres is unavailable - sleeping"
+  sleep 1
+done
+
+>&2 echo "Postgres is up - executing command"
+exec $cmd
Index: docker-compose.yml
===================================================================
--- docker-compose.yml	(revision fc9ca5d7afe3a568196cc585c0d3e246aa88f0a6)
+++ docker-compose.yml	(revision dc4d51d4f618e72cad58b44118f371f35b8e8d45)
@@ -10,7 +10,13 @@
     ports:
       - "8000:8000"
+    env_file:
+      - ./backend/.env # Load environment variables from the .env file
     environment:
       - DEBUG=True
-    command: python manage.py runserver 0.0.0.0:8000
+      - DB_HOST=db
+      - DB_PORT=5432
+    command: ./wait-for-db.sh db 5432 python manage.py runserver 0.0.0.0:8000
+    depends_on:
+      - db
     networks:
       - app-network
@@ -32,5 +38,19 @@
       - app-network
 
+  db:
+    image: postgres:13
+    environment:
+      - POSTGRES_DB=${DB_NAME}
+      - POSTGRES_USER=${DB_USER}
+      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+    volumes:
+      - postgres-data:/var/lib/postgresql/data
+    networks:
+      - app-network
+
 networks:
   app-network:
     driver: bridge
+
+volumes:
+  postgres-data:
