diff --git a/README.md b/README.md
index 54325b8780c9a722ad996876a9d0aa807d4fb94f..2c909add3c50b1aca6c05a9ed78de130f9c48537 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
-# todo-hf
+python3 -m venv venv
+source venv/bin/activate
+pip3 install -r requirements.txt
+flask run --host 0.0.0.0
 
diff --git a/app.py b/app.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad0e02a40e82007639d88f7c995b1d77c2579f47
--- /dev/null
+++ b/app.py
@@ -0,0 +1,81 @@
+from flask import Flask, request 
+from flask import render_template # jinja2-hĂśz
+from flask import redirect # ĂĄtirĂĄnyĂ­tĂĄs
+from flask_sqlalchemy import SQLAlchemy # orm
+
+app = Flask(__name__) # init 
+app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' # adatbĂĄzis elĂŠrĂŠsi Ăştja
+app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True # adatbĂĄzis mĹąveletek logolĂĄsa
+db = SQLAlchemy(app) # sqlalchemy init
+
+# ORM - Object Relation Mapping
+# OsztĂĄlybĂłl lesz az adatbĂĄzis tĂĄbla
+# A vĂĄtlozĂłk lesznek a tĂĄbla atribĂştumai
+# Az osztĂĄly pĂŠldĂĄnyaibĂłl a tĂĄbla elemei
+# SegĂ­tsĂŠgĂŠvel a kĂłdban tudunk lekĂŠrdezĂŠsket, adatbĂĄzismĹąveleteket vĂŠgrehalytani, nem kell SQL lekĂŠrdezĂŠsket Ă­rni.
+
+class Task(db.Model): 
+    id = db.Column(db.Integer, primary_key=True)
+    content = db.Column(db.Text)
+    done = db.Column(db.Boolean, default=False)
+
+# konstruktor, pĂŠldĂŠny lĂŠtrehozĂĄsakor meg kell adni a feladatot
+# done alapĂŠrtelmezetten hamis
+    def __init__(self, content):  
+        self.content = content
+        self.done = False
+
+    def __repr__(self):
+        return '<Content %s>' % self.content
+
+# lĂŠtrehozzuk a tĂĄblĂĄt
+db.create_all()
+
+# NĂŠgy darab vĂŠgpontot kell lĂŠtrehoznunk
+#  - / Ez adja vissza a templatet
+#  - /task, POST segĂ­tsĂŠgĂŠvel fogunk Ăşj feladatot hozzĂĄadni
+#  - /done/<id> ĂĄthuzza az elemet, ezzel jelezzĂźk, hogy kĂŠsz
+#  - /delete/<id> tĂśrli az elemet
+
+# BeĂĄllĂ­tjuk melyik utvonalra ĂŠs milyen kĂŠrĂŠsekre fusson le a fgv
+# AlapbĂłl ha  a methodot nem jelĂśljĂźk akkor get
+@app.route('/')
+def tasks_list():
+    tasks = Task.query.all() # LekĂŠrjĂźk az Ăśsszes elemet
+    return render_template('list.html', tasks=tasks) # Átadjuk a templatenek
+
+
+@app.route('/task', methods=['POST'])
+def add_task():
+    # Flaskban a fgv a kĂŠrĂŠst eltudjuk ĂŠrni
+    content = request.form['content'] # A kérésből kivesszük az elemt
+    if not content: # Ellenőrizzuk(validáljuk) nem e üres
+        return redirect('/')
+
+    task = Task(content) # LĂŠtrehozzuk a pĂŠldĂŠnyt, a db tĂĄbla elemĂŠt, egy sorĂĄt
+    db.session.add(task) # HozzĂĄadjuk a tĂĄblĂĄhoz
+    # Lehet tĂśrĂślni is a db.session.delete() segĂ­tsĂŠgĂŠvel 
+    db.session.commit() # MentjĂźk a vĂĄltozĂĄsokat
+    return redirect('/') # Visszairnyítjuk magunkat a kezdőlapra, megjelenjenek a változások
+
+
+@app.route('/done/<int:task_id>')
+def resolve_task(task_id):
+    task = Task.query.get(task_id) # LekĂŠrjĂźk az elemet
+
+    if not task: # Ellenőrizzuk hogy létezik e
+        return redirect('/')
+    # Ha kĂŠsz van akkor hamis, ha nincs akkor igaz
+    if task.done: 
+        task.done = False
+    else:
+        task.done = True
+
+    db.session.commit() # MentjĂźk
+    return redirect('/') # VisszairĂĄnyĂ­tjuk magunkat, megjelennek a vĂĄltozĂĄsok
+
+
+# Feladatotok az elemtĂśrlĂŠs megvlĂłsĂ­tĂĄsa.
+
+if __name__ == '__main__':
+    app.run()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2a7fd44c174ab27a8b5d728de43ddcc012f0dd07
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+flask
+flask-sqlalchemy
+black
+flake8
\ No newline at end of file
diff --git a/static/styles.css b/static/styles.css
new file mode 100644
index 0000000000000000000000000000000000000000..c7e40811fe8a7cd7f2311559f7d322e4b57c65fc
--- /dev/null
+++ b/static/styles.css
@@ -0,0 +1,3 @@
+ul {
+    color: green;    
+  }
\ No newline at end of file
diff --git a/templates/list.html b/templates/list.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d77d2b52c4dfa13a29602fed2c077818a49dcf4
--- /dev/null
+++ b/templates/list.html
@@ -0,0 +1,31 @@
+<!-- KĂŠt dolgot szeretnĂŠnk
+ - kilistĂĄzni a feladatokat
+ - Ăşj feladatot felvenni egy formon 
+ - HF: delete gomb lĂŠtrehozĂĄsa -->
+ 
+ <!-- CSS import -->
+ <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}"/>
+
+ <ul>
+<!-- A megkapott taskokbol hozzuk lĂŠtre az oszlopokat -->
+{% for task in tasks %} 
+    <!-- Lista egy elemĂŠnek lĂŠtrehozĂĄsa -->
+    <li>
+        <!-- Ha kĂŠsz kihuzzuk az elemt -> if -->
+        <!-- Ne felejtsĂźk el lezĂĄrni az if-et -->
+        {% if task.done %} <strike> {% endif %}{{ task.content }} {% if task.done %} </strike>{% endif %}
+        <!-- Hozzunk lĂŠtre egy linket ami meghĂ­vja a task id-jĂĄt -->
+        <a href="/done/{{ task.id }}">X</a>
+        
+    </li>
+<!-- ZĂĄrjuk le a for-t -->
+{% endfor %}
+</ul>
+
+<!-- Hozzuk lĂŠtre a formot -->
+<form action="/task" method="post">
+    <!-- Kell egy szöveges mező és egy gomb -->
+    <p><input type="text" name="content"></p>
+    <!-- GombnyomsĂĄra elkĂźldi a kĂŠrĂŠst -->
+    <input type="submit" value="Add task">
+</form>
\ No newline at end of file