diff --git a/src/actions/homework.js b/src/actions/homework.js
index 144ed3cb8d0b19b8b2c03aec2b8fcaf1b9924451..ccd4c8b1461226aa73bf9e6133e5354332d3f266 100644
--- a/src/actions/homework.js
+++ b/src/actions/homework.js
@@ -4,6 +4,8 @@ import { GET_TASKS,
   ADD_TASK,
   DELETE_TASK,
   WRITE_TASK,
+  EDIT_TASK,
+  SELECT_TASK,
   CLEAR_WRITE,
   ADD_SOLUTION,
   WRITE_SOLUTION,
@@ -62,6 +64,32 @@ export const addTask = ({ title, text, deadline }) => (
   }
 );
 
+export const editTask = ({
+  id,
+  title,
+  text,
+  deadline,
+}) => (
+  async (dispatch) => {
+    try {
+      const response = await axios.patch(`/api/v1/homework/tasks/${id}/`, {
+        title,
+        text,
+        deadline,
+      });
+      if (response.data.id) {
+        dispatch({
+          type: EDIT_TASK,
+          payload: response.data,
+
+        });
+      }
+    } catch (e) {
+      console.log(e);
+    }
+  }
+);
+
 export const deleteTask = task => (
   async (dispatch) => {
     try {
@@ -77,6 +105,12 @@ export const deleteTask = task => (
     }
   });
 
+export const setSelectedTask = task => (
+  (dispatch) => {
+    dispatch({ type: SELECT_TASK, payload: task });
+  }
+);
+
 export const addDocument = ({
   name, description, file, solution,
 }) => (
@@ -117,7 +151,7 @@ export const addSolution = ({
         note,
       });
       if (response.data.id) {
-        console.log(response.data.id)
+        console.log(response.data.id);
         dispatch({
           type: ADD_SOLUTION,
           payload: response.data,
diff --git a/src/actions/types.js b/src/actions/types.js
index 029a7155d742a21329302e79fa37793d6d5d753e..9d9ffca6c57401bbf78d6a88ef2424c54fcd324c 100644
--- a/src/actions/types.js
+++ b/src/actions/types.js
@@ -14,7 +14,9 @@ export const SELECT_NEWS = 'select_news';
 export const GET_TASKS = 'get_homeworks';
 export const ADD_TASK = 'add_task';
 export const DELETE_TASK = 'delete_task';
+export const EDIT_TASK = 'edit_task';
 export const WRITE_TASK = 'write_task';
+export const SELECT_TASK = 'select_task';
 export const WRITE_SOLUTION = 'write_solution';
 export const WRITE_SOLUTION_FILE = 'write_solution_file';
 export const WRITE_TASK_DEADLINE = 'write_task_deadline';
diff --git a/src/components/forms/EditTaskForm.js b/src/components/forms/EditTaskForm.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1592f6e01fe5dcb81726a4bfcaebc040783428e
--- /dev/null
+++ b/src/components/forms/EditTaskForm.js
@@ -0,0 +1,110 @@
+import React, { Component } from 'react';
+import { Modal, Button, Form, Input, TextArea, Icon } from 'semantic-ui-react';
+import { connect } from 'react-redux';
+import { DateTimeInput } from 'semantic-ui-calendar-react';
+import { writeTask, writeTaskDeadline, editTask, clearWrite } from '../../actions/homework';
+
+class EditTaskForm extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      showModal: false,
+    };
+  }
+
+  render() {
+    const {
+      id,
+      title,
+      text,
+      deadline,
+    } = this.props.selectedTask;
+    return (
+      <Modal
+        open={this.state.showModal}
+        onOpen={this.props.onClick}
+        trigger={
+          <Button
+            inverted
+            style={{ marginRight: '2em' }}
+            color='orange'
+            onClick={() => { this.setState({ showModal: true }); }}
+          >
+            <Icon name='edit' /> MĂłdosĂ­tĂĄs
+          </Button>
+        }
+      >
+        <Modal.Header>A {title} nevĹą feladat mĂłdosĂ­tĂĄsa:</Modal.Header>
+        <Modal.Content>
+          <Form>
+            <Form.Field
+              control={Input}
+              label='CĂ­m:'
+              name='title'
+              onChange={e => this.props.writeTask(e)}
+              value={title}
+              placeholder='Add meg a feladat cĂ­mĂŠt.'
+            />
+            <Form.Field
+              control={TextArea}
+              label='LeĂ­rĂĄs:'
+              name='text'
+              onChange={e => this.props.writeTask(e)}
+              value={text}
+              placeholder='Add meg a feladat leĂ­rĂĄsĂĄt...'
+            />
+            <Form.Field
+              control={DateTimeInput}
+              label='Beadási határidő:'
+              name='deadline'
+              placeholder='Beadási határidő'
+              iconPosition='left'
+              dateTimeFormat='YYYY-MM-DDTHH:mm'
+              onChange={(e, { name, value }) => {
+                this.props.writeTaskDeadline({ name, value });
+              }}
+              value={deadline}
+            />
+          </Form>
+        </Modal.Content>
+        <Modal.Actions>
+          <Button
+            inverted
+            color='red'
+            onClick={() => {
+              this.setState({ showModal: false });
+              this.props.clearWrite();
+            }}
+          >
+            <Icon name='remove' /> MĂŠgse
+          </Button>
+          <Button
+            inverted
+            color='green'
+            onClick={() => {
+              this.props.editTask({
+                id,
+                title,
+                text,
+                deadline,
+              });
+              this.setState({ showModal: false });
+              this.props.clearWrite();
+              }}
+          >
+            <Icon name='checkmark' /> MĂłdosĂ­tĂĄs
+          </Button>
+        </Modal.Actions>
+      </Modal>
+    );
+  }
+}
+
+const mapStateToProps = ({ selectedTask, user }) => ({ selectedTask, user });
+
+export default connect(mapStateToProps, {
+  writeTask,
+  writeTaskDeadline,
+  editTask,
+  clearWrite,
+})(EditTaskForm);
diff --git a/src/components/pages/Homework.js b/src/components/pages/Homework.js
index 57ca4ebaa7cf6c14fc18448d94d7437f53370bc3..3d889ca0ec5e62f810e736405a6f6b7ba3fd630f 100644
--- a/src/components/pages/Homework.js
+++ b/src/components/pages/Homework.js
@@ -10,10 +10,20 @@ import {
 } from 'semantic-ui-react';
 import { connect } from 'react-redux';
 import moment from 'moment';
-import { getTasks, getSolutions, addTask, deleteTask, addDocument, getProfiles, getDocuments } from '../../actions/homework';
+import {
+  getTasks,
+  getSolutions,
+  addTask,
+  setSelectedTask,
+  deleteTask,
+  addDocument,
+  getProfiles,
+  getDocuments,
+} from '../../actions/homework';
 import AddTaskForm from '../forms/AddTaskForm';
 import AddSolutionForm from '../forms/AddSolutionForm';
 import SolutionDetailsForm from '../forms/SolutionDetailsForm';
+import EditTaskForm from '../forms/EditTaskForm';
 import ConfirmModal from '../forms/ConfirmModal';
 
 const displayTypes = {
@@ -150,6 +160,7 @@ class Homework extends Component {
             {moment(task.deadline).format('YYYY. MM. DD. HH:mm')}
           </Table.Cell>
           <Table.Cell>
+            <EditTaskForm onClick={() => this.props.setSelectedTask(task)} />
             <ConfirmModal
               button={deleteButton}
               text='tĂśrlĂśd a kivĂĄlaszott feladatot a mĂĄr beadott megoldĂĄsokkal egyĂźtt'
@@ -303,12 +314,13 @@ class Homework extends Component {
   }
 }
 
-const mapStateToProps = ({ homeworks, user }) => ({ homeworks, user });
+const mapStateToProps = ({ selectedTask, homeworks, user }) => ({ selectedTask, homeworks, user });
 
 export default connect(
   mapStateToProps,
   {
     getTasks,
+    setSelectedTask,
     getSolutions,
     addTask,
     deleteTask,
diff --git a/src/reducers/EditTaskReducer.js b/src/reducers/EditTaskReducer.js
new file mode 100644
index 0000000000000000000000000000000000000000..0dc50e0b3cb23b8225c9a99a2d6c056f74b58bbf
--- /dev/null
+++ b/src/reducers/EditTaskReducer.js
@@ -0,0 +1,18 @@
+import { SELECT_TASK, WRITE_TASK, WRITE_TASK_DEADLINE, CLEAR_WRITE } from '../actions/types';
+
+const INITIAL_STATE = { };
+
+export default (state = INITIAL_STATE, action) => {
+  switch (action.type) {
+    case SELECT_TASK:
+      return action.payload;
+    case WRITE_TASK:
+      return { ...state, [action.target]: action.payload };
+    case WRITE_TASK_DEADLINE:
+      return { ...state, [action.target]: action.payload };
+    case CLEAR_WRITE:
+      return INITIAL_STATE;
+    default:
+      return state;
+  }
+};
diff --git a/src/reducers/HomeworksReducer.js b/src/reducers/HomeworksReducer.js
index 05262e3476c71d3550ba9a07fe84b4f38469b6a3..fa60aee79c8a321ca58f0f869afb330d18613879 100644
--- a/src/reducers/HomeworksReducer.js
+++ b/src/reducers/HomeworksReducer.js
@@ -1,4 +1,11 @@
-import { GET_TASKS, GET_SOLUTIONS, ADD_TASK, DELETE_TASK, ADD_SOLUTION, GET_PROFILES, GET_DOCUMENTS } from '../actions/types';
+import { GET_TASKS,
+  GET_SOLUTIONS,
+  ADD_TASK,
+  DELETE_TASK,
+  EDIT_TASK,
+  ADD_SOLUTION,
+  GET_PROFILES,
+  GET_DOCUMENTS } from '../actions/types';
 
 const INITIAL_STATE = {
   id: 0,
@@ -25,6 +32,17 @@ export default (state = INITIAL_STATE, action) => {
         tasks: [...state.tasks.slice(0, state.tasks.indexOf(action.payload)),
           ...state.tasks.slice(state.tasks.indexOf(action.payload) + 1)],
       };
+    case EDIT_TASK:
+      return {
+        ...state,
+        tasks: [...state.tasks.map((task) => {
+          if (task.id !== action.payload.id) {
+            return task;
+          }
+          return action.payload;
+        }),
+        ],
+      };
     case GET_PROFILES:
       return { ...state, profiles: action.payload };
     case GET_DOCUMENTS:
diff --git a/src/reducers/index.js b/src/reducers/index.js
index ff180a9621c82082581a81d33d9cb7625e74ac67..2464c572a060e17e375effcb11717ebbc430f479 100644
--- a/src/reducers/index.js
+++ b/src/reducers/index.js
@@ -10,6 +10,7 @@ import EventReducer from './EventReducer';
 import TraineeReducer from './TraineeReducer';
 import NoteReducer from './NoteReducer';
 import CorrectSolutionReducer from './CorrectSolutionReducer';
+import EditTaskReducer from './EditTaskReducer';
 
 const rootReducer = combineReducers({
   user: UserReducer,
@@ -19,6 +20,7 @@ const rootReducer = combineReducers({
   homeworks: HomeworksReducer,
   correction: CorrectSolutionReducer,
   newTask: AddTaskReducer,
+  selectedTask: EditTaskReducer,
   newSolution: AddSolutionReducer,
   events: EventReducer,
   trainees: TraineeReducer,