diff --git a/.gitignore b/.gitignore
index 5d534b58810e9aadff76925e424c26ffa166e272..b0af3886860594515460f1df3d25c624bed52200 100644
--- a/.gitignore
+++ b/.gitignore
@@ -104,3 +104,4 @@ GitHub.sublime-settings
 !.vscode/launch.json
 !.vscode/extensions.json
 .history
+db.sqlite3
diff --git a/django_apps/settings.py b/django_apps/settings.py
index 41de1bcb82a64d519304848745b8e7e8993229f3..2fca22b0505bf8a1e40ab303c647483ca1e8af68 100644
--- a/django_apps/settings.py
+++ b/django_apps/settings.py
@@ -129,5 +129,5 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 
 # Custom settings AUTH
 
-LOGIN_REDIRECT_URL = 'index'
+LOGIN_REDIRECT_URL = 'home'
 LOGOUT_REDIRECT_URL = 'index'
diff --git a/requirements.txt b/requirements.txt
index 7dd6fb476d59d89ab95cd909c6b0a197771dc553..83d66431530342db426469989fa4a293a3928085 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,18 +1,49 @@
+appdirs==1.4.4
 asgiref==3.3.4
-asn1crypto==0.24.0
+asn1crypto==1.4.0
+backcall==0.2.0
+cffi==1.14.6
 confusable-homoglyphs==3.2.0
-cryptography==2.6.1
+cryptography==3.3.2
+dbus-python==1.2.16
+decorator==5.0.9
+distlib==0.3.1
 Django==3.2.3
-django-registration==3.1.2
+django-registration==3.2
 entrypoints==0.3
-keyring==17.1.1
-keyrings.alt==3.1.1
+filelock==3.0.12
+importlib-metadata==1.6.0
+ipython==7.27.0
+ipython-genutils==0.2.0
+jedi==0.18.0
+jeepney==0.6.0
+keyring==22.0.1
+keyrings.alt==4.0.2
+Mako==1.1.3
+Markdown==3.3.4
+MarkupSafe==1.1.1
+matplotlib-inline==0.1.2
+more-itertools==4.2.0
+parso==0.8.2
+pexpect==4.8.0
+pickleshare==0.7.5
+prompt-toolkit==3.0.20
+ptyprocess==0.7.0
+pycairo==1.20.1
+pycparser==2.20
 pycrypto==2.6.1
-PyGObject==3.30.4
+pycryptodomex==3.9.7
+Pygments==2.7.1
+PyGObject==3.38.0
 pytz==2021.1
-pyxdg==0.25
-SecretStorage==2.3.1
-six==1.12.0
+pyxdg==0.27
+PyYAML==5.3.1
+SecretStorage==3.3.1
+six==1.16.0
 sqlparse==0.4.1
+traitlets==5.0.5
 typing-extensions==3.10.0.0
-virtualenv==15.1.0
+virtualenv==20.4.0+ds
+wcwidth==0.2.5
+xdg==5
+zipp==1.0.0
diff --git a/sifrovacka/admin.py b/sifrovacka/admin.py
index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..30aa8666949934afc40e04d4e2a0536b14d10d08 100644
--- a/sifrovacka/admin.py
+++ b/sifrovacka/admin.py
@@ -1,3 +1,9 @@
 from django.contrib import admin
 
 # Register your models here.
+
+from . import models
+
+admin.site.register(models.Sifrovacka)
+admin.site.register(models.Stages)
+admin.site.register(models.Participants)
diff --git a/sifrovacka/migrations/0001_initial.py b/sifrovacka/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..169825d4a5509c6edcf12faa8a3e02b8ccf7d80d
--- /dev/null
+++ b/sifrovacka/migrations/0001_initial.py
@@ -0,0 +1,37 @@
+# Generated by Django 3.2.3 on 2021-08-12 06:56
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Sifrovacka',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('siftovacka_name', models.CharField(max_length=200)),
+                ('pub_date', models.DateTimeField(verbose_name='date published')),
+                ('startdate_sifrovacka', models.DateField()),
+                ('enddate_sifrovacka', models.DateField()),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Stages',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('stage_number', models.IntegerField()),
+                ('choice_text', models.CharField(max_length=200)),
+                ('votes', models.IntegerField(default=0)),
+                ('startdate_stages', models.DateField()),
+                ('enddate_stages', models.DateField()),
+                ('sifrovacka', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sifrovacka.sifrovacka')),
+            ],
+        ),
+    ]
diff --git a/sifrovacka/migrations/0002_auto_20210812_0714.py b/sifrovacka/migrations/0002_auto_20210812_0714.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c60c06ba91bf3714a15e372e7c72d651a571ddd
--- /dev/null
+++ b/sifrovacka/migrations/0002_auto_20210812_0714.py
@@ -0,0 +1,25 @@
+# Generated by Django 3.2.3 on 2021-08-12 07:14
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='stages',
+            name='enddate_stages',
+        ),
+        migrations.RemoveField(
+            model_name='stages',
+            name='startdate_stages',
+        ),
+        migrations.RemoveField(
+            model_name='stages',
+            name='votes',
+        ),
+    ]
diff --git a/sifrovacka/migrations/0003_auto_20210812_0733.py b/sifrovacka/migrations/0003_auto_20210812_0733.py
new file mode 100644
index 0000000000000000000000000000000000000000..085127eb01215190d9209e55d3f16b1fa92ddae0
--- /dev/null
+++ b/sifrovacka/migrations/0003_auto_20210812_0733.py
@@ -0,0 +1,23 @@
+# Generated by Django 3.2.3 on 2021-08-12 07:33
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0002_auto_20210812_0714'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='sifrovacka',
+            old_name='siftovacka_name',
+            new_name='sifrovacka_name',
+        ),
+        migrations.RenameField(
+            model_name='stages',
+            old_name='choice_text',
+            new_name='stage_name',
+        ),
+    ]
diff --git a/sifrovacka/migrations/0004_participants.py b/sifrovacka/migrations/0004_participants.py
new file mode 100644
index 0000000000000000000000000000000000000000..c971b29691161c2bbd4839d38094554053286fd1
--- /dev/null
+++ b/sifrovacka/migrations/0004_participants.py
@@ -0,0 +1,25 @@
+# Generated by Django 3.2.3 on 2021-08-12 12:09
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('sifrovacka', '0003_auto_20210812_0733'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Participants',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('participate', models.BooleanField()),
+                ('sifrovacka', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sifrovacka.sifrovacka')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]
diff --git a/sifrovacka/migrations/0005_rename_participate_participants_is_active.py b/sifrovacka/migrations/0005_rename_participate_participants_is_active.py
new file mode 100644
index 0000000000000000000000000000000000000000..b8b9086760b967c8a1c768aff61e83cfa23e92a4
--- /dev/null
+++ b/sifrovacka/migrations/0005_rename_participate_participants_is_active.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-08-30 10:41
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0004_participants'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='participants',
+            old_name='participate',
+            new_name='is_active',
+        ),
+    ]
diff --git a/sifrovacka/migrations/0006_rename_is_active_participants_inactive.py b/sifrovacka/migrations/0006_rename_is_active_participants_inactive.py
new file mode 100644
index 0000000000000000000000000000000000000000..30ea600c0f790d4aaf475a38ad29643f529e054d
--- /dev/null
+++ b/sifrovacka/migrations/0006_rename_is_active_participants_inactive.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-08-30 10:43
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0005_rename_participate_participants_is_active'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='participants',
+            old_name='is_active',
+            new_name='Inactive',
+        ),
+    ]
diff --git a/sifrovacka/migrations/0007_alter_participants_unique_together.py b/sifrovacka/migrations/0007_alter_participants_unique_together.py
new file mode 100644
index 0000000000000000000000000000000000000000..8178257c2f89c35f4e0eeab8bc3e335d879cc5b6
--- /dev/null
+++ b/sifrovacka/migrations/0007_alter_participants_unique_together.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.2.3 on 2021-08-30 10:52
+
+from django.conf import settings
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('sifrovacka', '0006_rename_is_active_participants_inactive'),
+    ]
+
+    operations = [
+        migrations.AlterUniqueTogether(
+            name='participants',
+            unique_together={('user', 'sifrovacka')},
+        ),
+    ]
diff --git a/sifrovacka/models.py b/sifrovacka/models.py
index 71a836239075aa6e6e4ecb700e9c42c95c022d91..fe5d66d680156c2645fd95ab9cb02726d2b116b5 100644
--- a/sifrovacka/models.py
+++ b/sifrovacka/models.py
@@ -1,3 +1,55 @@
 from django.db import models
 
 # Create your models here.
+
+from django.conf import settings
+
+
+class Sifrovacka(models.Model):
+    '''
+    model which describes sifrovacka
+    '''
+    sifrovacka_name = models.CharField(max_length=200)
+    pub_date = models.DateTimeField('date published')
+    startdate_sifrovacka = models.DateField()
+    enddate_sifrovacka = models.DateField()
+
+    def __str__(self):
+        return self.sifrovacka_name
+
+
+class Stages(models.Model):
+    '''
+    model which describes how many stages are in particular sifrovacka
+    '''
+    stage_name = models.CharField(max_length=200)
+    sifrovacka = models.ForeignKey(Sifrovacka, on_delete=models.CASCADE)
+    stage_number = models.IntegerField()
+#    if not stage_name_text models:
+#        stage_name = getattr(Stages, sifrovacka_name)
+#            "-" + getattr(Stages, stage_number))
+#    else:
+#        stage_name = stage_name_text
+#    votes = models.IntegerField(default=0)
+#    startdate_stages = models.DateField()
+#    enddate_stages= models.DateField()
+
+    def __str__(self):
+        return str(self.sifrovacka) + " - Stage " + str(self.stage_number)
+
+
+class Participants(models.Model):
+    '''
+    table which connects sifrovacka with users who participate
+    '''
+    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
+    sifrovacka = models.ForeignKey(Sifrovacka, on_delete=models.CASCADE)
+    Inactive = models.BooleanField()
+
+    def __str__(self):
+        return str(self.user) + " - " + str(self.sifrovacka)
+
+
+    class Meta:
+        unique_together = [['user', 'sifrovacka']]
+
diff --git a/sifrovacka/templates/home.html b/sifrovacka/templates/home.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5ff0d0d7b24743e87140dc965611ecb6eda7a7c
--- /dev/null
+++ b/sifrovacka/templates/home.html
@@ -0,0 +1,45 @@
+{% extends "base.html" %}
+{% if request.user.is_authenticated %}
+ {% block content %}
+  <ul>
+   <p> <b>Dostupne sifrovacky: </b> <a href={% url 'index' %}a> Zde </a></p>
+{% comment %}
+ {% if available_sifrovacky_list %}
+
+  {% for sifrovacka in avalable_sifrovacky_list %}
+    <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka }}</a></li>
+   {% endfor %}
+  </ul>
+{% else %}
+ <p>Žádné šifrovačky nejsou aktivní.</p>
+ {% endif %}
+
+{% endcomment %}
+
+ {% if participation_sifrovacky_list %}
+  <ul>
+   <p> <b>Přihlášené sifrovacky: </b> </p>
+   {% for sifrovacka in participation_sifrovacky_list %}
+    <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka }}</a></li>
+   {% endfor %}
+  </ul>
+{% else %}
+ <p>Žádné šifrovačky nejsou aktivní.</p>
+{% endif %}
+{% endblock %}
+{{% endif %}
+
+{% comment %}
+{% block content %}
+  {% if active_sifrovacky_list %}
+   <ul>
+    <p> <b>Aktivni sifrovacky: </b> </p>
+    {% for sifrovacka in active_sifrovacky_list %}
+     <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li>
+    {% endfor %}
+   </ul>
+ {% else %}
+  <p>Žádné šifrovačky nejsou aktivní.</p>
+ {% endif %}
+ {% endblock %}
+{% endcomment %}
diff --git a/sifrovacka/templates/index.html b/sifrovacka/templates/index.html
index db7423572a5af384b03c4f1d5dd7307e2d97d25b..f58a1ae29767c13c1c0029063f928a70aa233312 100644
--- a/sifrovacka/templates/index.html
+++ b/sifrovacka/templates/index.html
@@ -1,12 +1,16 @@
 {% extends "base.html" %}
 
 {% block content %}
-{% if active_sifrovacka_list %}
- <ul>
- {% for sifrovacka in active_sifrovacka_list %}
-  <li><a href="/sifrovacka/{{ sifrovacka.id }}/">{{ sifrovacka.sifrovacka_name }}</a></li>
- {% endfor %}
- </ul>
+ {% if sifrovacky_list %}
+  <ul>
+   <p> <b>Aktivni sifrovacky: </b> </p>
+   {% for sifrovacka in sifrovacky_list %}
+    <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li>
+   {% endfor %}
+   {% for sifrovacka in participants.all %}
+    <li><a href="/sifrovacka/{{ sifrovacka.id }}">{{ sifrovacka.sifrovacka_name }}</a></li>
+   {% endfor %}
+  </ul>
 {% else %}
  <p>Žádné šifrovačky nejsou aktivní.</p>
 {% endif %}
diff --git a/sifrovacka/templates/sifrovacka.html b/sifrovacka/templates/sifrovacka.html
new file mode 100644
index 0000000000000000000000000000000000000000..4e779f184b9cf5028280f52ab9e506b37fd1b59d
--- /dev/null
+++ b/sifrovacka/templates/sifrovacka.html
@@ -0,0 +1,20 @@
+{% extends "base.html" %}
+
+{% block content %}
+<p> Toto je detail sifrovacky se jmenem: <b>{{sifrovacka_detail}} </b> a id: {{sifrovacka_id}}. </p>
+</br>
+<p> Pocet ukolu: <b> {{ sifrovacka_stage_count }} </b> </br>
+    Obtiznost: NONE</br>
+    Casova narocnost: NONE</p>
+
+</br>
+</br>
+</br>
+</br>
+Debug:
+<div>
+{% for stage in sifrovacka_stages %}
+ {{ stage }}</br>
+{% endfor %}
+</div>
+{% endblock %}
diff --git a/sifrovacka/urls.py b/sifrovacka/urls.py
index aa564fb5fb70daaf0db84c83da208faf64af0155..fd54650f39434ed0a70751a75f7df41f516f3cdb 100644
--- a/sifrovacka/urls.py
+++ b/sifrovacka/urls.py
@@ -6,6 +6,10 @@ urlpatterns = [
     # accounts uls
     path('accounts/', include('django_registration.backends.one_step.urls')),
     path('accounts/', include('django.contrib.auth.urls')),
+    # the 'name' value as called by the {% url %} template tag
+    path('<int:sifrovacka_id>/', views.detail, name='detail'),
+    # home page
+    path('home/', views.home, name='home'),
     # /
     path('', views.index, name='index'),
 ]
diff --git a/sifrovacka/views.py b/sifrovacka/views.py
index d5b43ba1239b8c6970ee30d8769979b404a76f88..ddf73c5641715c614b580c5a40d28a99076a4417 100644
--- a/sifrovacka/views.py
+++ b/sifrovacka/views.py
@@ -4,14 +4,46 @@ from django.shortcuts import render
 from django.http import HttpResponse
 from django.template import loader
 from django.contrib.auth import login,logout
+from .models import Sifrovacka, Stages, Participants
+
+
+def detail(request, sifrovacka_id):
+    sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id)
+    sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail)
+    sifrovacka_stage_count = sifrovacka_stages.count()
+    context = {"sifrovacka_id": sifrovacka_id,
+               "sifrovacka_detail": sifrovacka_detail,
+               "sifrovacka_stages": sifrovacka_stages,
+               "sifrovacka_stage_count": sifrovacka_stage_count}
+    return render(request, 'sifrovacka.html', context)
+
+def home(request):
+    all_sifrovacky_list = Sifrovacka.objects.order_by('id')
+    # only for auth users
+    if request.user.is_authenticated:
+        participation_sifrovacky_list = Participants.objects.filter(user =
+                                        request.user).order_by('sifrovacka_id')
+                                        #request.user).order_by('sifrovacka_id')
+       # available_sifrovacky_list = all_sifrovacky_list.difference(
+                                    #participation_sifrovacky_list)
+    else:
+        participation_sifrovacky_list = None
+
+   # sifrovacka_name = Sifrovacka.objects.get(id = sifrovacka_id)
+
+    context = {"active_sifrovacky_list": all_sifrovacky_list,
+               "participation_sifrovacky_list": participation_sifrovacky_list}
+              
+#    import pdb
+#    pdb.set_trace()
+    return render(request, 'home.html', context)
 
-#def index(request):
-#        return HttpResponse("Hello, world. You're at the polls index.")
 def index(request):
-    template = loader.get_template('index.html')
-    context = {"": ""}
+    list_all_sifrovacky = Sifrovacka.objects.all()
+    context = {"sifrovacky_list": list_all_sifrovacky}
+    #context = {"": ""}
 
-    return HttpResponse(template.render(context, request))
+    return render(request, 'index.html', context)