diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/src/Entity/Bible.php b/src/Entity/Bible.php
new file mode 100644
index 0000000..ae1b21a
--- /dev/null
+++ b/src/Entity/Bible.php
@@ -0,0 +1,190 @@
+id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getBook(): ?string
+    {
+        return $this->book;
+    }
+
+    public function setBook(string $book): static
+    {
+        $this->book = $book;
+
+        return $this;
+    }
+
+    public function getChapter(): ?int
+    {
+        return $this->chapter;
+    }
+
+    public function setChapter(int $chapter): static
+    {
+        $this->chapter = $chapter;
+
+        return $this;
+    }
+
+    public function getVerse(): ?int
+    {
+        return $this->verse;
+    }
+
+    public function setVerse(int $verse): static
+    {
+        $this->verse = $verse;
+
+        return $this;
+    }
+
+    public function getContent(): ?string
+    {
+        return $this->content;
+    }
+
+    public function setContent(?string $content): static
+    {
+        $this->content = $content;
+
+        return $this;
+    }
+
+    public function getBookIndex(): ?int
+    {
+        return $this->book_index;
+    }
+
+    public function setBookIndex(int $book_index): static
+    {
+        $this->book_index = $book_index;
+
+        return $this;
+    }
+
+    public function getLabel(): ?string
+    {
+        return $this->label;
+    }
+
+    public function setLabel(?string $label): static
+    {
+        $this->label = $label;
+
+        return $this;
+    }
+
+    public static function findBook(string $reference): string
+    {
+        $book = '';
+        $tmp = explode(' ', $reference);
+        $book = "{$tmp[0]}";
+
+        if(count($tmp) > 2) {
+            $book = "{$tmp[0]}{$tmp[1]}";
+        }
+
+        return $book;
+    }
+
+    public static function findChapter(string $reference): string
+    {
+        $chapter = '';
+        $tmp = explode(' ', $reference);
+
+        if(count($tmp) > 2) {
+            $passage = $tmp[2];
+        } else {
+            $passage = $tmp[1];
+        }
+
+        $tmp = explode(':', $passage);
+        $chapter = $tmp[0];
+
+        return $chapter;
+    }
+
+    public static function findVerse(string $reference): int|array|bool
+    {
+        $verses = null;
+        $semicolon = strpos($reference, ':');
+        if ($semicolon === false) {
+            return false;
+        }
+
+        $tmp = substr($reference, $semicolon + 1);
+
+        if(strpos($tmp, '-') !== false) {
+            $verses = explode('-', $tmp);
+        } else {
+            $verses = (int) $tmp;
+        }
+
+        return $verses;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->getId(),
+            'book' => $this->getBook(),
+            'chapter' => $this->getChapter(),
+            'verse' => $this->getVerse(),
+            'content' => $this->getContent(),
+            'book_index' => $this->getBookIndex(),
+            'label' => $this->getLabel(),
+        ];
+    }
+}
diff --git a/src/Entity/Note.php b/src/Entity/Note.php
new file mode 100644
index 0000000..703ae85
--- /dev/null
+++ b/src/Entity/Note.php
@@ -0,0 +1,196 @@
+id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getTitle(): ?string
+    {
+        return $this->title;
+    }
+
+    public function setTitle(string $title): static
+    {
+        $this->title = $title;
+
+        return $this;
+    }
+
+    public function getDate(): ?\DateTimeInterface
+    {
+        return $this->date;
+    }
+
+    public function setDate(\DateTimeInterface $date): static
+    {
+        $this->date = $date;
+
+        return $this;
+    }
+
+    public function getPassage(): ?string
+    {
+        return $this->passage;
+    }
+
+    public function setPassage(string $passage): static
+    {
+        $this->passage = $passage;
+
+        return $this;
+    }
+
+    public function getRefs(): ?array
+    {
+        return $this->refs;
+    }
+
+    public function setRefs(?array $refs): static
+    {
+        $this->refs = $refs;
+
+        return $this;
+    }
+
+    public function addRef(Reference $ref): static
+    {
+        $this->refs[] = $ref;
+
+        return $this;
+    }
+
+    public function getText(): ?string
+    {
+        return $this->text;
+    }
+
+    public function setText(?string $text): static
+    {
+        $this->text = $text;
+
+        return $this;
+    }
+
+    public function getSpeaker(): ?Speaker
+    {
+        return $this->speaker;
+    }
+
+    public function setSpeaker(?Speaker $speaker): static
+    {
+        $this->speaker = $speaker;
+
+        return $this;
+    }
+
+    public function getSeries(): ?Series
+    {
+        return $this->series;
+    }
+
+    public function setSeries(?Series $series): static
+    {
+        $this->series = $series;
+
+        return $this;
+    }
+
+    public function getUser(): ?User
+    {
+        return $this->user;
+    }
+
+    public function setUser(?User $user): static
+    {
+        $this->user = $user;
+
+        return $this;
+    }
+
+    public function toLink(): string
+    {
+        return "id}')\">".
+            $this->title.
+            "";
+    }
+
+    public function toTableRow(): string
+    {
+        return "
".
+            "| {$this->toLink()}".
+            " | {$this->speaker->getName()}".
+            " | {$this->passage}".
+            " | {$this->date->format('M j, Y')}".
+        " | 
";
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->getId(),
+            'title' => $this->getTitle(),
+            'date' => $this->getDate(),
+            'passage' => $this->getPassage(),
+            'refs' => $this->getRefs(),
+            'text' => $this->getText(),
+            'speaker' => $this->getSpeaker(),
+            'series' => $this->getSeries(),
+            'user' => $this->getUser(),
+        ];
+    }
+}
diff --git a/src/Entity/Reference.php b/src/Entity/Reference.php
new file mode 100644
index 0000000..23a2b39
--- /dev/null
+++ b/src/Entity/Reference.php
@@ -0,0 +1,124 @@
+id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getType(): ?string
+    {
+        return $this->type;
+    }
+
+    public function setType(string $type): static
+    {
+        $this->type = $type;
+
+        return $this;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getLabel(): ?string
+    {
+        return $this->label;
+    }
+
+    public function setLabel(string $label): static
+    {
+        $this->label = $label;
+
+        return $this;
+    }
+
+    public function getNdx(): ?int
+    {
+        return $this->ndx;
+    }
+
+    public function setNdx(int $ndx): static
+    {
+        $this->ndx = $ndx;
+
+        return $this;
+    }
+
+    public function getContent(): ?string
+    {
+        return $this->content;
+    }
+
+    public function setContent(?string $content): static
+    {
+        $this->content = $content;
+
+        return $this;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->id,
+            'type' => $this->type,
+            'name' => $this->name,
+            'label' => $this->label,
+            'ndx' => $this->ndx,
+            'content' => $this->content,
+        ];
+    }
+}
diff --git a/src/Entity/Series.php b/src/Entity/Series.php
new file mode 100644
index 0000000..7f0a3bc
--- /dev/null
+++ b/src/Entity/Series.php
@@ -0,0 +1,134 @@
+
+     */
+    #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'series')]
+    private Collection $notes;
+
+    public function __construct()
+    {
+        $this->notes = new ArrayCollection();
+    }
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getUser(): ?User
+    {
+        return $this->user;
+    }
+
+    public function setUser(?User $user): static
+    {
+        $this->user = $user;
+
+        return $this;
+    }
+
+    public function getTemplate(): ?Template
+    {
+        return $this->template;
+    }
+
+    public function setTemplate(?Template $template): static
+    {
+        $this->template = $template;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getNotes(): Collection
+    {
+        return $this->notes;
+    }
+
+    public function addNote(Note $note): static
+    {
+        if (!$this->notes->contains($note)) {
+            $this->notes->add($note);
+            $note->setSeries($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNote(Note $note): static
+    {
+        if ($this->notes->removeElement($note)) {
+            // set the owning side to null (unless already changed)
+            if ($note->getSeries() === $this) {
+                $note->setSeries(null);
+            }
+        }
+
+        return $this;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->getId(),
+            'name' => $this->getName(),
+            'note_count' => count($this->getNotes()),
+            'template' => $this->getTemplate(),
+        ];
+    }
+}
diff --git a/src/Entity/Speaker.php b/src/Entity/Speaker.php
new file mode 100644
index 0000000..b8a409c
--- /dev/null
+++ b/src/Entity/Speaker.php
@@ -0,0 +1,118 @@
+
+     */
+    #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'speaker')]
+    private Collection $notes;
+
+    public function __construct()
+    {
+        $this->notes = new ArrayCollection();
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getUser(): ?User
+    {
+        return $this->user;
+    }
+
+    public function setUser(?User $user): static
+    {
+        $this->user = $user;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getNotes(): Collection
+    {
+        return $this->notes;
+    }
+
+    public function addNote(Note $note): static
+    {
+        if (!$this->notes->contains($note)) {
+            $this->notes->add($note);
+            $note->setSpeaker($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNote(Note $note): static
+    {
+        if ($this->notes->removeElement($note)) {
+            // set the owning side to null (unless already changed)
+            if ($note->getSpeaker() === $this) {
+                $note->setSpeaker(null);
+            }
+        }
+
+        return $this;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->getId(),
+            'name' => $this->getName(),
+            'note_count' => count($this->notes),
+        ];
+    }
+}
diff --git a/src/Entity/Template.php b/src/Entity/Template.php
new file mode 100644
index 0000000..4f6889e
--- /dev/null
+++ b/src/Entity/Template.php
@@ -0,0 +1,134 @@
+
+     */
+    #[ORM\OneToMany(targetEntity: Series::class, mappedBy: 'template')]
+    private Collection $series;
+
+    #[ORM\ManyToOne(inversedBy: 'templates')]
+    private ?User $user = null;
+
+    public function __construct()
+    {
+        $this->series = new ArrayCollection();
+    }
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getContent(): ?string
+    {
+        return $this->content;
+    }
+
+    public function setContent(string $content): static
+    {
+        $this->content = $content;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getSeries(): Collection
+    {
+        return $this->series;
+    }
+
+    public function addSeries(Series $series): static
+    {
+        if (!$this->series->contains($series)) {
+            $this->series->add($series);
+            $series->setTemplate($this);
+        }
+
+        return $this;
+    }
+
+    public function removeSeries(Series $series): static
+    {
+        if ($this->series->removeElement($series)) {
+            // set the owning side to null (unless already changed)
+            if ($series->getTemplate() === $this) {
+                $series->setTemplate(null);
+            }
+        }
+
+        return $this;
+    }
+
+    public function getUser(): ?User
+    {
+        return $this->user;
+    }
+
+    public function setUser(?User $user): static
+    {
+        $this->user = $user;
+
+        return $this;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->getId(),
+            'name' => $this->getName(),
+            'content' => $this->getContent(),
+        ];
+    }
+}
diff --git a/src/Entity/User.php b/src/Entity/User.php
new file mode 100644
index 0000000..16493cf
--- /dev/null
+++ b/src/Entity/User.php
@@ -0,0 +1,302 @@
+ The user roles
+     */
+    #[ORM\Column]
+    private array $roles = [];
+
+    /**
+     * @var string The hashed password
+     */
+    #[ORM\Column]
+    private ?string $password = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    /**
+     * @var Collection
+     */
+    #[ORM\OneToMany(targetEntity: Series::class, mappedBy: 'user')]
+    private Collection $series;
+
+    /**
+     * @var Collection
+     */
+    #[ORM\OneToMany(targetEntity: Speaker::class, mappedBy: 'user')]
+    private Collection $speakers;
+
+    /**
+     * @var Collection
+     */
+    #[ORM\OneToMany(targetEntity: Template::class, mappedBy: 'user')]
+    private Collection $templates;
+
+    /**
+     * @var Collection
+     */
+    #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'user')]
+    private Collection $notes;
+
+    public function __construct()
+    {
+        $this->series = new ArrayCollection();
+        $this->speakers = new ArrayCollection();
+        $this->templates = new ArrayCollection();
+        $this->notes = new ArrayCollection();
+    }
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function setId(?Uuid $id): static
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    public static function idFromString(string $id): Uuid
+    {
+        return Uuid::fromString($id);
+    }
+
+    public function getEmail(): ?string
+    {
+        return $this->email;
+    }
+
+    public function setEmail(string $email): static
+    {
+        $this->email = $email;
+
+        return $this;
+    }
+
+    /**
+     * A visual identifier that represents this user.
+     *
+     * @see UserInterface
+     */
+    public function getUserIdentifier(): string
+    {
+        return (string) $this->email;
+    }
+
+    /**
+     * @see UserInterface
+     *
+     * @return list
+     */
+    public function getRoles(): array
+    {
+        $roles = $this->roles;
+        // guarantee every user at least has ROLE_USER
+        $roles[] = 'ROLE_USER';
+
+        return array_unique($roles);
+    }
+
+    /**
+     * @param list $roles
+     */
+    public function setRoles(array $roles): static
+    {
+        $this->roles = $roles;
+
+        return $this;
+    }
+
+    /**
+     * @see PasswordAuthenticatedUserInterface
+     */
+    public function getPassword(): string
+    {
+        return $this->password;
+    }
+
+    public function setPassword(string $password): static
+    {
+        $this->password = $password;
+
+        return $this;
+    }
+
+    /**
+     * @see UserInterface
+     */
+    public function eraseCredentials(): void
+    {
+        // If you store any temporary, sensitive data on the user, clear it here
+        // $this->plainPassword = null;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getSeries(): Collection
+    {
+        return $this->series;
+    }
+
+    public function addSeries(Series $series): static
+    {
+        if (!$this->series->contains($series)) {
+            $this->series->add($series);
+            $series->setUser($this);
+        }
+
+        return $this;
+    }
+
+    public function removeSeries(Series $series): static
+    {
+        if ($this->series->removeElement($series)) {
+            // set the owning side to null (unless already changed)
+            if ($series->getUser() === $this) {
+                $series->setUser(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getSpeakers(): Collection
+    {
+        return $this->speakers;
+    }
+
+    public function addSpeaker(Speaker $speaker): static
+    {
+        if (!$this->speakers->contains($speaker)) {
+            $this->speakers->add($speaker);
+            $speaker->setUser($this);
+        }
+
+        return $this;
+    }
+
+    public function removeSpeaker(Speaker $speaker): static
+    {
+        if ($this->speakers->removeElement($speaker)) {
+            // set the owning side to null (unless already changed)
+            if ($speaker->getUser() === $this) {
+                $speaker->setUser(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getTemplates(): Collection
+    {
+        return $this->templates;
+    }
+
+    public function addTemplate(Template $template): static
+    {
+        if (!$this->templates->contains($template)) {
+            $this->templates->add($template);
+            $template->setUser($this);
+        }
+
+        return $this;
+    }
+
+    public function removeTemplate(Template $template): static
+    {
+        if ($this->templates->removeElement($template)) {
+            // set the owning side to null (unless already changed)
+            if ($template->getUser() === $this) {
+                $template->setUser(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection
+     */
+    public function getNotes(): Collection
+    {
+        return $this->notes;
+    }
+
+    public function addNote(Note $note): static
+    {
+        if (!$this->notes->contains($note)) {
+            $this->notes->add($note);
+            $note->setUser($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNote(Note $note): static
+    {
+        if ($this->notes->removeElement($note)) {
+            // set the owning side to null (unless already changed)
+            if ($note->getUser() === $this) {
+                $note->setUser(null);
+            }
+        }
+
+        return $this;
+    }
+
+    public function jsonSerialize(): array
+    {
+        return [
+            'id' => $this->id,
+            'email' => $this->email,
+            'name' => $this->name,
+        ];
+    }
+}
diff --git a/src/Repository/BibleRepository.php b/src/Repository/BibleRepository.php
new file mode 100644
index 0000000..9a0a64b
--- /dev/null
+++ b/src/Repository/BibleRepository.php
@@ -0,0 +1,57 @@
+
+ */
+class BibleRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Bible::class);
+    }
+
+    public function findRange(Bible $bible, array $passage): array
+    {
+        return $this->createQueryBuilder('b')
+            ->andWhere('b.book = :book')
+            ->andWhere('b.chapter = :chapter')
+            ->andWhere('b.verse BETWEEN :verseStart AND :verseEnd')
+            ->setParameter('book', $bible->getBook())
+            ->setParameter('chapter', $bible->getChapter())
+            ->setParameter('verseStart', $passage[0])
+            ->setParameter('verseEnd', $passage[1])
+            ->getQuery()
+            ->getResult();
+    }
+
+    //    /**
+    //     * @return Bible[] Returns an array of Bible objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('b')
+    //            ->andWhere('b.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('b.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Bible
+    //    {
+    //        return $this->createQueryBuilder('b')
+    //            ->andWhere('b.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/NoteRepository.php b/src/Repository/NoteRepository.php
new file mode 100644
index 0000000..52bfe34
--- /dev/null
+++ b/src/Repository/NoteRepository.php
@@ -0,0 +1,56 @@
+
+ */
+class NoteRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Note::class);
+    }
+
+    public function getLast4Notes(?User $user): array
+    {
+        $ret = $this->createQueryBuilder('n')
+            ->where('n.user = :user')
+            ->setParameter('user', (string) $user->getId())
+            ->orderBy('n.date', 'DESC')
+            ->setMaxResults(4)
+            ->getQuery()
+            ->getResult();
+        return $ret;
+    }
+
+    //    /**
+    //     * @return Note[] Returns an array of Note objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('n')
+    //            ->andWhere('n.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('n.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Note
+    //    {
+    //        return $this->createQueryBuilder('n')
+    //            ->andWhere('n.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/ReferenceRepository.php b/src/Repository/ReferenceRepository.php
new file mode 100644
index 0000000..178e950
--- /dev/null
+++ b/src/Repository/ReferenceRepository.php
@@ -0,0 +1,52 @@
+
+ */
+class ReferenceRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Reference::class);
+    }
+
+    public function findByType(string $type): array
+    {
+        return $this->createQueryBuilder('r')
+            ->andWhere('r.type = :val')
+            ->setParameter('val', $type)
+            ->getQuery()
+            ->getResult();
+    }
+
+    //    /**
+    //     * @return Reference[] Returns an array of Reference objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('r')
+    //            ->andWhere('r.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('r.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Reference
+    //    {
+    //        return $this->createQueryBuilder('r')
+    //            ->andWhere('r.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/SeriesRepository.php b/src/Repository/SeriesRepository.php
new file mode 100644
index 0000000..dac03b6
--- /dev/null
+++ b/src/Repository/SeriesRepository.php
@@ -0,0 +1,43 @@
+
+ */
+class SeriesRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Series::class);
+    }
+
+    //    /**
+    //     * @return Series[] Returns an array of Series objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('s')
+    //            ->andWhere('s.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('s.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Series
+    //    {
+    //        return $this->createQueryBuilder('s')
+    //            ->andWhere('s.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/SpeakerRepository.php b/src/Repository/SpeakerRepository.php
new file mode 100644
index 0000000..46078f0
--- /dev/null
+++ b/src/Repository/SpeakerRepository.php
@@ -0,0 +1,43 @@
+
+ */
+class SpeakerRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Speaker::class);
+    }
+
+    //    /**
+    //     * @return Speaker[] Returns an array of Speaker objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('s')
+    //            ->andWhere('s.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('s.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Speaker
+    //    {
+    //        return $this->createQueryBuilder('s')
+    //            ->andWhere('s.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/TemplateRepository.php b/src/Repository/TemplateRepository.php
new file mode 100644
index 0000000..2dfa8a4
--- /dev/null
+++ b/src/Repository/TemplateRepository.php
@@ -0,0 +1,43 @@
+
+ */
+class TemplateRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Template::class);
+    }
+
+    //    /**
+    //     * @return Template[] Returns an array of Template objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('t')
+    //            ->andWhere('t.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('t.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?Template
+    //    {
+    //        return $this->createQueryBuilder('t')
+    //            ->andWhere('t.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}
diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php
new file mode 100644
index 0000000..4f2804e
--- /dev/null
+++ b/src/Repository/UserRepository.php
@@ -0,0 +1,60 @@
+
+ */
+class UserRepository extends ServiceEntityRepository implements PasswordUpgraderInterface
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, User::class);
+    }
+
+    /**
+     * Used to upgrade (rehash) the user's password automatically over time.
+     */
+    public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void
+    {
+        if (!$user instanceof User) {
+            throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class));
+        }
+
+        $user->setPassword($newHashedPassword);
+        $this->getEntityManager()->persist($user);
+        $this->getEntityManager()->flush();
+    }
+
+    //    /**
+    //     * @return User[] Returns an array of User objects
+    //     */
+    //    public function findByExampleField($value): array
+    //    {
+    //        return $this->createQueryBuilder('u')
+    //            ->andWhere('u.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->orderBy('u.id', 'ASC')
+    //            ->setMaxResults(10)
+    //            ->getQuery()
+    //            ->getResult()
+    //        ;
+    //    }
+
+    //    public function findOneBySomeField($value): ?User
+    //    {
+    //        return $this->createQueryBuilder('u')
+    //            ->andWhere('u.exampleField = :val')
+    //            ->setParameter('val', $value)
+    //            ->getQuery()
+    //            ->getOneOrNullResult()
+    //        ;
+    //    }
+}