diff --git a/app/models.py b/app/models.py
index d16bcfae81445cab6aad45e4a7d95d36035905e0..9b232c1a3ee6bcf9819f8a95224c25ae27bb6f44 100644
--- a/app/models.py
+++ b/app/models.py
@@ -257,7 +257,7 @@ class Avatar(HashidMixin, FileMixin, db.Model):
     # Primary key
     id = db.Column(db.Integer, primary_key=True)
     # Foreign keys
-    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), unique=True)
+    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
     
     @property
     def path(self):
@@ -276,7 +276,16 @@ class Avatar(HashidMixin, FileMixin, db.Model):
             **self.file_mixin_to_json_serializeable()
         }
         return json_serializeable
-    
+
+
+corpus_followers = db.Table(
+    'corpus_followers',
+    db.Model.metadata,
+    db.Column('user_id', db.ForeignKey('users.id'), primary_key=True),
+    db.Column('corpus_id', db.ForeignKey('corpora.id'), primary_key=True)
+)
+
+
 class User(HashidMixin, UserMixin, db.Model):
     __tablename__ = 'users'
     # Primary key
@@ -327,6 +336,13 @@ class User(HashidMixin, UserMixin, db.Model):
         cascade='all, delete-orphan',
         lazy='dynamic'
     )
+    followed_corpora = db.relationship(
+        'Corpus',
+        secondary=corpus_followers,
+        primaryjoin=(corpus_followers.c.user_id == id),
+        backref=db.backref('followers', lazy='dynamic'),
+        lazy='dynamic'
+    )
     jobs = db.relationship(
         'Job',
         backref='user',
diff --git a/migrations/versions/4aa88f253dab_.py b/migrations/versions/4aa88f253dab_.py
new file mode 100644
index 0000000000000000000000000000000000000000..2351532c2d61e85bc155dbbaaadf5bcf16a86e73
--- /dev/null
+++ b/migrations/versions/4aa88f253dab_.py
@@ -0,0 +1,31 @@
+"""Add corpus_followers table
+
+Revision ID: 4aa88f253dab
+Revises: 5b2a6e590166
+Create Date: 2023-01-12 14:47:39.492875
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '4aa88f253dab'
+down_revision = '5b2a6e590166'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.create_table(
+        'corpus_followers',
+        sa.Column('user_id', sa.Integer(), nullable=False),
+        sa.Column('corpus_id', sa.Integer(), nullable=False),
+        sa.ForeignKeyConstraint(['corpus_id'], ['corpora.id'], ),
+        sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+        sa.PrimaryKeyConstraint('user_id', 'corpus_id')
+    )
+
+
+def downgrade():
+    op.drop_table('corpus_followers')