diff --git a/src/account/admin.py b/src/account/admin.py
index b9e5817dfac078d71887a8d90fdda504257bb88a..3977099f0b803d0214933039309e11ae5162b5bf 100644
--- a/src/account/admin.py
+++ b/src/account/admin.py
@@ -1,5 +1,6 @@
 from django.contrib import admin
 from . import models
+from solo.admin import SingletonModelAdmin
 
 
 @admin.register(models.Profile)
@@ -14,3 +15,4 @@ class ProfileAdmin(admin.ModelAdmin):
 
 # Register your models here.
 admin.site.register(models.GroupChoice)
+admin.site.register(models.Deadline, SingletonModelAdmin)
diff --git a/src/account/migrations/0011_deadline.py b/src/account/migrations/0011_deadline.py
new file mode 100644
index 0000000000000000000000000000000000000000..e88ed12d346eefbc0226895bd725d1bc49541928
--- /dev/null
+++ b/src/account/migrations/0011_deadline.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-25 18:42
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0010_auto_20180124_1929'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Deadline',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('deadline', models.DateField()),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+    ]
diff --git a/src/account/migrations/0012_auto_20180125_1957.py b/src/account/migrations/0012_auto_20180125_1957.py
new file mode 100644
index 0000000000000000000000000000000000000000..92845d1c75bcd23abaf68710d8c4bf93162fc7dd
--- /dev/null
+++ b/src/account/migrations/0012_auto_20180125_1957.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-25 18:57
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0011_deadline'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='deadline',
+            name='deadline',
+            field=models.DateField(null=True),
+        ),
+    ]
diff --git a/src/account/models.py b/src/account/models.py
index 9c9f6825eabda79f1ca0363ced2c56c691959299..08fe3b72af54ba8e9eaa5fbee8dd8e38f31e4e79 100644
--- a/src/account/models.py
+++ b/src/account/models.py
@@ -1,5 +1,6 @@
 from django.db import models
 from django.contrib.auth.models import User
+from solo.models import SingletonModel
 
 
 class GroupChoice(models.Model):
@@ -28,3 +29,7 @@ class Profile(models.Model):
 
     def __str__(self):
         return self.user.username
+
+
+class Deadline(SingletonModel):
+    deadline = models.DateField(null=True)
diff --git a/src/account/serializers.py b/src/account/serializers.py
index 92a0828d55c5b8cd3a575ba0d16cb9f4711f87c8..e04ea5808d8183f6be4c64d23ec826497cfe6ba5 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -14,3 +14,8 @@ class ProfileSerializer(serializers.ModelSerializer):
     class Meta:
         model = models.Profile
         fields = ('id', 'join_date', '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")
+        return data
diff --git a/src/kszkepzes/settings/__init__.py b/src/kszkepzes/settings/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/kszkepzes/settings.py b/src/kszkepzes/settings/base.py
similarity index 99%
rename from src/kszkepzes/settings.py
rename to src/kszkepzes/settings/base.py
index db85da936cb6bb127570816efbae7d436ec7eaa1..c34b78ca760e4db8ae614b18dc5351a563776aae 100644
--- a/src/kszkepzes/settings.py
+++ b/src/kszkepzes/settings/base.py
@@ -40,6 +40,7 @@ INSTALLED_APPS = [
     'django_extensions',
     'rest_framework',
     'social_django',
+    'solo',
     'authsch',
     'homework',
     'account',
diff --git a/src/kszkepzes/settings/local.py b/src/kszkepzes/settings/local.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b5ed21c9e3f65438f966db7f1913bc34b7ffa97
--- /dev/null
+++ b/src/kszkepzes/settings/local.py
@@ -0,0 +1 @@
+from .base import *
diff --git a/src/kszkepzes/settings/production.py b/src/kszkepzes/settings/production.py
new file mode 100644
index 0000000000000000000000000000000000000000..cc1d89fb470285c194edbd313e525730b9221aa5
--- /dev/null
+++ b/src/kszkepzes/settings/production.py
@@ -0,0 +1,14 @@
+from .base import *
+
+DEBUG = True
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.postgresql',
+        'NAME': os.getenv('DB_NAME', 'kszkepzes'),
+        'USER': os.getenv('DB_USER'),
+        'PASSWORD': os.getenv('DB_PASSWORD'),
+        'HOST': os.getenv('DB_HOST', 'localhost'),
+        'PORT': os.getenv('DB_PORT', 5432),
+    }
+}
diff --git a/src/kszkepzes/wsgi.py b/src/kszkepzes/wsgi.py
index 693ce0202c598857f3c85898ceb1494ad735381e..12023b6a78e7c9bbb5cc7e48d9d4f63b9eba7b3e 100644
--- a/src/kszkepzes/wsgi.py
+++ b/src/kszkepzes/wsgi.py
@@ -11,6 +11,6 @@ import os
 
 from django.core.wsgi import get_wsgi_application
 
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kszkepzes.settings")
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kszkepzes.settings.production")
 
 application = get_wsgi_application()
diff --git a/src/manage.py b/src/manage.py
index 68a31626ba48090be7d4cf5607bc718c974c6aff..e4402b7b44c4dde5fabcac097975a806d90b055f 100755
--- a/src/manage.py
+++ b/src/manage.py
@@ -3,7 +3,7 @@ import os
 import sys
 
 if __name__ == "__main__":
-    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kszkepzes.settings")
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kszkepzes.settings.local")
     try:
         from django.core.management import execute_from_command_line
     except ImportError: