diff --git a/app/Group.php b/app/Groups.php
similarity index 52%
rename from app/Group.php
rename to app/Groups.php
index 90a9807dbba902c46aaeca2c749d5ca9290a5cbe..8faa29c49c931a2b45de4c0dcdc35e210685671a 100644
--- a/app/Group.php
+++ b/app/Groups.php
@@ -11,10 +11,20 @@ use Illuminate\Database\Eloquent\Model;
  * @property string $created_at
  * @property string $updated_at
  */
-class Group extends Model
+class Groups extends Model
 {
     protected $table = 'groups';
     protected $primaryKey = 'id';
-    protected $fillable = ['group_name', 'description', 'created_at', 'updated_at'];
+    protected $fillable = ['group_name', 'description'];
     public $timestamps = true;
+
+    public function members()
+    {
+        return $this->hasMany('App\GroupsMember', 'group_id');
+    }
+
+    public function tasks()
+    {
+        return $this->hasMany('App\Tasks', 'group_id');
+    }
 }
\ No newline at end of file
diff --git a/app/GroupMember.php b/app/GroupsMember.php
similarity index 80%
rename from app/GroupMember.php
rename to app/GroupsMember.php
index 74baec8490fa7bd7b84f76b303a1441e497c1439..c565c23c53b9024b1a3cbe3a6d11e1c9d3aa5911 100644
--- a/app/GroupMember.php
+++ b/app/GroupsMember.php
@@ -14,9 +14,9 @@ use Illuminate\Database\Eloquent\Builder;
  * @property Group $group
  * @property User $user
  */
-class GroupMember extends Model
+class GroupsMember extends Model
 {
-    protected $table = 'group_member';
+    protected $table = 'groups_member';
     public $incrementing = false;
     protected $primaryKey = ['group_id', 'user_id'];
     /**
@@ -58,11 +58,15 @@ class GroupMember extends Model
         return $this->getAttribute($keyName);
     }
 
-    public function group() {
-        return $this->belongsTo('App\Group', 'group_id', 'group_id');
+    public function groups() {
+        return $this->belongsTo('App\Groups', 'group_id');
     }
 
-    public function user() {
-        return $this->belongsTo('App\User', 'user_id', 'id');
+    public function users() {
+        return $this->belongsTo('App\User', 'user_id');
+    }
+
+    public function tasks() {
+        return $this->hasMany('App\Tasks', 'id', 'task_id');
     }
 }
diff --git a/app/Http/Controllers/GroupController.php b/app/Http/Controllers/GroupsController.php
similarity index 89%
rename from app/Http/Controllers/GroupController.php
rename to app/Http/Controllers/GroupsController.php
index 58505f4365919673268c461d3d4aaf370abf457d..152624eecf7ef29eb3a699d1859e83a5cf98e1a8 100644
--- a/app/Http/Controllers/GroupController.php
+++ b/app/Http/Controllers/GroupsController.php
@@ -3,9 +3,9 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use App\Group;
+use App\Groups;
 
-class GroupController extends Controller
+class GroupsController extends Controller
 {
     public function store(Request $request) {
         $validator = $this->validate($request);
@@ -16,10 +16,10 @@ class GroupController extends Controller
             ]), 400);
         } else {
             $input = $request->all();
-            $isGroupExist = Group::find($input['group_id']);
+            $isGroupExist = Groups::find($input['group_id']);
 
             if (is_null($isGroupExist)) {
-                $group = Group::create([
+                $group = Groups::create([
                     'group_id' => $input['group_id'],
                     'group_name' => $input['group_name'],
                     'description' => $input['description']
@@ -39,7 +39,7 @@ class GroupController extends Controller
     }
 
     public function show(Request $request, $groupId) {
-        $isGroupExist = Group::find($groupId);
+        $isGroupExist = Groups::find($groupId);
 
         if (is_null($isGroupExist)) {
             return response(json_encode([
@@ -64,14 +64,14 @@ class GroupController extends Controller
             ]), 400);
         } else {
             $input = $request->all();
-            $isGroupExist = Group::find($input['group_id']);
+            $isGroupExist = Groups::find($input['group_id']);
 
             if (is_null($isGroupExist)) {
                 return response(json_encode([
                     'statusMessage' => 'Bad Request'
                 ]), 400);
             } else {
-                $group = Group::create([
+                $group = Groups::create([
                     'group_name' => $input['group_name'],
                     'description' => $input['description']
                 ]);
@@ -86,7 +86,7 @@ class GroupController extends Controller
     }
 
     public function destroy(Request $request, $groupId) {
-        $group = Group::find($groupId);
+        $group = Groups::find($groupId);
 
         if (is_null($group)) {
             return response(json_encode([
diff --git a/app/Http/Controllers/GroupMemberController.php b/app/Http/Controllers/GroupsMemberController.php
similarity index 86%
rename from app/Http/Controllers/GroupMemberController.php
rename to app/Http/Controllers/GroupsMemberController.php
index 48c8cfd56bc0b03331bccfaef7c42f804651c81b..3128035535ef4cbf306994b43b721eada26d46d3 100644
--- a/app/Http/Controllers/GroupMemberController.php
+++ b/app/Http/Controllers/GroupsMemberController.php
@@ -3,11 +3,11 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use App\Group;
-use App\GroupMember;
+use App\Groups;
+use App\GroupsMember;
 use Validator;
 
-class GroupMemberController extends Controller
+class GroupsMemberController extends Controller
 {
     public function store(Request $request) {
         $validator = $this->validate($request);
@@ -18,8 +18,8 @@ class GroupMemberController extends Controller
             ]), 400);
         } else {
             $input = $request->all();
-            $isGroupMemberExist = GroupMember::find($input['group_id'])::find($input['user_id']);
-            $groupMember = GroupMember::create([
+            $isGroupMemberExist = GroupsMember::find($input['group_id'])::find($input['user_id']);
+            $groupMember = GroupsMember::create([
                 'group_id' => $input['group_id'],
                 'user_id' => $input['user_id'],
                 'role' => $input['role'],
@@ -44,7 +44,7 @@ class GroupMemberController extends Controller
     }
 
     public function show(Request $request, $groupId) {
-        $isGroupMemberExist = GroupMember::find($groupId);
+        $isGroupMemberExist = GroupsMember::find($groupId);
 
         if (is_null($groupMember)) {
             return response(json_decode([
@@ -69,12 +69,12 @@ class GroupMemberController extends Controller
             ]), 400);
         } else {
             $input = $request->all();
-            $groupMember = GroupMember::create([
+            $groupMember = GroupsMember::create([
                 'role' => $input['role'],
                 'high_score' => $input['high_score']
             ]);
 
-            $member = GroupMember::find($groupId)->find($userId);
+            $member = GroupsMember::find($groupId)->find($userId);
             if ($member) {
                 $member->fill($groupMember);
                 $member->save();
@@ -92,7 +92,7 @@ class GroupMemberController extends Controller
     }
 
     public function destroy(Request $request, $groupId, $userId) {        
-        $groupMember = GroupMember::find($groupId);
+        $groupMember = GroupsMember::find($groupId);
 
         if (is_null($groupDetails)) {
             return response(json_encode([
diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TasksController.php
similarity index 93%
rename from app/Http/Controllers/TaskController.php
rename to app/Http/Controllers/TasksController.php
index e47ea695a16ca6ab647253eae527f4effdcc08d6..b0ea7ad5460789d304535f499d94551e95a57b33 100644
--- a/app/Http/Controllers/TaskController.php
+++ b/app/Http/Controllers/TasksController.php
@@ -3,8 +3,8 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use App\Task;
-use App\Group;
+use App\Tasks;
+use App\Groups;
 use App\TasksMember;
 class TaskController extends Controller
 {
@@ -31,7 +31,7 @@ class TaskController extends Controller
                 'description' => $request->description,
                 'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG')
             ];
-            $task = Task::create($form);
+            $task = Tasks::create($form);
             return response(json_encode([
                 'data' => $task->toArray(),
                 'msg' => ['Success']
@@ -54,7 +54,7 @@ class TaskController extends Controller
         //
         $user = $request->user();
         
-        $task = Task::find($taskId)->first();
+        $task = Tasks::find($taskId)->first();
 
         if ($task) {
             $taskArr = $task->toArray();
@@ -94,7 +94,7 @@ class TaskController extends Controller
                 'status_kanban' => $request->status_kanban,
                 'complexity' => $request->complexity
             ];
-            $task = Task::find($taskId)->first();
+            $task = Tasks::find($taskId)->first();
             if ($task) {
                 $task->fill($form);
                 $task->save();
@@ -124,7 +124,7 @@ class TaskController extends Controller
      */
     public function destroy($taskId)
     {
-        Task::destroy($taskId);
+        Tasks::destroy($taskId);
         return response(json_encode([
             'data' => NULL,
             'statusMessage'=> 'success',
@@ -133,7 +133,7 @@ class TaskController extends Controller
 
 
     public function getTasksFromGroupId(Request $req, $groupId) {
-        $tasks = Group::find($groupId)->tasks;
+        $tasks = Groups::find($groupId)->tasks;
         return response(json_encode([
             'data' => $tasks->toArray(),
             'statusMessage' => 'success'
diff --git a/app/Task.php b/app/Task.php
deleted file mode 100644
index e6f7d321f0ff31549885523992a203da7bdb017f..0000000000000000000000000000000000000000
--- a/app/Task.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace App;
-
-use Illuminate\Database\Eloquent\Model;
-
-class Task extends Model
-{
-    //
-    public function members() {
-        return $this->hasMany('App\TasksMember', 'task_id');
-    }
-}
diff --git a/app/Tasks.php b/app/Tasks.php
new file mode 100644
index 0000000000000000000000000000000000000000..11e661dcbe49f578a35ab1b77ffb1cfd50e9d94d
--- /dev/null
+++ b/app/Tasks.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Tasks extends Model
+{
+
+    public function groups()
+    {
+        return $this->belongsTo('App\Groups', 'group_id');
+    }
+    
+    public function pic() {
+        return $this->hasOne('App\TasksMember', 'task_id');
+    }
+}
diff --git a/app/TasksMember.php b/app/TasksMember.php
index 4b985580ceb07fe9a22a6c736243a3f0477c7700..3dd994de31799cd5ae94da35f937feae7e062b22 100644
--- a/app/TasksMember.php
+++ b/app/TasksMember.php
@@ -6,7 +6,6 @@ use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Builder;
 class TasksMember extends Model
 {
-    //
     protected $table = 'tasks_member';
     public $incrementing = false;
     protected $primaryKey = ['task_id', 'user_id'];
@@ -48,4 +47,8 @@ class TasksMember extends Model
 
         return $this->getAttribute($keyName);
     }
+
+    public function task() {
+        return $this->belongsTo('App\Tasks', 'task_id');
+    }
 }
diff --git a/config/constants.php b/config/constants.php
index cf839e891802271f906704ff4f89726b98db48a4..6ecac55dfc5ee93b79d7975d1c9f1187ca94b31b 100644
--- a/config/constants.php
+++ b/config/constants.php
@@ -1,10 +1,16 @@
 <?php
 
 return [
-    'STATUS_KANBAN' => [
+    'KANBAN_STATUS' => [
         'PRODUCT_BACKLOG' => 'PRODUCT_BACKLOG',
         'OPEN' => 'OPEN',
         'WIP' => 'WIP',
         'DONE' => 'DONE',
     ],
+
+    'ROLE' => [
+        'PRODUCT OWNER' => 'Product Owner',
+        'SCRUM_MASTER' => 'Scrum Master',
+        'SCRUM TEAM' => 'Scrum Team'
+    ],
 ];
\ No newline at end of file
diff --git a/database/factories/GroupsFactory.php b/database/factories/GroupsFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..2977d35f6754efc60570ebf919f58de006309362
--- /dev/null
+++ b/database/factories/GroupsFactory.php
@@ -0,0 +1,21 @@
+<?php
+
+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\Groups::class, function (Faker $faker) {
+    return [
+        'group_name' => $faker->company,
+        'description' => array_random([$faker->paragraph($nbSentences = 2), ""])
+    ];
+});
diff --git a/database/factories/GroupsMemberFactory.php b/database/factories/GroupsMemberFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e64ec422b6c2f1053a5275df44b18de73e3b4fd
--- /dev/null
+++ b/database/factories/GroupsMemberFactory.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\GroupsMember::class, function (Faker $faker) {
+    return [
+        'user_id' => factory('App\User')->create()->id,
+        'role' => $faker->randomElement(Config::get('constants.ROLE')),
+        'high_score' => $faker->randomNumber
+    ];
+});
\ No newline at end of file
diff --git a/database/factories/TasksFactory.php b/database/factories/TasksFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..274ba3b8788e28d15d5e04b97666daba557c388d
--- /dev/null
+++ b/database/factories/TasksFactory.php
@@ -0,0 +1,24 @@
+<?php
+
+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\Tasks::class, function (Faker $faker) {
+    return [
+        'group_id' => App\Groups::pluck('id')->random(),
+        'task_name' => $faker->sentence($nbWords = 3),
+        'description' => array_random([$faker->text($maxNbChars = 50), ""]),
+        'kanban_status' => $faker->randomElement(Config::get('constants.KANBAN_STATUS')),
+        'complexity' => $faker->numberBetween($min = 1, $max = 100),
+    ];
+});
\ No newline at end of file
diff --git a/database/factories/TasksMemberFactory.php b/database/factories/TasksMemberFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..cf2090e3070e18ef1d8afa4d5995248d2e93dfd6
--- /dev/null
+++ b/database/factories/TasksMemberFactory.php
@@ -0,0 +1,21 @@
+<?php
+
+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\TasksMember::class, function (Faker $faker) {
+    return [
+        'task_id' => App\Tasks::pluck('id')->random(),
+        'user_id' => App\User::pluck('id')->random()
+    ];
+});
\ No newline at end of file
diff --git a/database/factories/UserFactory.php b/database/factories/UsersFactory.php
similarity index 92%
rename from database/factories/UserFactory.php
rename to database/factories/UsersFactory.php
index 98eaa57d49e9d9f0e9a5f0dd82bf7b7e1e30eacd..a73ae69d434acfb6df82ab94c2674a7b94a55028 100644
--- a/database/factories/UserFactory.php
+++ b/database/factories/UsersFactory.php
@@ -19,7 +19,7 @@ $factory->define(App\User::class, function (Faker $faker) {
         'name' => $faker->name,
         'email' => $faker->unique()->safeEmail,
         'email_verified_at' => now(),
-        'google_id' => $faker->randomAscii,
+        'google_id' => $faker->unique()->randomNumber($nbDigits = 8),
         'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
         'remember_token' => Str::random(10),
     ];
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 6fc1c3c24c48104d59b2b61b1ba737c1ece410ac..2faf69b6318c1fa1da7ea9ce23159a1e3855dfe5 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
@@ -13,15 +13,20 @@ class CreateGroupsMemberTable extends Migration
      */
     public function up()
     {
-        Schema::create('group_member', function (Blueprint $table) {
+        Schema::create('groups_member', function (Blueprint $table) {
             $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->string('role');
             $table->unsignedInteger('high_score')->default(0);
             $table->timestamps();
+
+            $table->primary(['group_id', 'user_id']);
+            $table->foreign('group_id')
+                ->references('id')->on('groups')
+                ->onDelete('cascade');
+            $table->foreign('user_id')
+                ->references('id')->on('users')
+                ->onDelete('cascade');
         });
     }
 
@@ -32,6 +37,6 @@ class CreateGroupsMemberTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('group_member');
+        Schema::dropIfExists('groups_member');
     }
 }
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 27a63e232573ed2c10dd1c0cb959b3872ab91718..dd31b9fab214a56c0b5510d55eaa274b6d1d717d 100644
--- a/database/migrations/2019_02_19_140448_create_tasks_table.php
+++ b/database/migrations/2019_02_19_140448_create_tasks_table.php
@@ -16,12 +16,15 @@ class CreateTasksTable extends Migration
         Schema::create('tasks', function (Blueprint $table) {
             $table->increments('id');
             $table->unsignedInteger('group_id');
-            $table->foreign('group_id')->references('id')->on('groups');
-            $table->string('taskname');
-            $table->string('description');
-            $table->string('status_kanban');
-            $table->integer('work_hour')->default(1);
+            $table->string('task_name');
+            $table->string('description')->default("");
+            $table->string('kanban_status')->index();
+            $table->integer('complexity');
             $table->timestamps();
+
+            $table->foreign('group_id')
+                ->references('id')->on('groups')
+                ->onDelete('cascade');
         });
     }
 
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 46f6a13b8044837cea25852b96a836e1a1217eb8..df7a8fd7c4555b5236df54399976c826282f4582 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
@@ -15,10 +15,16 @@ class CreateTasksMemberTable extends Migration
     {
         Schema::create('tasks_member', function (Blueprint $table) {
             $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->timestamps();
+
+            $table->primary(['task_id', 'user_id']);
+            $table->foreign('task_id')
+                ->references('id')->on('tasks')
+                ->onDelete('cascade');
+            $table->foreign('user_id')
+                ->references('id')->on('users')
+                ->onDelete('cascade');
         });
     }
 
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index 46d1bed9a45322b8921bba39b6ad8a836196abaf..f44f19b76cfa8edbfc1ce9bbcdf71301942c4e7d 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -12,9 +12,7 @@ class DatabaseSeeder extends Seeder
     {
         $this->call(UsersTableSeeder::class);
         $this->call(GroupsTableSeeder::class);
-        $this->call(GroupsMemberTableSeeder::class);
         $this->call(TasksTableSeeder::class);
-        $this->call(TasksMemberTableSeeder::class);
         // $users = factory(App\User::class, 6)->create();
     }
 }
diff --git a/database/seeds/GroupsMemberTableSeeder.php b/database/seeds/GroupsMemberTableSeeder.php
deleted file mode 100644
index 96ca21cb6f20ac449460748c0dfbc2ae5eb27a9f..0000000000000000000000000000000000000000
--- a/database/seeds/GroupsMemberTableSeeder.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-use Illuminate\Database\Seeder;
-
-class GroupsMemberTableSeeder extends Seeder
-{
-    /**
-     * Run the database seeds.
-     *
-     * @return void
-     */
-    public function run()
-    {
-        $groupsMember = [
-            [
-                'group_id' => 1,
-                'user_id' => 1,
-            ],
-            [
-                'group_id' => 1,
-                'user_id' => 2,
-            ],
-            [
-                'group_id' => 2,
-                'user_id' => 1,
-            ],
-        ];
-
-        foreach ($groupsMember as $element) {
-            App\GroupMember::create($element);
-        }
-    }
-}
diff --git a/database/seeds/GroupsTableSeeder.php b/database/seeds/GroupsTableSeeder.php
index b778d9979ab729e451a10b4557507600b62901c2..af1fbda9242d2ae0f54718e52cf607acf87831ed 100644
--- a/database/seeds/GroupsTableSeeder.php
+++ b/database/seeds/GroupsTableSeeder.php
@@ -11,23 +11,10 @@ class GroupsTableSeeder extends Seeder
      */
     public function run()
     {
-        $groupsArr = [
-            [
-                'group_name' => 'group1',
-                'description' => 'group1yeah',
-            ],
-            [
-                'group_name' => 'group2',
-                'description' => 'group2yeah',
-            ],
-            [
-                'group_name' => 'group3',
-                'description' => 'group3yeah',
-            ]
-        ];
-
-        foreach ($groupsArr as $element) {
-            App\Group::create($element);
-        }
+        factory(App\Groups::class, 15)->create()->each(function ($groups) {
+            $members = Rand(5, 9);
+            $groupsMember = factory(App\GroupsMember::class, $members)->make();
+            $groups->members()->saveMany($groupsMember);
+        });
     }
 }
diff --git a/database/seeds/TasksMemberTableSeeder.php b/database/seeds/TasksMemberTableSeeder.php
deleted file mode 100644
index bb676c618e61b753eefad0575952b7388974ea7f..0000000000000000000000000000000000000000
--- a/database/seeds/TasksMemberTableSeeder.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-use Illuminate\Database\Seeder;
-
-class TasksMemberTableSeeder extends Seeder
-{
-    /**
-     * Run the database seeds.
-     *
-     * @return void
-     */
-    public function run()
-    {
-        $taskMembers = [
-            [
-                'task_id' => 1,
-                'user_id' => 1,
-            ],
-            [
-                'task_id' => 2,
-                'user_id' => 2,
-            ],
-            [
-                'task_id' => 3,
-                'user_id' => 1,
-            ],
-        ];
-        foreach ($taskMembers as $element) {
-            App\TasksMember::create($element);
-        }
-    }
-}
diff --git a/database/seeds/TasksTableSeeder.php b/database/seeds/TasksTableSeeder.php
index 1748dae7059aca00a64f402c16b6328d8ccea595..3706f424c05ef3e63e01a5f2ae25ed58ab8e872d 100644
--- a/database/seeds/TasksTableSeeder.php
+++ b/database/seeds/TasksTableSeeder.php
@@ -11,35 +11,9 @@ class TasksTableSeeder extends Seeder
      */
     public function run()
     {
-        //
-        $tasks = [
-            [
-                'group_id' => 1,
-                'taskname' => 'Bikin BlockChain',
-                'description' => 'Yeah Mancuyyy',
-                'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG')
-            ],
-            [
-                'group_id' => 1,
-                'taskname' => 'Bikin BlockChain',
-                'description' => 'Yeah Mancuyyy',
-                'status_kanban' => Config::get('constants.STATUS_KANBAN.OPEN')
-            ],
-            [
-                'group_id' => 2,
-                'taskname' => 'Bikin BlockChain',
-                'description' => 'Yeah Mancuyyy',
-                'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG')
-            ],
-            [
-                'group_id' => 2,
-                'taskname' => 'Bikin BlockChain',
-                'description' => 'Yeah Mancuyyy',
-                'status_kanban' => Config::get('constants.STATUS_KANBAN.OPEN')
-            ],
-        ];
-        foreach ($tasks as $element) {
-            App\Task::create($element);
-        }
+        factory(App\Tasks::class, 200)->create()->each(function ($task) {
+            $pic = factory(App\TasksMember::class)->make();
+            $task->pic()->save($pic);
+        });
     }
 }
diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php
index ea49f6067761aabec19a52ac245995f8972d9610..f44f7ceb66ef5593fe179115b311c9ed01c8af33 100644
--- a/database/seeds/UsersTableSeeder.php
+++ b/database/seeds/UsersTableSeeder.php
@@ -11,32 +11,6 @@ class UsersTableSeeder extends Seeder
      */
     public function run()
     {
-        //
-        $usersArr = [
-            [
-                'name' => 'Wildan',
-                'email' => 'alnataraw@gmail.com',
-                'google_id' => '11111111',
-            ],
-            [
-                'name' => 'dion',
-                'email' => 'dion@gmail.com',
-                'google_id' => '11111112',
-            ],
-            [
-                'name' => 'farhan',
-                'email' => 'farhan@gmail.com',
-                'google_id' => '11111113',
-            ],
-            [
-                'name' => 'asadasda',
-                'email' => 'asdas@gmail.com',
-                'google_id' => '11111114',
-            ]
-        ];
-        
-        foreach ($usersArr as $element) {
-            $user = App\User::create($element);
-        }
+        factory(App\User::class, 10)->create();
     }
 }
diff --git a/routes/api.php b/routes/api.php
index 7c19d5a13df19810a4e54ea88686602fcf3425f8..4ecce869f30f3978371b521cc4b03b67718c1073 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -23,29 +23,30 @@ Route::post('/logout', 'UserController@logOut');
 
 
 //Task
-Route::post('/tasks', 'TaskController@store');
-Route::get('/tasks/{taskId}', 'TaskController@show');
-Route::put('/tasks/{taskId}', 'TaskController@update');
-Route::delete('/tasks/{taskId}', 'TaskController@delete');
+Route::post('/tasks', 'TasksController@store');
+Route::get('/tasks/{taskId}', 'TasksController@show');
+Route::put('/tasks/{taskId}', 'TasksController@update');
+Route::delete('/tasks/{taskId}', 'TasksController@delete');
 
 //Task Member
 Route::delete('/task_member', 'TasksMemberController@removeMember');
 Route::post('/task_member', 'TasksMemberController@addMember');
 
 //Get Group Task
-Route::get('/group/{groupId}/tasks', 'TaskController@getTasksFromGroup');
+Route::get('/group/{groupId}/tasks', 'TasksController@getTasksFromGroup');
 
 //Group
-Route::post('/group', 'GroupController@store');
-Route::get('/group/{groupId}', 'GroupController@show');
-Route::put('/group', 'GroupController@update');
-Route::delete('/group', 'GroupController@delete');
+Route::post('/group', 'GroupsController@store');
+Route::get('/group/{groupId}', 'GroupsController@show');
+Route::put('/group/{groupId}', 'GroupsController@update');
+Route::delete('/group/{groupId}', 'GroupsController@delete');
 
 //GroupMember
-Route::post('/group_member', 'GroupMemberController@store');
-Route::get('/group_member/{groupId}', 'GroupMemberController@show');
-Route::put('/group_member/{groupId}/{userId}', 'GroupMemberController@update');
-Route::delete('/group_member/{groupId}/{userId}', 'GroupMemberController@delete');
+Route::post('/group/member', 'GroupsMemberController@store');
+Route::get('/group/{groupId}/member', 'GroupsMemberController@show');
+Route::get('/group/{groupId}/members', 'GroupsMemberController@showAll');
+Route::put('/group/{groupId}/member/{userId}', 'GroupsMemberController@update');
+Route::delete('/group/{groupId}/member/{userId}', 'GroupsMemberController@delete');
 
 
 // Route::group(['middleware' => 'auth:api'], function()