diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php
new file mode 100644
index 0000000000000000000000000000000000000000..3492eeaf602c14e7e92315c3e8285e6e84ab32ec
--- /dev/null
+++ b/app/Http/Controllers/TaskController.php
@@ -0,0 +1,127 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Task;
+use App\TasksMember;
+class TaskController extends Controller
+{
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $user = $request->user();
+        $result = $request->has([
+            'group_id',
+            'taskname',
+            'description'
+        ]);
+        if ($result) {
+            $form = [
+                'group_id' => $request->group_id,
+                'taskname' => $request->taskname,
+                'description' => $request->description,
+                'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG')
+            ];
+            $task = Task::create($form);
+            return response(json_encode([
+                'data' => $task->toArray(),
+                'msg' => ['Success']
+            ]), 200);
+        } else {
+            return response(json_encode([
+                'err' => ['Bad Request']
+            ]), 400);
+        }
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Request $request, $taskId)
+    {
+        //
+        $user = $request->user();
+        
+        $task = Task::find($taskId)->first();
+
+        if ($task) {
+            $taskArr = $task->toArray();
+            $taskArr['members'] = $task->toArray();
+            return response(json_encode([
+                'data' => $taskArr,
+                'msg' => ['success']
+            ]), 200);
+        } else {
+            return response(json_encode([
+                'err' => ['Not Found']
+            ]), 404);
+        }
+
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $taskId)
+    {
+        $user = $request->user();
+        $result = $request->has([
+            'taskname',
+            'description',
+            'status_kanban'
+        ]);
+        if ($result) {
+            $form = [
+                'taskname' => $request->taskname,
+                'description' => $request->description,
+                'status_kanban' => $request->status_kanban
+            ];
+            $task = Task::find($taskId)->first();
+            if ($task) {
+                $task->fill($form);
+                $task->save();
+                return response(json_encode([
+                    'data' => $task->toArray(),
+                    'msg' => ['Success']
+                ]), 200);
+            } else {
+                return response(json_encode([
+                    'err' => ['Not Found']
+                ]), 404);
+            }
+        } else {
+            return response(json_encode([
+                'err' => ['Bad Request']
+            ]), 400);
+        }
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($taskId)
+    {
+        Task::destroy($taskId);
+        return response(json_encode([
+            'msg' => ['deleted']
+        ]), 200);
+    }
+}
diff --git a/app/Http/Controllers/TasksMemberController.php b/app/Http/Controllers/TasksMemberController.php
new file mode 100644
index 0000000000000000000000000000000000000000..53244c70c418f332e277e48de2479334d93eb6a1
--- /dev/null
+++ b/app/Http/Controllers/TasksMemberController.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\TasksMember;
+class TasksMemberController extends Controller
+{
+    public function add(Request $req) {
+        $user = $request->user();
+        $result = $request->has([
+            'task_id',
+            'user_id'
+        ]);
+        if ($result) {
+            $memberTask = TasksMember::create([
+                'task_id' => $req->task_id,
+                'user_id' => $req->user_id
+            ]);
+            return response(json_encode([
+                'data' => $memberTask->toArray(),
+                'msg' => ['success']
+            ]), 200);
+        } else {
+            return response(json_encode([
+                'err' => ['Bad Request']
+            ]), 400);
+        }
+    }
+}
diff --git a/app/Task.php b/app/Task.php
index a30435d2b4068ba4ce72d0dc2a5fbd0041174d28..716e830a7c0577cf43e7a08b902f700e6887e909 100644
--- a/app/Task.php
+++ b/app/Task.php
@@ -7,4 +7,8 @@ use Illuminate\Database\Eloquent\Model;
 class Task extends Model
 {
     //
+
+    public function members() {
+        return $this->hasMany('App\TasksMember', 'task_id');
+    }
 }
diff --git a/app/TasksMember.php b/app/TasksMember.php
index 0b084c8f0b04a83904950ac84bc49e73bc8a8c5f..10d268c24d00955ab04c1c06867140c862fb072f 100644
--- a/app/TasksMember.php
+++ b/app/TasksMember.php
@@ -10,7 +10,7 @@ class TasksMember extends Model
     protected $table = 'tasks_member';
     public $incrementing = false;
     protected $primaryKey = ['task_id', 'user_id'];
-        /**
+    /**
      * Set the keys for a save update query.
      *
      * @param  \Illuminate\Database\Eloquent\Builder  $query
diff --git a/config/constants.php b/config/constants.php
new file mode 100644
index 0000000000000000000000000000000000000000..c9ff232c2710a2dae732df435dc26e6534ea9245
--- /dev/null
+++ b/config/constants.php
@@ -0,0 +1,10 @@
+<?php
+
+return [
+    'STATUS_KANBAN' => [
+        'PRODUCT_BACKLOG' => 'PRODUCT_BACKLOG',
+        'OPEN' => 'OPEN',
+        'WIP' => 'WIP',
+        'DONE' => 'DONE',
+    ]
+];
\ No newline at end of file
diff --git a/database/migrations/2019_02_19_140125_create_groups_member_table.php b/database/migrations/2019_02_19_140125_create_groups_member_table.php
index c46dc8af4d628c90e52dce01e2e93b6323229d2f..f38b6a8ab083a9ace6ab0cc8cc01861e49fd3b3e 100644
--- a/database/migrations/2019_02_19_140125_create_groups_member_table.php
+++ b/database/migrations/2019_02_19_140125_create_groups_member_table.php
@@ -14,8 +14,10 @@ class CreateGroupsMemberTable extends Migration
     public function up()
     {
         Schema::create('groups_member', function (Blueprint $table) {
-            $table->integer('group_id')->foreign('group_id')->references('id')->on('groups');
-            $table->integer('user_id')->foreign('user_id')->references('id')->on('users');
+            $table->unsignedInteger('group_id');
+            $table->foreign('group_id')->references('id')->on('groups');
+            $table->unsignedInteger('user_id');
+            $table->foreign('user_id')->references('id')->on('users');
             $table->primary(['group_id', 'user_id']);
             $table->string('role');
             $table->timestamps();
diff --git a/database/migrations/2019_02_19_140448_create_tasks_table.php b/database/migrations/2019_02_19_140448_create_tasks_table.php
index 59fc3e3549d6bd9a341704d4d7f0fc6e01718f78..c63d9df2525047c44a3bedfcb9bb38ccdb20036e 100644
--- a/database/migrations/2019_02_19_140448_create_tasks_table.php
+++ b/database/migrations/2019_02_19_140448_create_tasks_table.php
@@ -15,7 +15,8 @@ class CreateTasksTable extends Migration
     {
         Schema::create('tasks', function (Blueprint $table) {
             $table->increments('id');
-            $table->integer('group_id')->foreign('group_id')->references('id')->on('groups');
+            $table->unsignedInteger('group_id');
+            $table->foreign('group_id')->references('id')->on('groups');
             $table->string('taskname');
             $table->string('description');
             $table->string('status_kanban');
diff --git a/database/migrations/2019_02_19_141233_create_tasks_member_table.php b/database/migrations/2019_02_19_141233_create_tasks_member_table.php
index 0de93c09d31537ce12e529ac586015bf72090cd3..3e9ecf469f5d3f865bd9a5bac9c3f5b28047cfac 100644
--- a/database/migrations/2019_02_19_141233_create_tasks_member_table.php
+++ b/database/migrations/2019_02_19_141233_create_tasks_member_table.php
@@ -14,8 +14,10 @@ class CreateTasksMemberTable extends Migration
     public function up()
     {
         Schema::create('tasks_member', function (Blueprint $table) {
-            $table->integer('task_id')->foreign('task_id')->references('id')->on('tasks');
-            $table->integer('user_id')->foreign('user_id')->references('id')->on('users');
+            $table->unsignedInteger('task_id');
+            $table->foreign('task_id')->references('id')->on('tasks');
+            $table->unsignedInteger('user_id');
+            $table->foreign('user_id')->references('id')->on('users');
             $table->timestamps();
         });
     }
diff --git a/routes/api.php b/routes/api.php
index e984efadae77adb87bdb4a42e613bbe31d7387fe..5cc149ce5102ea7bc6216222b4455a58ed7bf8f7 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -12,7 +12,7 @@ use Illuminate\Http\Request;
 | is assigned the "api" middleware group. Enjoy building your API!
 |
 */
-
+Route::get('/wildan', 'UserController@testMasukAuthAPI')->middleware('auth:api');
 Route::middleware('auth:api')->get('/user', function (Request $request) {
     return $request->user();
 });
@@ -20,4 +20,17 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
 
 Route::post('/login', 'UserController@generateToken');
 Route::post('/logout', 'UserController@logOut')->middleware('auth:api');
-Route::get('/wildan', 'UserController@testMasukAuthAPI')->middleware('auth:api');
\ No newline at end of file
+
+
+
+
+//Task
+Route::post('/tasks', 'TaskController@store')->middleware('auth:api');
+Route::get('/tasks/{taskId}', 'TaskController@show')->middleware('auth:api');
+Route::put('/tasks/{taskId}', 'TaskController@update')->middleware('auth:api');
+Route::delete('/tasks/{taskId}', 'TaskController@delete')->middleware('auth:api');
+
+// Route::group(['middleware' => 'auth:api'], function()
+// {
+//     Route::resource('tasks','TaskController', ['except' => ['index', 'edit', 'create']]);
+// });
\ No newline at end of file