diff --git a/blogger_project/blogger/__init__.py b/blogger_project/blogger/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/blogger_project/blogger/admin.py b/blogger_project/blogger/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/blogger_project/blogger/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/blogger_project/blogger/apps.py b/blogger_project/blogger/apps.py
new file mode 100644
index 0000000..311c38e
--- /dev/null
+++ b/blogger_project/blogger/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class BloggerConfig(AppConfig):
+ name = 'blogger'
diff --git a/blogger_project/blogger/forms.py b/blogger_project/blogger/forms.py
new file mode 100644
index 0000000..c8f155f
--- /dev/null
+++ b/blogger_project/blogger/forms.py
@@ -0,0 +1,8 @@
+from django import forms
+from .models import Post
+
+
+class PostForm(forms.ModelForm):
+ class Meta:
+ model = Post
+ fields = ['title', 'content', 'image', 'author', 'is_published']
\ No newline at end of file
diff --git a/blogger_project/blogger/migrations/0001_initial.py b/blogger_project/blogger/migrations/0001_initial.py
new file mode 100644
index 0000000..a993ea8
--- /dev/null
+++ b/blogger_project/blogger/migrations/0001_initial.py
@@ -0,0 +1,24 @@
+# Generated by Django 6.0.3 on 2026-04-15 08:30
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Post',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=2048)),
+ ('content', models.TextField()),
+ ('is_published', models.BooleanField(default=True)),
+ ('published_at', models.DateTimeField(auto_now_add=True)),
+ ],
+ ),
+ ]
diff --git a/blogger_project/blogger/migrations/0002_post_image.py b/blogger_project/blogger/migrations/0002_post_image.py
new file mode 100644
index 0000000..dc1166d
--- /dev/null
+++ b/blogger_project/blogger/migrations/0002_post_image.py
@@ -0,0 +1,18 @@
+# Generated by Django 6.0.3 on 2026-04-15 10:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('blogger', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='post',
+ name='image',
+ field=models.ImageField(blank=True, null=True, upload_to='posts/'),
+ ),
+ ]
diff --git a/blogger_project/blogger/migrations/0003_post_author.py b/blogger_project/blogger/migrations/0003_post_author.py
new file mode 100644
index 0000000..d5f2aa0
--- /dev/null
+++ b/blogger_project/blogger/migrations/0003_post_author.py
@@ -0,0 +1,19 @@
+# Generated by Django 6.0.3 on 2026-04-16 02:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('blogger', '0002_post_image'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='post',
+ name='author',
+ field=models.CharField(default='Admin', max_length=100),
+ preserve_default=False,
+ ),
+ ]
diff --git a/blogger_project/blogger/migrations/__init__.py b/blogger_project/blogger/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/blogger_project/blogger/migrations/style.css b/blogger_project/blogger/migrations/style.css
new file mode 100644
index 0000000..ddd54d8
--- /dev/null
+++ b/blogger_project/blogger/migrations/style.css
@@ -0,0 +1,97 @@
+body {
+ background: #121212;
+ font-family: 'Segoe UI', Tahoma;
+ margin: 0;
+}
+
+/* navbar */
+.navbar {
+ background: #1f1f1f;
+ padding: 15px 30px;
+ color: white;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.navbar a {
+ margin-left: 10px;
+ padding: 8px 14px;
+ border-radius: 8px;
+ background: white;
+ text-decoration: none;
+ color: black;
+ font-weight: bold;
+}
+
+/* container (في النص) */
+.container {
+ width: 40%;
+ margin: 80px auto;
+ text-align: left;
+}
+
+/* العناوين */
+.section-title {
+ color: white;
+ font-size: 28px;
+ margin-bottom: 20px;
+}
+
+/* الكارد */
+.post-card {
+ background: white;
+ border-radius: 12px;
+ padding: 20px;
+ margin-top: 20px;
+ box-shadow: 0 0 15px rgba(0,0,0,0.4);
+}
+
+/* الصور */
+.post-card img {
+ width: 100%;
+ border-radius: 10px;
+ margin-bottom: 10px;
+}
+
+/* الفورم */
+form {
+ background: #1e1e1e;
+ padding: 25px;
+ border-radius: 12px;
+}
+
+/* الليبل */
+label {
+ color: white;
+ font-size: 18px;
+}
+
+/* المدخلات */
+input, textarea {
+ width: 100%;
+ padding: 12px;
+ margin-top: 5px;
+ margin-bottom: 15px;
+ border-radius: 8px;
+ border: none;
+ font-size: 16px;
+}
+
+/* الزر */
+button {
+ width: 100%;
+ padding: 12px;
+ background: #4e54c8;
+ color: white;
+ border: none;
+ border-radius: 8px;
+ font-size: 18px;
+ cursor: pointer;
+}
+
+/* النصوص الفارغة */
+.no-posts {
+ color: white;
+ font-size: 18px;
+}
diff --git a/blogger_project/blogger/models.py b/blogger_project/blogger/models.py
new file mode 100644
index 0000000..06a28d3
--- /dev/null
+++ b/blogger_project/blogger/models.py
@@ -0,0 +1,14 @@
+from django.db import models
+
+class Post(models.Model):
+ title = models.CharField(max_length=2048)
+ content = models.TextField()
+ is_published = models.BooleanField(default=True)
+ published_at = models.DateTimeField(auto_now_add=True)
+
+ image = models.ImageField(upload_to='posts/', blank=True, null=True)
+
+ author = models.CharField(max_length=100)
+
+ def __str__(self):
+ return self.title
\ No newline at end of file
diff --git a/blogger_project/blogger/static/blogger/css/style.css b/blogger_project/blogger/static/blogger/css/style.css
new file mode 100644
index 0000000..d98ff59
--- /dev/null
+++ b/blogger_project/blogger/static/blogger/css/style.css
@@ -0,0 +1,321 @@
+
+html,
+body {
+ height: 100%;
+}
+
+body {
+ background: #121212;
+ font-family: 'Segoe UI', Tahoma;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+}
+
+main {
+ flex: 1;
+}
+
+.navbar {
+ background: #1f1f1f;
+ padding: 15px 40px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+
+.logo {
+ font-size: 28px;
+ font-weight: bold;
+ color: white;
+}
+
+
+.nav-right {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+
+.nav-right a {
+ padding: 8px 14px;
+ border-radius: 8px;
+ background: white;
+ color: black;
+ text-decoration: none;
+ font-weight: bold;
+ display: flex;
+ align-items: center;
+ height: 34px;
+ box-sizing: border-box;
+}
+
+.nav-right a:hover {
+ background: #ddd;
+}
+
+
+.search-inline {
+ display: flex;
+ align-items: center;
+}
+
+.search-inline input {
+ height: 34px;
+ width: 140px;
+ padding: 0 14px;
+ border-radius: 8px;
+ border: none;
+ outline: none;
+ background: white;
+ color: black;
+ font-weight: bold;
+ box-sizing: border-box;
+}
+
+.search-inline input::placeholder {
+ color: #666;
+}
+
+
+.hero {
+ text-align: center;
+ margin-top: 80px;
+ margin-bottom: 40px;
+}
+
+.hero h1 {
+ font-size: 60px;
+ color: white;
+ margin: 0;
+}
+
+.hero p {
+ color: #aaa;
+ font-size: 20px;
+ margin-top: 10px;
+}
+
+
+.section-title {
+ color: white;
+ text-align: left;
+ margin-left: 60px;
+ margin-bottom: 20px;
+ font-size: 28px;
+}
+
+
+.posts-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 25px;
+ padding: 0 60px 40px;
+}
+
+
+.post-card {
+ background: #1e1e1e;
+ padding: 20px;
+ border-radius: 12px;
+ color: white;
+ box-shadow: 0 0 15px rgba(0, 0, 0, 0.4);
+ transition: transform 0.2s;
+}
+
+.post-card:hover {
+ transform: translateY(-5px);
+}
+
+.post-card img {
+ width: 100%;
+ height: 200px;
+ object-fit: contain;
+ border-radius: 10px;
+ margin-bottom: 10px;
+ background: transparent;
+}
+
+
+.post-card h3 {
+ font-size: 22px;
+}
+
+.post-card p,
+.post-card small {
+ color: white;
+}
+
+.show-more {
+ color: #6c63ff;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+.show-more:hover {
+ opacity: 0.7;
+}
+
+
+form:not(.search-inline) {
+ background: #1e1e1e;
+ padding: 25px;
+ border-radius: 12px;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
+}
+
+form p {
+ display: flex;
+ flex-direction: column;
+}
+
+form label {
+ color: white;
+ font-size: 18px;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+
+form:not(.search-inline) input,
+form:not(.search-inline) textarea {
+ width: 100%;
+ padding: 12px;
+ margin-bottom: 15px;
+ border-radius: 8px;
+ border: none;
+ font-size: 16px;
+ box-sizing: border-box;
+}
+
+button {
+ width: 100%;
+ padding: 12px;
+ background: #4e54c8;
+ color: white;
+ border: none;
+ border-radius: 8px;
+ font-size: 18px;
+ cursor: pointer;
+}
+
+button:hover {
+ background: #3b3fc0;
+}
+
+
+.actions {
+ margin-top: 15px;
+}
+
+.btn {
+ display: inline-block;
+ padding: 8px 14px;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: bold;
+ margin-right: 5px;
+}
+
+.edit-btn {
+ background: #4e54c8;
+ color: white;
+}
+
+.delete-btn {
+ background: #e53935;
+ color: white;
+}
+
+.btn:hover {
+ opacity: 0.8;
+}
+
+
+.no-posts {
+ color: white;
+ font-size: 20px;
+ text-align: center;
+ margin-top: 100px;
+}
+
+
+.footer {
+ background: #1f1f1f;
+ padding: 25px 40px;
+ color: white;
+ margin-top: auto;
+}
+
+.footer-content {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 20px;
+}
+
+.footer-left h3 {
+ margin: 0;
+}
+
+.footer-left p {
+ color: #aaa;
+ font-size: 14px;
+ margin-top: 8px;
+}
+
+.footer-links {
+ display: flex;
+ gap: 15px;
+}
+
+.footer-links a {
+ text-decoration: none;
+ color: white;
+ font-weight: bold;
+}
+
+.footer-links a:hover {
+ color: #6c63ff;
+}
+
+.footer-right p {
+ font-size: 14px;
+ color: #aaa;
+ margin: 0;
+}
+
+
+@media (max-width: 1024px) {
+ .posts-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+
+@media (max-width: 768px) {
+ .navbar,
+ .footer-content {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 15px;
+ }
+
+ .nav-right {
+ flex-wrap: wrap;
+ }
+
+ .posts-grid {
+ grid-template-columns: 1fr;
+ padding: 0 20px 30px;
+ }
+
+ .section-title {
+ margin-left: 20px;
+ }
+
+ .hero h1 {
+ font-size: 42px;
+ }
+}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/about.html b/blogger_project/blogger/templates/blogger/about.html
new file mode 100644
index 0000000..59c7fb0
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/about.html
@@ -0,0 +1,16 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
About Blogger
+
+
+ Blogger is a platform where users can write, share, and inspire through blogs.
+
+
+
+ We aim to make content creation simple, accessible, and enjoyable for everyone.
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/add_post.html b/blogger_project/blogger/templates/blogger/add_post.html
new file mode 100644
index 0000000..adc0c32
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/add_post.html
@@ -0,0 +1,19 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
+
Add Post
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/base.html b/blogger_project/blogger/templates/blogger/base.html
new file mode 100644
index 0000000..a6ff40c
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/base.html
@@ -0,0 +1,66 @@
+{% load static %}
+
+
+
+ Blogger
+
+
+
+
+
+
+
+
+
+ {% block content %}
+ {% endblock %}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/contact.html b/blogger_project/blogger/templates/blogger/contact.html
new file mode 100644
index 0000000..7258362
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/contact.html
@@ -0,0 +1,11 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
Contact Us
+
Email: SharifahAljohani@gmail.com
+
Phone: +966 512345678
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/detail.html b/blogger_project/blogger/templates/blogger/detail.html
new file mode 100644
index 0000000..78acb6a
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/detail.html
@@ -0,0 +1,32 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
+
+
+
{{ post.title }}
+
{{ post.published_at }}
+
+ {% if post.image %}
+

+ {% endif %}
+
+
{{ post.content }}
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/drafts.html b/blogger_project/blogger/templates/blogger/drafts.html
new file mode 100644
index 0000000..6399847
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/drafts.html
@@ -0,0 +1,36 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
+
+ Draft Posts
+
+
+ {% if posts %}
+ {% for post in posts %}
+
+
+
{{ post.title }}
+
{{ post.content }}
+
+
+
+
+ {% endfor %}
+ {% else %}
+
No drafts
+ {% endif %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/index.html b/blogger_project/blogger/templates/blogger/index.html
new file mode 100644
index 0000000..26afdc8
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/index.html
@@ -0,0 +1,41 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
+
Blogger
+
Write, Share, Inspire
+
+
+
+Latest Posts
+
+
+
+
+ {% for post in posts %}
+
+
+ {% if post.image %}
+

+ {% endif %}
+
+
{{ post.title }}
+
+
+ {{ post.published_at|date:"d M Y - h:i A" }} | By: {{ post.author }}
+
+
+
{{ post.content|truncatewords:15 }}
+
+
+ Show More
+
+
+
+ {% endfor %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/templates/blogger/search.html b/blogger_project/blogger/templates/blogger/search.html
new file mode 100644
index 0000000..c067f5c
--- /dev/null
+++ b/blogger_project/blogger/templates/blogger/search.html
@@ -0,0 +1,36 @@
+{% extends 'blogger/base.html' %}
+
+{% block content %}
+
+
+
+
+ Results for "{{ query }}"
+
+
+ {% if results %}
+ {% for post in results %}
+
+
+ {% if post.image %}
+

+ {% endif %}
+
+
{{ post.title }}
+
{{ post.published_at }}
+
+
{{ post.content|truncatewords:15 }}
+
+
+ Show More
+
+
+
+ {% endfor %}
+ {% else %}
+
No results found
+ {% endif %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/blogger_project/blogger/tests.py b/blogger_project/blogger/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/blogger_project/blogger/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/blogger_project/blogger/urls.py b/blogger_project/blogger/urls.py
new file mode 100644
index 0000000..971580d
--- /dev/null
+++ b/blogger_project/blogger/urls.py
@@ -0,0 +1,16 @@
+from django.urls import path
+from . import views
+
+urlpatterns = [
+ path('', views.home, name='home'),
+ path('add/', views.add_post, name='add_post'),
+ path('drafts/', views.drafts, name='drafts'),
+ path('edit//', views.edit_post, name='edit_post'),
+ path('delete//', views.delete_post, name='delete_post'),
+
+
+ path('post//', views.post_detail, name='post_detail'),
+ path('about/', views.about, name='about'),
+ path('contact/', views.contact, name='contact'),
+ path('search/', views.search, name='search'),
+]
\ No newline at end of file
diff --git a/blogger_project/blogger/views.py b/blogger_project/blogger/views.py
new file mode 100644
index 0000000..d7bc12c
--- /dev/null
+++ b/blogger_project/blogger/views.py
@@ -0,0 +1,70 @@
+from django.shortcuts import render, redirect, get_object_or_404
+from .models import Post
+from .forms import PostForm
+
+
+def home(request):
+ posts = Post.objects.filter(is_published=True).order_by('-published_at')
+ return render(request, 'blogger/index.html', {'posts': posts})
+
+
+def drafts(request):
+ posts = Post.objects.filter(is_published=False).order_by('-published_at')
+ return render(request, 'blogger/drafts.html', {'posts': posts})
+
+
+def add_post(request):
+ if request.method == "POST":
+ form = PostForm(request.POST, request.FILES)
+ if form.is_valid():
+ form.save()
+ return redirect('home')
+ else:
+ form = PostForm()
+
+ return render(request, 'blogger/add_post.html', {'form': form})
+
+
+def edit_post(request, id):
+ post = get_object_or_404(Post, id=id)
+
+ if request.method == "POST":
+ form = PostForm(request.POST, request.FILES, instance=post)
+ if form.is_valid():
+ form.save()
+ return redirect('home')
+ else:
+ form = PostForm(instance=post)
+
+ return render(request, 'blogger/add_post.html', {'form': form})
+
+
+def delete_post(request, id):
+ post = get_object_or_404(Post, id=id)
+ post.delete()
+ return redirect('home')
+
+
+
+def post_detail(request, id):
+ post = get_object_or_404(Post, id=id)
+ return render(request, 'blogger/detail.html', {'post': post})
+
+def about(request):
+ return render(request, 'blogger/about.html')
+
+
+def contact(request):
+ return render(request, 'blogger/contact.html')
+
+def search(request):
+ query = request.GET.get('q')
+ results = []
+
+ if query:
+ results = Post.objects.filter(title__icontains=query)
+
+ return render(request, 'blogger/search.html', {
+ 'query': query,
+ 'results': results
+ })
\ No newline at end of file
diff --git a/blogger_project/blogger_project/__init__.py b/blogger_project/blogger_project/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/blogger_project/blogger_project/asgi.py b/blogger_project/blogger_project/asgi.py
new file mode 100644
index 0000000..f8d7f4d
--- /dev/null
+++ b/blogger_project/blogger_project/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for blogger_project project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blogger_project.settings')
+
+application = get_asgi_application()
diff --git a/blogger_project/blogger_project/settings.py b/blogger_project/blogger_project/settings.py
new file mode 100644
index 0000000..b4e4a1f
--- /dev/null
+++ b/blogger_project/blogger_project/settings.py
@@ -0,0 +1,97 @@
+from __future__ import annotations
+
+from pathlib import Path
+
+
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+SECRET_KEY = "django-insecure-change-me"
+DEBUG = True
+ALLOWED_HOSTS: list[str] = []
+
+
+INSTALLED_APPS = [
+ "django.contrib.admin",
+ "django.contrib.auth",
+ "django.contrib.contenttypes",
+ "django.contrib.sessions",
+ "django.contrib.messages",
+ "django.contrib.staticfiles",
+
+ "blogger",
+]
+
+
+MIDDLEWARE = [
+ "django.middleware.security.SecurityMiddleware",
+ "django.contrib.sessions.middleware.SessionMiddleware",
+ "django.middleware.common.CommonMiddleware",
+ "django.middleware.csrf.CsrfViewMiddleware",
+ "django.contrib.auth.middleware.AuthenticationMiddleware",
+ "django.contrib.messages.middleware.MessageMiddleware",
+ "django.middleware.clickjacking.XFrameOptionsMiddleware",
+]
+
+ROOT_URLCONF = "blogger_project.urls"
+
+TEMPLATES = [
+ {
+ "BACKEND": "django.template.backends.django.DjangoTemplates",
+
+
+ "DIRS": [],
+
+ "APP_DIRS": True,
+ "OPTIONS": {
+ "context_processors": [
+ "django.template.context_processors.debug",
+ "django.template.context_processors.request",
+ "django.contrib.auth.context_processors.auth",
+ "django.contrib.messages.context_processors.messages",
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = "blogger_project.wsgi.application"
+
+
+DATABASES = {
+ "default": {
+ "ENGINE": "django.db.backends.sqlite3",
+ "NAME": BASE_DIR / "db.sqlite3",
+ }
+}
+
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
+ },
+ {
+ "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
+ },
+ {
+ "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
+ },
+ {
+ "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
+ },
+]
+
+
+LANGUAGE_CODE = "en-us"
+TIME_ZONE = "Asia/Riyadh"
+
+USE_I18N = True
+USE_TZ = True
+
+STATIC_URL = "static/"
+
+
+
+MEDIA_URL = "media/"
+MEDIA_ROOT = BASE_DIR / "media"
+
+
+DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
\ No newline at end of file
diff --git a/blogger_project/blogger_project/urls.py b/blogger_project/blogger_project/urls.py
new file mode 100644
index 0000000..072f13c
--- /dev/null
+++ b/blogger_project/blogger_project/urls.py
@@ -0,0 +1,12 @@
+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('', include('blogger.urls')),
+]
+
+if settings.DEBUG:
+ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
\ No newline at end of file
diff --git a/blogger_project/blogger_project/wsgi.py b/blogger_project/blogger_project/wsgi.py
new file mode 100644
index 0000000..772e351
--- /dev/null
+++ b/blogger_project/blogger_project/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for blogger_project project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blogger_project.settings')
+
+application = get_wsgi_application()
diff --git a/blogger_project/manage.py b/blogger_project/manage.py
new file mode 100644
index 0000000..31e08e5
--- /dev/null
+++ b/blogger_project/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blogger_project.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git "a/blogger_project/media/posts/\330\257\330\247\331\205\330\252_\330\263\331\206\331\212\331\206\331\203_.jpg" "b/blogger_project/media/posts/\330\257\330\247\331\205\330\252_\330\263\331\206\331\212\331\206\331\203_.jpg"
new file mode 100644
index 0000000..d03ae1e
Binary files /dev/null and "b/blogger_project/media/posts/\330\257\330\247\331\205\330\252_\330\263\331\206\331\212\331\206\331\203_.jpg" differ