diff --git a/app/Http/Controllers/API/NewsLetterAPIController.php b/app/Http/Controllers/API/NewsLetterAPIController.php
new file mode 100644
index 0000000..897fd97
--- /dev/null
+++ b/app/Http/Controllers/API/NewsLetterAPIController.php
@@ -0,0 +1,29 @@
+validate([
+ "email" => "required|email|unique:news_letters"
+ ], ["email.unique" => "You are already subscribed to our newsletter!"]));
+
+ return response()->json([
+ "status" => "success",
+ "message" => "You have successfully subscribed to our newsletter!"
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/API/TopicsAPIController.php b/app/Http/Controllers/API/TopicsAPIController.php
index df973ac..b722d42 100644
--- a/app/Http/Controllers/API/TopicsAPIController.php
+++ b/app/Http/Controllers/API/TopicsAPIController.php
@@ -29,9 +29,9 @@ class TopicsAPIController extends Controller
*/
public function show(Topic $topic)
{
- return [
+ return response()->json([
'topic' => new TopicResource($topic),
'articles' => $topic->articles()->with('source')->latest('published_date')->paginate(8)
- ];
+ ]);
}
}
diff --git a/app/NewsLetter.php b/app/NewsLetter.php
new file mode 100644
index 0000000..487fcf5
--- /dev/null
+++ b/app/NewsLetter.php
@@ -0,0 +1,10 @@
+id();
+ $table->string('email');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('news_letters');
+ }
+}
diff --git a/resources/js/components/NewsLetter.vue b/resources/js/components/NewsLetter.vue
new file mode 100644
index 0000000..d7a9616
--- /dev/null
+++ b/resources/js/components/NewsLetter.vue
@@ -0,0 +1,59 @@
+
+