diff --git a/android/gradle.properties b/android/gradle.properties
index e7bbd478806d6d3d5c8d27157b30df069180a8b6..84e1e4153b337375b48ca3b51c39d9d8cbca5ba9 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=1.0.44
-app.versionCode=45
+app.versionName=1.0.45
+app.versionCode=46
diff --git a/lib/config/menu.dart b/lib/config/menu.dart
new file mode 100644
index 0000000000000000000000000000000000000000..45c069261a3b14933f421d2d14a486fcc0a0c904
--- /dev/null
+++ b/lib/config/menu.dart
@@ -0,0 +1,78 @@
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:unicons/unicons.dart';
+
+import 'package:random/ui/screens/about_page.dart';
+import 'package:random/ui/screens/api_page.dart';
+import 'package:random/ui/screens/camera_page.dart';
+import 'package:random/ui/screens/demo_page.dart';
+import 'package:random/ui/screens/game_page.dart';
+import 'package:random/ui/screens/graph_page.dart';
+import 'package:random/ui/screens/settings_page.dart';
+
+class MenuItem {
+  final String code;
+  final Icon icon;
+  final Widget page;
+
+  const MenuItem({
+    required this.code,
+    required this.icon,
+    required this.page,
+  });
+}
+
+class Menu {
+  static List<MenuItem> items = [
+    MenuItem(
+      code: 'bottom_nav_sample',
+      icon: const Icon(UniconsLine.image),
+      page: DemoPage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_api',
+      icon: const Icon(UniconsLine.globe),
+      page: ApiPage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_camera',
+      icon: const Icon(UniconsLine.camera),
+      page: CameraPage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_chart',
+      icon: const Icon(UniconsLine.pen),
+      page: GraphPage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_game',
+      icon: const Icon(UniconsLine.star),
+      page: GamePage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_settings',
+      icon: const Icon(UniconsLine.setting),
+      page: SettingsPage(),
+    ),
+    MenuItem(
+      code: 'bottom_nav_about',
+      icon: const Icon(UniconsLine.info_circle),
+      page: AboutPage(),
+    ),
+  ];
+
+  static Widget getPageWidget(int pageIndex) {
+    return Menu.items.elementAt(pageIndex).page;
+  }
+
+  static List<BottomNavigationBarItem> getMenuItems() {
+    return Menu.items
+        .map((MenuItem item) => BottomNavigationBarItem(
+              icon: item.icon,
+              label: tr(item.code),
+            ))
+        .toList();
+  }
+
+  static int itemsCount = Menu.items.length;
+}
diff --git a/lib/cubit/bottom_nav_cubit.dart b/lib/cubit/bottom_nav_cubit.dart
index a02cc94d81d823edb09522d02406763341dc12f2..76d5c375c47ca2e1967313ab10078dedbcdaabdc 100644
--- a/lib/cubit/bottom_nav_cubit.dart
+++ b/lib/cubit/bottom_nav_cubit.dart
@@ -1,10 +1,10 @@
 import 'package:hydrated_bloc/hydrated_bloc.dart';
 
+import 'package:random/config/menu.dart';
+
 class BottomNavCubit extends HydratedCubit<int> {
   BottomNavCubit() : super(0);
 
-  int pagesCount = 6;
-
   void updateIndex(int index) {
     if (isIndexAllowed(index)) {
       emit(index);
@@ -14,7 +14,7 @@ class BottomNavCubit extends HydratedCubit<int> {
   }
 
   bool isIndexAllowed(int index) {
-    return (index >= 0) && (index < pagesCount);
+    return (index >= 0) && (index < Menu.itemsCount);
   }
 
   void goToHomePage() => emit(0);
diff --git a/lib/ui/skeleton.dart b/lib/ui/skeleton.dart
index 044b573f6823cfb4bb0f8adb1edc342349a4c134..e8636195bb2a0a1caf3c6e098aad264f0fe3f1e6 100644
--- a/lib/ui/skeleton.dart
+++ b/lib/ui/skeleton.dart
@@ -2,14 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 import 'package:flutter_swipe/flutter_swipe.dart';
 
+import 'package:random/config/menu.dart';
 import 'package:random/cubit/bottom_nav_cubit.dart';
-import 'package:random/ui/screens/about_page.dart';
-import 'package:random/ui/screens/api_page.dart';
-import 'package:random/ui/screens/camera_page.dart';
-import 'package:random/ui/screens/demo_page.dart';
-import 'package:random/ui/screens/game_page.dart';
-import 'package:random/ui/screens/graph_page.dart';
-import 'package:random/ui/screens/settings_page.dart';
 import 'package:random/ui/widgets/app_bar.dart';
 import 'package:random/ui/widgets/bottom_nav_bar.dart';
 
@@ -23,23 +17,13 @@ class SkeletonScreen extends StatefulWidget {
 class _SkeletonScreenState extends State<SkeletonScreen> {
   @override
   Widget build(BuildContext context) {
-    const List<Widget> pageNavigation = <Widget>[
-      DemoPage(),
-      ApiPage(),
-      CameraPage(),
-      GraphPage(),
-      GamePage(),
-      SettingsPage(),
-      AboutPage(),
-    ];
-
     return Scaffold(
       extendBodyBehindAppBar: false,
       appBar: StandardAppBar(),
       body: Swiper(
-        itemCount: BlocProvider.of<BottomNavCubit>(context).pagesCount,
+        itemCount: Menu.itemsCount,
         itemBuilder: (BuildContext context, int index) {
-          return pageNavigation.elementAt(index);
+          return Menu.getPageWidget(index);
         },
         pagination: SwiperPagination(
           builder: SwiperCustomPagination(
diff --git a/lib/ui/widgets/bottom_nav_bar.dart b/lib/ui/widgets/bottom_nav_bar.dart
index 2013e651e39935e8c9b6c3197eb18773d1d3d6f1..f5b356e88c0d350dc1c7b1612d79b76e99148a4a 100644
--- a/lib/ui/widgets/bottom_nav_bar.dart
+++ b/lib/ui/widgets/bottom_nav_bar.dart
@@ -1,9 +1,8 @@
-import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 import 'package:flutter_swipe/flutter_swipe.dart';
-import 'package:unicons/unicons.dart';
 
+import 'package:random/config/menu.dart';
 import 'package:random/cubit/bottom_nav_cubit.dart';
 
 class BottomNavBar extends StatelessWidget {
@@ -41,36 +40,7 @@ class BottomNavBar extends StatelessWidget {
             backgroundColor: Colors.transparent,
             selectedItemColor: Theme.of(context).colorScheme.primary,
             unselectedItemColor: Theme.of(context).textTheme.bodySmall!.color,
-            items: <BottomNavigationBarItem>[
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.image),
-                label: tr('bottom_nav_sample'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.globe),
-                label: tr('bottom_nav_api'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.camera),
-                label: tr('bottom_nav_camera'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.pen),
-                label: tr('bottom_nav_chart'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.star),
-                label: tr('bottom_nav_game'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.setting),
-                label: tr('bottom_nav_settings'),
-              ),
-              BottomNavigationBarItem(
-                icon: const Icon(UniconsLine.info_circle),
-                label: tr('bottom_nav_about'),
-              ),
-            ],
+            items: Menu.getMenuItems(),
           );
         },
       ),
diff --git a/pubspec.yaml b/pubspec.yaml
index 2e0ad1ddb9fb0b379c371fd73328014ec8aad36b..96d198266d95be0ff478378d74ae4326b349f4a3 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: A random application, for testing purpose only.
 
 publish_to: 'none'
 
-version: 1.0.44+45
+version: 1.0.45+46
 
 environment:
   sdk: '^3.0.0'