diff --git a/app/Comment.php b/app/Comment.php
new file mode 100644
index 0000000000000000000000000000000000000000..be8d264131226c54d71f69e88acaadd94db3abe7
--- /dev/null
+++ b/app/Comment.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Comment extends Model
+{
+    protected $table = 'comments';
+    protected $primaryKey = 'id';
+    protected $fillable = ['task_id', 'comment', 'user_id'];
+    public $timestamps = true;
+    
+
+}
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
new file mode 100644
index 0000000000000000000000000000000000000000..ded965bc74da1344039760e4f8fa08432a59b64a
--- /dev/null
+++ b/app/Http/Controllers/CommentController.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Tasks;
+use App\Comment;
+class CommentController extends Controller
+{
+    //
+
+    public function getCommentsFromTaskId($taskId) {
+        $task = Tasks::where('id', $taskId)->first();
+        if (is_null($task)) {
+            return response(json_encode([
+                'statusMessage' => 'error'
+            ]), 404);
+        } else {
+            $comments = $task->getCommentsAttribute();
+            return response(json_encode([
+                'data' => $comments->toArray(),
+                'statusMessage' => 'success'
+            ]), 200);
+        }
+    }
+
+    public function createCommentInTaskId(Request $request, $userId, $taskId) {
+        $request->validate([
+            'comment' => 'required',
+        ]);
+
+        $comment = Comment::create([
+            'comment' => $request->comment,
+            'task_id' => $taskId,
+            'user_id' => $userId          
+        ]);
+
+        return response(json_encode([
+            'data' => NULL,
+            'statusMessage' => 'success'
+        ]), 200);
+    }
+}
diff --git a/app/Http/Controllers/TasksController.php b/app/Http/Controllers/TasksController.php
index 590382fa827422de04419d6905c01d2ec625ab8e..b69cc3694e844c72c286d542b0719cdfab356be2 100644
--- a/app/Http/Controllers/TasksController.php
+++ b/app/Http/Controllers/TasksController.php
@@ -38,7 +38,7 @@ class TasksController extends Controller
             ];
             $task = Tasks::create($form);
             return response(json_encode([
-                'data' => NULL,
+                'data' => $task->toArray(),
                 'statusMessage' => 'success'
             ]), 200);
         } else {
diff --git a/app/Tasks.php b/app/Tasks.php
index 364c3a9a5a7a0ba98faf0a00bb6d490c5b38c8e8..fd09260a8563ad13fc30085cf6997ba640782a81 100644
--- a/app/Tasks.php
+++ b/app/Tasks.php
@@ -100,4 +100,16 @@ class Tasks extends Model
     // public function loggingInsertHistory(Tasks $item){
         
     // }
+
+
+    public function comments()
+    {
+        return $this->hasMany('App\Comment', 'task_id');
+    }
+
+    public function getCommentsAttribute()
+    {
+        $comments = $this->comments()->getQuery()->orderBy('created_at', 'desc')->get();
+        return $comments;
+    }
 }
diff --git a/database/factories/CommentsFactory.php b/database/factories/CommentsFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..25c39ff3eb50d41eaa7851f0eac575e9495a1b82
--- /dev/null
+++ b/database/factories/CommentsFactory.php
@@ -0,0 +1,23 @@
+<?php
+
+use Illuminate\Support\Str;
+use Faker\Generator as Faker;
+
+/*
+|--------------------------------------------------------------------------
+| Model Factories
+|--------------------------------------------------------------------------
+|
+| This directory should contain each of the model factory definitions for
+| your application. Factories provide a convenient way to generate new
+| model instances for testing / seeding your application's database.
+|
+*/
+
+$factory->define(App\Comment::class, function (Faker $faker) {
+    return [
+        'user_id' => App\User::pluck('id')->random(),
+        'comment' => $faker->text($maxNbChars = 50),
+        'task_id' => App\Tasks::pluck('id')->random()
+    ];
+});
\ No newline at end of file
diff --git a/database/factories/GroupsMemberFactory.php b/database/factories/GroupsMemberFactory.php
index 888277fbf4ca3507d8b6780bbdf9b365dded0b28..c367113bd527d79cbb0e5ee7fe3a8a65dbb8ef84 100644
--- a/database/factories/GroupsMemberFactory.php
+++ b/database/factories/GroupsMemberFactory.php
@@ -1,6 +1,5 @@
 <?php
 
-use Illuminate\Support\Str;
 use Faker\Generator as Faker;
 
 /*
diff --git a/database/migrations/2019_02_25_062350_create_comments_table.php b/database/migrations/2019_02_25_062350_create_comments_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..0095f9682cb8db8cf5daf0e7b749fefbf77b4aed
--- /dev/null
+++ b/database/migrations/2019_02_25_062350_create_comments_table.php
@@ -0,0 +1,40 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateCommentsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('comments', function (Blueprint $table) {
+            $table->increments('id');
+            $table->unsignedInteger('task_id');
+            $table->foreign('task_id')
+                ->references('id')->on('tasks')
+                ->onDelete('cascade');
+            $table->unsignedInteger('user_id');
+                $table->foreign('user_id')
+                    ->references('id')->on('users')
+                    ->onDelete('cascade');
+            $table->string('comment');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('comments');
+    }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index a19efefc6b768b1800c16b883bdea38c7b8697bc..bbd5218adae91d21ea3fa8231388f9aae3a90517 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -13,5 +13,6 @@ class DatabaseSeeder extends Seeder
         // $this->call(UsersTableSeeder::class);
         $this->call(GroupsTableSeeder::class);
         $this->call(TasksTableSeeder::class);
+        factory(App\Comment::class, 1000)->create();
     }
 }
diff --git a/routes/api.php b/routes/api.php
index b6edc4878712aef3f1d519333954c3ac76d84a10..596c5379a1dafbba5b3e57ba591ff0ad2ed80884 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -57,6 +57,10 @@ Route::delete('/group/{groupId}/member/{userId}', 'GroupsMemberController@delete
 //Get History Group
 Route::get('/group/{groupId}/history', 'GroupHistoryController@getHistory'); //Bisa ambil seluruh member dari suatu group
 
+
+Route::post('/user/{userId}/task/{taskId}/comment', 'CommentController@createCommentInTaskId');
+Route::get('/task/{taskId}/comment', 'CommentController@getCommentsFromTaskId');
+
 // Route::group(['middleware' => 'auth:api'], function()
 // {
 //     Route::resource('tasks','TasksController', ['except' => ['index', 'edit', 'create']]);