diff --git a/src/Controller/Admin/BlogCrudController.php b/src/Controller/Admin/BlogCrudController.php
new file mode 100644
index 0000000..15284b4
--- /dev/null
+++ b/src/Controller/Admin/BlogCrudController.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Controller\Admin;
+
+use App\Entity\Blog;
+use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
+use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
+
+class BlogCrudController extends AbstractCrudController
+{
+    public static function getEntityFqcn(): string
+    {
+        return Blog::class;
+    }
+
+    public function configureFields(string $pageName): iterable
+    {
+        return [
+	        AssociationField::new('author')
+		        ->autocomplete(),
+	        TextField::new('title'),
+	        TextEditorField::new('teaser'),
+	        TextEditorField::new('content'),
+	        DateTimeField::new('createdAt'),
+	        AssociationField::new('editedBy')
+		        ->autocomplete()
+        ];
+    }
+}
diff --git a/src/Controller/Admin/CommentCrudController.php b/src/Controller/Admin/CommentCrudController.php
new file mode 100644
index 0000000..8c5a4d7
--- /dev/null
+++ b/src/Controller/Admin/CommentCrudController.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Controller\Admin;
+
+use App\Entity\Comment;
+use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
+use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
+use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
+
+class CommentCrudController extends AbstractCrudController
+{
+	public static function getEntityFqcn(): string
+	{
+		return Comment::class;
+	}
+	
+	public function configureFields(string $pageName): iterable
+	{
+		return [
+			AssociationField::new('author')
+				->autocomplete(),
+			AssociationField::new('blog')
+				->autocomplete(),
+			TextField::new('title'),
+			TextEditorField::new('content'),
+			DateTimeField::new('createdAt'),
+			AssociationField::new('editedBy')
+				->autocomplete(),
+			DateTimeField::new('editedAt'),
+		
+		];
+	}
+}
diff --git a/src/Controller/Admin/DashboardController.php b/src/Controller/Admin/DashboardController.php
new file mode 100644
index 0000000..aea86db
--- /dev/null
+++ b/src/Controller/Admin/DashboardController.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Controller\Admin;
+
+use App\Entity\Section;
+use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
+use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
+use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\Routing\Annotation\Route;
+use App\Entity\User;
+use App\Entity\Blog;
+use App\Entity\Comment;
+
+
+/**
+ * Class DashboardController
+ * @package App\Controller\Admin
+ */
+class DashboardController extends AbstractDashboardController
+{
+    #[Route('/admin', name: 'admin')]
+    public function index(): Response
+    {
+        return parent::index();
+    }
+
+    public function configureDashboard(): Dashboard
+    {
+        return Dashboard::new()
+            ->setTitle('24unix');
+    }
+
+    public function configureMenuItems(): iterable
+    {
+	    yield MenuItem::linktoRoute('Back to the website', 'fas fa-home', 'blog');
+	    yield MenuItem::linktoDashboard('Dashboard', 'fas fa-tachometer-alt');
+	    yield MenuItem::linkToCrud('User', 'fas fa-user', User::class);
+	    yield MenuItem::linkToCrud('Sections', 'fas fa-book', Section::class);
+	    yield MenuItem::linkToCrud('Blogs', 'fas fa-blog', Blog::class);
+	    yield MenuItem::linkToCrud('Comments', 'fas fa-comments', Comment::class);
+    }
+}
diff --git a/src/Controller/Admin/SectionCrudController.php b/src/Controller/Admin/SectionCrudController.php
new file mode 100644
index 0000000..95fa81f
--- /dev/null
+++ b/src/Controller/Admin/SectionCrudController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Controller\Admin;
+
+use App\Entity\Section;
+use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
+
+class SectionCrudController extends AbstractCrudController
+{
+    public static function getEntityFqcn(): string
+    {
+        return Section::class;
+    }
+
+    /*
+    public function configureFields(string $pageName): iterable
+    {
+        return [
+            IdField::new('id'),
+            TextField::new('title'),
+            TextEditorField::new('description'),
+        ];
+    }
+    */
+}
diff --git a/src/Controller/Admin/UserCrudController.php b/src/Controller/Admin/UserCrudController.php
new file mode 100644
index 0000000..1575931
--- /dev/null
+++ b/src/Controller/Admin/UserCrudController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Controller\Admin;
+
+use App\Entity\User;
+use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
+
+class UserCrudController extends AbstractCrudController
+{
+    public static function getEntityFqcn(): string
+    {
+        return User::class;
+    }
+
+    /*
+    public function configureFields(string $pageName): iterable
+    {
+        return [
+            IdField::new('id'),
+            TextField::new('title'),
+            TextEditorField::new('description'),
+        ];
+    }
+    */
+}
diff --git a/src/Entity/Blog.php b/src/Entity/Blog.php
index c85c376..1ab72ae 100644
--- a/src/Entity/Blog.php
+++ b/src/Entity/Blog.php
@@ -68,7 +68,7 @@ class Blog
     /**
      * @ORM\Column(type="string", length=255, nullable=true)
      */
-    private $editReason;
+    private ?string $editReason;
 
     /**
      * @ORM\OneToMany(targetEntity=Comment::class, mappedBy="blog")
@@ -81,6 +81,12 @@ class Blog
         $this->comments = new ArrayCollection();
     }
 
+    public function __toString()
+    {
+    	return $this->title;
+    }
+	
+	
     public function getId(): ?int
     {
         return $this->id;
diff --git a/src/Entity/User.php b/src/Entity/User.php
index 9c93efc..4efe002 100644
--- a/src/Entity/User.php
+++ b/src/Entity/User.php
@@ -6,6 +6,7 @@ use App\Repository\UserRepository;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
 use Doctrine\ORM\Mapping as ORM;
+use JetBrains\PhpStorm\Pure;
 use Symfony\Component\Security\Core\User\UserInterface;
 
 /**
@@ -13,263 +14,268 @@ use Symfony\Component\Security\Core\User\UserInterface;
  */
 class User implements UserInterface
 {
-    /**
-     * @ORM\Id
-     * @ORM\GeneratedValue
-     * @ORM\Column(type="integer")
-     */
-    private $id;
-
-    /**
-     * @ORM\Column(type="string", length=180, unique=true)
-     */
-    private $username;
-
-    /**
-     * @ORM\Column(type="json")
-     */
-    private $roles = [];
-
-    /**
-     * @var string The hashed password
-     * @ORM\Column(type="string")
-     */
-    private $password;
-
-    /**
-     * @ORM\Column(type="string", length=255, nullable=true)
-     */
-    private $firstName;
-
-    /**
-     * @ORM\Column(type="string", length=255, nullable=true)
-     */
-    private $lastName;
-
-    /**
-     * @ORM\Column(type="string", length=255)
-     */
-    private $email;
-
-    /**
-     * @ORM\Column(type="datetime")
-     */
-    private $createdAt;
-
-    /**
-     * @ORM\Column(type="datetime", nullable=true)
-     */
-    private $lastLoginAt;
-
-    /**
-     * @ORM\OneToMany(targetEntity=Blog::class, mappedBy="author")
-     */
-    private $blogs;
-
-    /**
-     * @ORM\OneToMany(targetEntity=Comment::class, mappedBy="author")
-     */
-    private $comments;
-
-    public function __construct()
-    {
-        $this->blogs = new ArrayCollection();
-        $this->comments = new ArrayCollection();
-    }
-
-    public function getId(): ?int
-    {
-        return $this->id;
-    }
-
-    /**
-     * A visual identifier that represents this user.
-     *
-     * @see UserInterface
-     */
-    public function getUsername(): string
-    {
-        return (string) $this->username;
-    }
-
-    public function setUsername(string $username): self
-    {
-        $this->username = $username;
-
-        return $this;
-    }
-
-    /**
-     * @see UserInterface
-     */
-    public function getRoles(): array
-    {
-        $roles = $this->roles;
-        // guarantee every user at least has ROLE_USER
-        $roles[] = 'ROLE_USER';
-
-        return array_unique($roles);
-    }
-
-    public function setRoles(array $roles): self
-    {
-        $this->roles = $roles;
-
-        return $this;
-    }
-
-    /**
-     * @see UserInterface
-     */
-    public function getPassword(): string
-    {
-        return $this->password;
-    }
-
-    public function setPassword(string $password): self
-    {
-        $this->password = $password;
-
-        return $this;
-    }
-
-    /**
-     * Returning a salt is only needed, if you are not using a modern
-     * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
-     *
-     * @see UserInterface
-     */
-    public function getSalt(): ?string
-    {
-        return null;
-    }
-
-    /**
-     * @see UserInterface
-     */
-    public function eraseCredentials()
-    {
-        // If you store any temporary, sensitive data on the user, clear it here
-        // $this->plainPassword = null;
-    }
-
-    public function getFirstName(): ?string
-    {
-        return $this->firstName;
-    }
-
-    public function setFirstName(?string $firstName): self
-    {
-        $this->firstName = $firstName;
-
-        return $this;
-    }
-
-    public function getLastName(): ?string
-    {
-        return $this->lastName;
-    }
-
-    public function setLastName(?string $lastName): self
-    {
-        $this->lastName = $lastName;
-
-        return $this;
-    }
-
-    public function getEmail(): ?string
-    {
-        return $this->email;
-    }
-
-    public function setEmail(string $email): self
-    {
-        $this->email = $email;
-
-        return $this;
-    }
-
-    public function getCreatedAt(): ?\DateTimeInterface
-    {
-        return $this->createdAt;
-    }
-
-    public function setCreatedAt(\DateTimeInterface $createdAt): self
-    {
-        $this->createdAt = $createdAt;
-
-        return $this;
-    }
-
-    public function getLastLoginAt(): ?\DateTimeInterface
-    {
-        return $this->lastLoginAt;
-    }
-
-    public function setLastLoginAt(?\DateTimeInterface $lastLoginAt): self
-    {
-        $this->lastLoginAt = $lastLoginAt;
-
-        return $this;
-    }
-
-    /**
-     * @return Collection|Blog[]
-     */
-    public function getBlogs(): Collection
-    {
-        return $this->blogs;
-    }
-
-    public function addBlog(Blog $blog): self
-    {
-        if (!$this->blogs->contains($blog)) {
-            $this->blogs[] = $blog;
-            $blog->setAuthor($this);
-        }
-
-        return $this;
-    }
-
-    public function removeBlog(Blog $blog): self
-    {
-        if ($this->blogs->removeElement($blog)) {
-            // set the owning side to null (unless already changed)
-            if ($blog->getAuthor() === $this) {
-                $blog->setAuthor(null);
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * @return Collection|Comment[]
-     */
-    public function getComments(): Collection
-    {
-        return $this->comments;
-    }
-
-    public function addComment(Comment $comment): self
-    {
-        if (!$this->comments->contains($comment)) {
-            $this->comments[] = $comment;
-            $comment->setAuthor($this);
-        }
-
-        return $this;
-    }
-
-    public function removeComment(Comment $comment): self
-    {
-        if ($this->comments->removeElement($comment)) {
-            // set the owning side to null (unless already changed)
-            if ($comment->getAuthor() === $this) {
-                $comment->setAuthor(null);
-            }
-        }
-
-        return $this;
-    }
+	/**
+	 * @ORM\Id
+	 * @ORM\GeneratedValue
+	 * @ORM\Column(type="integer")
+	 */
+	private $id;
+	
+	/**
+	 * @ORM\Column(type="string", length=180, unique=true)
+	 */
+	private $username;
+	
+	/**
+	 * @ORM\Column(type="json")
+	 */
+	private $roles = [];
+	
+	/**
+	 * @var string The hashed password
+	 * @ORM\Column(type="string")
+	 */
+	private $password;
+	
+	/**
+	 * @ORM\Column(type="string", length=255, nullable=true)
+	 */
+	private $firstName;
+	
+	/**
+	 * @ORM\Column(type="string", length=255, nullable=true)
+	 */
+	private $lastName;
+	
+	/**
+	 * @ORM\Column(type="string", length=255)
+	 */
+	private $email;
+	
+	/**
+	 * @ORM\Column(type="datetime")
+	 */
+	private $createdAt;
+	
+	/**
+	 * @ORM\Column(type="datetime", nullable=true)
+	 */
+	private $lastLoginAt;
+	
+	/**
+	 * @ORM\OneToMany(targetEntity=Blog::class, mappedBy="author")
+	 */
+	private $blogs;
+	
+	/**
+	 * @ORM\OneToMany(targetEntity=Comment::class, mappedBy="author")
+	 */
+	private $comments;
+	
+	#[Pure] public function __construct()
+	{
+		$this->blogs = new ArrayCollection();
+		$this->comments = new ArrayCollection();
+	}
+	
+	public function __toString()
+	{
+		return $this->username;
+	}
+	
+	public function getId(): ?int
+	{
+		return $this->id;
+	}
+	
+	/**
+	 * A visual identifier that represents this user.
+	 *
+	 * @see UserInterface
+	 */
+	public function getUsername(): string
+	{
+		return (string)$this->username;
+	}
+	
+	public function setUsername(string $username): self
+	{
+		$this->username = $username;
+		
+		return $this;
+	}
+	
+	/**
+	 * @see UserInterface
+	 */
+	public function getRoles(): array
+	{
+		$roles = $this->roles;
+		// guarantee every user at least has ROLE_USER
+		$roles[] = 'ROLE_USER';
+		
+		return array_unique($roles);
+	}
+	
+	public function setRoles(array $roles): self
+	{
+		$this->roles = $roles;
+		
+		return $this;
+	}
+	
+	/**
+	 * @see UserInterface
+	 */
+	public function getPassword(): string
+	{
+		return $this->password;
+	}
+	
+	public function setPassword(string $password): self
+	{
+		$this->password = $password;
+		
+		return $this;
+	}
+	
+	/**
+	 * Returning a salt is only needed, if you are not using a modern
+	 * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
+	 *
+	 * @see UserInterface
+	 */
+	public function getSalt(): ?string
+	{
+		return null;
+	}
+	
+	/**
+	 * @see UserInterface
+	 */
+	public function eraseCredentials()
+	{
+		// If you store any temporary, sensitive data on the user, clear it here
+		// $this->plainPassword = null;
+	}
+	
+	public function getFirstName(): ?string
+	{
+		return $this->firstName;
+	}
+	
+	public function setFirstName(?string $firstName): self
+	{
+		$this->firstName = $firstName;
+		
+		return $this;
+	}
+	
+	public function getLastName(): ?string
+	{
+		return $this->lastName;
+	}
+	
+	public function setLastName(?string $lastName): self
+	{
+		$this->lastName = $lastName;
+		
+		return $this;
+	}
+	
+	public function getEmail(): ?string
+	{
+		return $this->email;
+	}
+	
+	public function setEmail(string $email): self
+	{
+		$this->email = $email;
+		
+		return $this;
+	}
+	
+	public function getCreatedAt(): ?\DateTimeInterface
+	{
+		return $this->createdAt;
+	}
+	
+	public function setCreatedAt(\DateTimeInterface $createdAt): self
+	{
+		$this->createdAt = $createdAt;
+		
+		return $this;
+	}
+	
+	public function getLastLoginAt(): ?\DateTimeInterface
+	{
+		return $this->lastLoginAt;
+	}
+	
+	public function setLastLoginAt(?\DateTimeInterface $lastLoginAt): self
+	{
+		$this->lastLoginAt = $lastLoginAt;
+		
+		return $this;
+	}
+	
+	/**
+	 * @return Collection|Blog[]
+	 */
+	public function getBlogs(): Collection
+	{
+		return $this->blogs;
+	}
+	
+	public function addBlog(Blog $blog): self
+	{
+		if (!$this->blogs->contains($blog)) {
+			$this->blogs[] = $blog;
+			$blog->setAuthor($this);
+		}
+		
+		return $this;
+	}
+	
+	public function removeBlog(Blog $blog): self
+	{
+		if ($this->blogs->removeElement($blog)) {
+			// set the owning side to null (unless already changed)
+			if ($blog->getAuthor() === $this) {
+				$blog->setAuthor(null);
+			}
+		}
+		
+		return $this;
+	}
+	
+	/**
+	 * @return Collection|Comment[]
+	 */
+	public function getComments(): Collection
+	{
+		return $this->comments;
+	}
+	
+	public function addComment(Comment $comment): self
+	{
+		if (!$this->comments->contains($comment)) {
+			$this->comments[] = $comment;
+			$comment->setAuthor($this);
+		}
+		
+		return $this;
+	}
+	
+	public function removeComment(Comment $comment): self
+	{
+		if ($this->comments->removeElement($comment)) {
+			// set the owning side to null (unless already changed)
+			if ($comment->getAuthor() === $this) {
+				$comment->setAuthor(null);
+			}
+		}
+		
+		return $this;
+	}
 }