diff --git a/src/account/migrations/0013_auto_20180203_2007.py b/src/account/migrations/0013_auto_20180203_2007.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ac041e4d538e265f8f47fdaae0960ed54edd6b2
--- /dev/null
+++ b/src/account/migrations/0013_auto_20180203_2007.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.1 on 2018-02-03 19:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0012_auto_20180125_1957'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='profile',
+            name='join_date',
+            field=models.DateTimeField(auto_now=True),
+        ),
+    ]
diff --git a/src/account/migrations/0014_auto_20180203_2010.py b/src/account/migrations/0014_auto_20180203_2010.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ad3c0554ec582ff41cc7536f02287c77f3fdb66
--- /dev/null
+++ b/src/account/migrations/0014_auto_20180203_2010.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.1 on 2018-02-03 19:10
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0013_auto_20180203_2007'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='deadline',
+            name='deadline',
+            field=models.DateTimeField(null=True),
+        ),
+    ]
diff --git a/src/account/migrations/0015_auto_20180203_2014.py b/src/account/migrations/0015_auto_20180203_2014.py
new file mode 100644
index 0000000000000000000000000000000000000000..e823387e6830f772c4651f21c876c0ae0534f4cc
--- /dev/null
+++ b/src/account/migrations/0015_auto_20180203_2014.py
@@ -0,0 +1,23 @@
+# Generated by Django 2.0.1 on 2018-02-03 19:14
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0014_auto_20180203_2010'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profile',
+            name='updated_at',
+            field=models.DateTimeField(auto_now=True),
+        ),
+        migrations.AlterField(
+            model_name='profile',
+            name='join_date',
+            field=models.DateTimeField(auto_now_add=True),
+        ),
+    ]
diff --git a/src/account/models.py b/src/account/models.py
index 08fe3b72af54ba8e9eaa5fbee8dd8e38f31e4e79..8e86ff99fb2d707a671af6cb5b92b540f8eb2874 100644
--- a/src/account/models.py
+++ b/src/account/models.py
@@ -19,7 +19,8 @@ class GroupChoice(models.Model):
 
 
 class Profile(models.Model):
-    join_date = models.DateField(auto_now=True)
+    join_date = models.DateTimeField(auto_now_add=True, editable=False)
+    updated_at = models.DateTimeField(auto_now=True, editable=False)
     user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)
     motivation = models.TextField(null=True)
     nick = models.CharField(max_length=15, blank=True, null=True)
@@ -32,4 +33,4 @@ class Profile(models.Model):
 
 
 class Deadline(SingletonModel):
-    deadline = models.DateField(null=True)
+    deadline = models.DateTimeField(null=True)
diff --git a/src/account/serializers.py b/src/account/serializers.py
index e04ea5808d8183f6be4c64d23ec826497cfe6ba5..bee56c0464103291cef16fc206fcb781b6edc0b1 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -10,12 +10,19 @@ class ChoiceSerializer(serializers.ModelSerializer):
 
 class ProfileSerializer(serializers.ModelSerializer):
     groups = serializers.SlugRelatedField(many=True, slug_field="choice", queryset=models.GroupChoice.objects.all())
+    updated_at = serializers.DateTimeField(read_only=True)
+    signed = serializers.BooleanField()
 
     class Meta:
         model = models.Profile
-        fields = ('id', 'join_date', 'user', 'nick', 'motivation', 'signed', 'groups')
+        fields = ('id', 'join_date', 'updated_at', 'user', 'nick', 'motivation', 'signed', 'groups')
 
     def validate(self, data):
-        if data['join_date'] > models.Deadline.get_solo().deadline:
-            raise serializers.ValidationError("join_date more than deadline")
+        deadline = models.Deadline.get_solo().deadline
+        if deadline is None:
+            return data
+
+        if data['signed'] is True and data['updated_at'] > deadline:
+            raise serializers.ValidationError("You cannot join after the deadline")
+
         return data