diff --git a/lib/main.dart b/lib/main.dart
index 445b0ebfb9811463f986f6ad57fdaf050c41ead2..8d9dbbe8b9e6fcafe59b80e0ce91d8f270ccdcfe 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,10 +1,19 @@
+import 'dart:convert';
+
 import 'package:english_words/english_words.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:provider/provider.dart';
+import 'package:http/http.dart' as http;
 
 void main() {
-  runApp(MyApp());
+
+  runApp(
+    ChangeNotifierProvider(
+      create: (context) => MyAppState(),
+      child: const MyApp(),
+    ),
+  );
 }
 
 class MyApp extends StatelessWidget {
@@ -12,15 +21,26 @@ class MyApp extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    return ChangeNotifierProvider(
-      create: (context) => MyAppState(),
-      child: MaterialApp(
-        title: 'Namer App',
-        theme: ThemeData(
-          useMaterial3: true,
-          colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
-        ),
-        home: MyHomePage(),
+    var appState = context.watch<MyAppState>();
+    return MaterialApp(
+      title: 'Namer App',
+      theme: ThemeData(
+        useMaterial3: true,
+        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange),
+      ),
+      home: FutureBuilder<List<WordPair>>(
+        future: appState.futureFavorites,
+        builder: (context, snapshot) {
+          if(snapshot.connectionState == ConnectionState.waiting) {
+            return const Center(child: CircularProgressIndicator());
+          } else if(snapshot.hasError) {
+            return Center(child: Text('Error: ${snapshot.error}'),);
+          } else if(snapshot.hasData) {
+            return MyHomePage();
+          } else {
+            return const Center(child: Text('No favorites yer.'));
+          }
+        }
       ),
     );
   }
@@ -28,20 +48,63 @@ class MyApp extends StatelessWidget {
 
 class MyAppState extends ChangeNotifier {
   var current = WordPair.random();
+  List<WordPair> favorites = [];
+  late Future<List<WordPair>> futureFavorites;
+
+  MyAppState() {
+    futureFavorites = fetchFavorites();
+  }
   
   void getNext() {
     current = WordPair.random();
     notifyListeners();
   }
 
-  var favorites = <WordPair>[];
+  Future<List<WordPair>> fetchFavorites() async {
+    final response = await http.get(
+      Uri.parse('http://localhost:3000/likes')
+    );
+    List<WordPair> list = [];
+    var jsonData = jsonDecode(response.body);
+    for (Map<String, dynamic> obj in jsonData) {
+      List<String> res = obj["id"].split('_');
+      list.add(WordPair(res[0], res[1]));
+    }
+
+    favorites = [...list];
+    notifyListeners();
+    return list;
+  }
 
-  void toggleFavorite() {
+  Future<void> toggleFavorite() async{
+    var uri = "http://localhost:3000/likes/${current.first}_${current.second}";
     if (favorites.contains(current)) {
-      favorites.remove(current);
+      final http.Response resp = await http.delete(Uri.parse(uri));
+      if(resp.statusCode != 200) {
+        return;
+      }
+        favorites.remove(current);
+        favorites = [...favorites];
     } else {
-      favorites.add(current);
+      print("1");
+      final http.Response resp = await http.post(
+        Uri.parse(uri),
+        headers: <String, String> {
+          'Content-Type': 'application/json; charset=UTF-8',
+        },
+        body: jsonEncode(<String, dynamic>{
+          'collectionId': "${current.first}_${current.second}",
+          'like' : true,
+        })
+      );
+      print("2");
+      if(resp.statusCode != 200) {
+        return;
+      }
+
+      favorites = [...favorites, current];
     }
+    print(favorites);
     notifyListeners();
   }
 }