diff --git a/trackeroo/lib/logic/services/locator.dart b/trackeroo/lib/logic/services/locator.dart
new file mode 100644
index 0000000000000000000000000000000000000000..bcc04d58dc7eafbf6794905b53d826d9a4e1d91a
--- /dev/null
+++ b/trackeroo/lib/logic/services/locator.dart
@@ -0,0 +1,46 @@
+import 'package:flutter/material.dart';
+
+import 'package:hive/hive.dart';
+import 'package:get_it/get_it.dart';
+
+import 'package:trackeroo/logic/models/category.dart';
+import 'package:trackeroo/logic/services/app_state.dart';
+import 'package:trackeroo/logic/services/categories_controller.dart';
+
+final locator = GetIt.instance;
+
+Future<void> setupLocatorService() async {
+  // open AppState box and load all entries from the box into the object and register the object in get_it
+  var appStateBox = await Hive.openBox('app_state_box');
+  Map<dynamic, dynamic> appStateMap = appStateBox.toMap();
+  AppState appState = AppState(
+    isFirstOpening: appStateMap['isFirstOpening'] ?? true
+  );
+  locator.registerLazySingleton<AppState>(() => appState);
+
+  // load categories from box and safe to list, make list available in get_it
+  var categoriesBox = await Hive.openBox('categories_box');
+  if(appState.isFirstOpening) {
+    // create default categories
+    categoriesBox.addAll([
+      Category(id: 0, title: 'Food & Groceries', iconCodePoint: Icons.kitchen.codePoint, colorValue: Colors.green.value),
+      Category(id: 1, title: 'Transport & Car', iconCodePoint: Icons.directions_bus_rounded.codePoint, colorValue: Colors.amber.value),
+      Category(id: 2, title: 'Healthcare & Drug Stores', iconCodePoint: Icons.health_and_safety_rounded.codePoint, colorValue: Colors.red.value),
+      Category(id: 3, title: 'Shopping', iconCodePoint: Icons.shopping_cart_rounded.codePoint, colorValue: Colors.blue.value),
+      Category(id: 4, title: 'Bars & Restaurants', iconCodePoint: Icons.local_bar_rounded.codePoint, colorValue: Colors.brown.value),
+      Category(id: 5, title: 'Family & Friends', iconCodePoint: Icons.people_rounded.codePoint, colorValue: Colors.cyan.value),
+      Category(id: 6, title: 'Leisure & Entertainment', iconCodePoint: Icons.local_activity_rounded.codePoint, colorValue: Colors.purple.value),
+      Category(id: 7, title: 'Media & Electronics', iconCodePoint: Icons.laptop_rounded.codePoint, colorValue: Colors.grey.value),
+      Category(id: 8, title: 'Education', iconCodePoint: Icons.book.codePoint, colorValue: Colors.lightGreen.value),
+      Category(id: 9, title: 'Household & Utilities', iconCodePoint: Icons.chair_rounded.codePoint, colorValue: Colors.orange.value),
+      Category(id: 10, title: 'Travel & Utilities', iconCodePoint: Icons.flight_rounded.codePoint, colorValue: Colors.teal.value),
+      Category(id: 11, title: 'ATM', iconCodePoint: Icons.local_atm_rounded.codePoint, colorValue: Colors.deepPurple.value)
+    ]);
+  }
+  Map<dynamic, dynamic> categoriesMap = categoriesBox.toMap();
+  CategoriesController categoriesController = CategoriesController(
+    catBox: categoriesBox,
+    categories: categoriesMap
+  );
+  locator.registerLazySingleton<CategoriesController>(() => categoriesController);
+}
diff --git a/trackeroo/lib/main.dart b/trackeroo/lib/main.dart
index f2e3f473a8d513857bfcc6ed603be191b7e29084..a9f32091ba9b32032d88ecd236cbf0adc14117bc 100644
--- a/trackeroo/lib/main.dart
+++ b/trackeroo/lib/main.dart
@@ -1,6 +1,17 @@
 import 'package:flutter/material.dart';
+
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:trackeroo/logic/models/category.dart';
+import 'package:trackeroo/logic/models/transaction.dart';
+import 'package:trackeroo/logic/services/locator.dart';
+
 import 'package:trackeroo/app.dart';
 
-void main() {
-  runApp(const MyApp());
+void main() async {
+  WidgetsFlutterBinding.ensureInitialized();
+  await Hive.initFlutter();
+  Hive.registerAdapter(TransactionAdapter());
+  Hive.registerAdapter(CategoryAdapter());
+  await setupLocatorService();
+  runApp(MyApp());
 }