diff --git a/app/src/main/java/com/example/abe/ABEApplication.kt b/app/src/main/java/com/example/abe/ABEApplication.kt
index d41830ccebda8d3f0ce08036e4cd833e9fbb1606..e1aad4b92de3a25452462f53ec247e8a7d698892 100644
--- a/app/src/main/java/com/example/abe/ABEApplication.kt
+++ b/app/src/main/java/com/example/abe/ABEApplication.kt
@@ -1,8 +1,8 @@
 package com.example.abe
 
 import android.app.Application
-import com.example.abe.data.TransactionDatabase
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.TransactionDatabase
+import com.example.abe.data.db.TransactionRepository
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
 
diff --git a/app/src/main/java/com/example/abe/MainActivityViewModel.kt b/app/src/main/java/com/example/abe/MainActivityViewModel.kt
index afc842dc687d9c585fc6be5a53733c739eeb6b47..3c8ea5b6cbca8d5fc7d97d09711fd74fe7645f43 100644
--- a/app/src/main/java/com/example/abe/MainActivityViewModel.kt
+++ b/app/src/main/java/com/example/abe/MainActivityViewModel.kt
@@ -7,7 +7,7 @@ import android.net.Uri
 import androidx.core.content.FileProvider
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.TransactionRepository
 import com.example.abe.domain.FormatCurrencyUseCase
 import com.example.abe.domain.GenerateExcelUseCase
 import java.io.File
diff --git a/app/src/main/java/com/example/abe/data/network/Retrofit.kt b/app/src/main/java/com/example/abe/api/Retrofit.kt
similarity index 99%
rename from app/src/main/java/com/example/abe/data/network/Retrofit.kt
rename to app/src/main/java/com/example/abe/api/Retrofit.kt
index 21536640fdf2b360b5306ab1bbbe4817ef1b918c..5d389d64f3f55dccbf97abfaac3df729ab14582d 100644
--- a/app/src/main/java/com/example/abe/data/network/Retrofit.kt
+++ b/app/src/main/java/com/example/abe/api/Retrofit.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data.network
+package com.example.abe.api
 
 import android.util.Log
 import okhttp3.MediaType.Companion.toMediaTypeOrNull
diff --git a/app/src/main/java/com/example/abe/data/network/Services.kt b/app/src/main/java/com/example/abe/api/Services.kt
similarity index 94%
rename from app/src/main/java/com/example/abe/data/network/Services.kt
rename to app/src/main/java/com/example/abe/api/Services.kt
index 42eff784a360a550e29b48501ff71afdd8d988ba..a18bb1d689c60ff47ee657c47dfa82d034762dfa 100644
--- a/app/src/main/java/com/example/abe/data/network/Services.kt
+++ b/app/src/main/java/com/example/abe/api/Services.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data.network
+package com.example.abe.api
 
 import okhttp3.MultipartBody
 import retrofit2.Call
diff --git a/app/src/main/java/com/example/abe/data/network/Types.kt b/app/src/main/java/com/example/abe/api/Types.kt
similarity index 92%
rename from app/src/main/java/com/example/abe/data/network/Types.kt
rename to app/src/main/java/com/example/abe/api/Types.kt
index e423b33a53a42e4b94da8eb9e738d55f86da2f47..fef0c9f5fec848782168e30e814738688bb3d81b 100644
--- a/app/src/main/java/com/example/abe/data/network/Types.kt
+++ b/app/src/main/java/com/example/abe/api/Types.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data.network
+package com.example.abe.api
 
 data class LoginRequest (
     val email: String,
diff --git a/app/src/main/java/com/example/abe/connection/retrofit.kt b/app/src/main/java/com/example/abe/connection/retrofit.kt
deleted file mode 100644
index 03d15e5821fb4f7ae340dd0ab0f0441c296e8034..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/abe/connection/retrofit.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.example.abe.connection
-
-import com.example.abe.services.LoginService
-import com.example.abe.types.LoginRequest
-import com.example.abe.types.LoginResponse
-import retrofit2.Call
-import retrofit2.Callback
-import retrofit2.Response
-import retrofit2.Retrofit
-import retrofit2.converter.gson.GsonConverterFactory
-
-class CallBack<T> : Callback<T> {
-    override fun onResponse(call: Call<T>, response: Response<T>) {
-        if (response.isSuccessful) {
-            // Handle successful response
-            val data = response.body()
-            // Process the data here
-            if (data is LoginResponse) {
-                // Handle LoginResponse
-                println("Login successful $data")
-            }
-        } else {
-            // Handle error response
-            // Maybe use response.errorBody() to get error details
-            println("Login failed")
-        }
-    }
-
-    override fun onFailure(call: Call<T>, t: Throwable) {
-        // Handle failure
-        println("Failed to send request")
-    }
-}
-
-class Retrofit {
-
-    private val url = "https://pbd-backend-2024.vercel.app/"
-    private val retrofit = Retrofit.Builder()
-        .baseUrl(url)
-        .addConverterFactory(GsonConverterFactory.create())
-        .build()
-
-    fun Login(email: String, password: String) {
-        val loginService = retrofit.create(LoginService::class.java)
-
-        val call: Call<LoginResponse> = loginService.login(
-            LoginRequest(email, password)
-        )
-
-        call.enqueue(CallBack())
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/abe/data/Converters.kt b/app/src/main/java/com/example/abe/data/db/Converters.kt
similarity index 89%
rename from app/src/main/java/com/example/abe/data/Converters.kt
rename to app/src/main/java/com/example/abe/data/db/Converters.kt
index 348b048cccae9864895bb3121b091fd472b0e4e5..1a8497a31995d077dc773f9d28b8b1559e839ebd 100644
--- a/app/src/main/java/com/example/abe/data/Converters.kt
+++ b/app/src/main/java/com/example/abe/data/db/Converters.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data
+package com.example.abe.data.db
 
 import androidx.room.TypeConverter
 import java.util.Date
diff --git a/app/src/main/java/com/example/abe/data/Transaction.kt b/app/src/main/java/com/example/abe/data/db/Transaction.kt
similarity index 92%
rename from app/src/main/java/com/example/abe/data/Transaction.kt
rename to app/src/main/java/com/example/abe/data/db/Transaction.kt
index 1f8bf16050aefe6700c40f613bd44aa5756ddbde..1c22afba3af758b000b1582c2306783b6046a92a 100644
--- a/app/src/main/java/com/example/abe/data/Transaction.kt
+++ b/app/src/main/java/com/example/abe/data/db/Transaction.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data
+package com.example.abe.data.db
 
 import androidx.room.Entity
 import androidx.room.PrimaryKey
diff --git a/app/src/main/java/com/example/abe/data/TransactionDAO.kt b/app/src/main/java/com/example/abe/data/db/TransactionDAO.kt
similarity index 97%
rename from app/src/main/java/com/example/abe/data/TransactionDAO.kt
rename to app/src/main/java/com/example/abe/data/db/TransactionDAO.kt
index 51a67245beff268dcfaac8253549c7f41922f448..9e69fcc654c96c3a3bd3850ef4b29faa7f8de72a 100644
--- a/app/src/main/java/com/example/abe/data/TransactionDAO.kt
+++ b/app/src/main/java/com/example/abe/data/db/TransactionDAO.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data
+package com.example.abe.data.db
 
 import androidx.lifecycle.LiveData
 import androidx.room.Dao
diff --git a/app/src/main/java/com/example/abe/data/TransactionDatabase.kt b/app/src/main/java/com/example/abe/data/db/TransactionDatabase.kt
similarity index 98%
rename from app/src/main/java/com/example/abe/data/TransactionDatabase.kt
rename to app/src/main/java/com/example/abe/data/db/TransactionDatabase.kt
index 61616bf0b557a542746ca6a55a7ad5d7af9ff538..4d54cfc02cc7792a79d921182ae6befd46c7f3c2 100644
--- a/app/src/main/java/com/example/abe/data/TransactionDatabase.kt
+++ b/app/src/main/java/com/example/abe/data/db/TransactionDatabase.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data
+package com.example.abe.data.db
 
 import android.content.Context
 import androidx.room.Database
diff --git a/app/src/main/java/com/example/abe/data/TransactionRepository.kt b/app/src/main/java/com/example/abe/data/db/TransactionRepository.kt
similarity index 97%
rename from app/src/main/java/com/example/abe/data/TransactionRepository.kt
rename to app/src/main/java/com/example/abe/data/db/TransactionRepository.kt
index be06b77be5b9af340837eee3bdbcf74f37297898..97b9308e6ee5b5ad2ff23396493bc3ae6871e111 100644
--- a/app/src/main/java/com/example/abe/data/TransactionRepository.kt
+++ b/app/src/main/java/com/example/abe/data/db/TransactionRepository.kt
@@ -1,4 +1,4 @@
-package com.example.abe.data
+package com.example.abe.data.db
 
 import androidx.annotation.WorkerThread
 import androidx.lifecycle.LiveData
diff --git a/app/src/main/java/com/example/abe/services/AuthService.kt b/app/src/main/java/com/example/abe/services/AuthService.kt
index 6ebef0d8dd060898c451110a0243b2fbcbe79dde..c74233bb94c573cb52798e3fcf9096f7f8ae54c9 100644
--- a/app/src/main/java/com/example/abe/services/AuthService.kt
+++ b/app/src/main/java/com/example/abe/services/AuthService.kt
@@ -8,8 +8,8 @@ import androidx.lifecycle.lifecycleScope
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import com.example.abe.data.local.PreferenceDataStoreConstants
 import com.example.abe.data.local.PreferenceDataStoreHelper
-import com.example.abe.data.network.CheckAuthResultCallback
-import com.example.abe.data.network.Retrofit
+import com.example.abe.api.CheckAuthResultCallback
+import com.example.abe.api.Retrofit
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 
diff --git a/app/src/main/java/com/example/abe/services/login.kt b/app/src/main/java/com/example/abe/services/login.kt
deleted file mode 100644
index df0ba8ae47e580e0b3e97c48cad180fb79426873..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/abe/services/login.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.example.abe.services
-
-import com.example.abe.types.LoginRequest
-import com.example.abe.types.LoginResponse
-import retrofit2.Call
-import retrofit2.http.Body
-import retrofit2.http.POST
-
-interface LoginService {
-    @POST("api/auth/login")
-    fun login(@Body user: LoginRequest) : Call<LoginResponse>
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/abe/types/data.kt b/app/src/main/java/com/example/abe/types/data.kt
deleted file mode 100644
index 103119b0f150af0030a88f6fd958bb97dc7a618b..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/abe/types/data.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.example.abe.types
-
-data class LoginRequest (
-    val email: String,
-    val password: String
-)
-
-data class LoginResponse (
-    val token: String
-)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/abe/ui/form_transaction/FormTransactionViewModel.kt b/app/src/main/java/com/example/abe/ui/form_transaction/FormTransactionViewModel.kt
index 4261ef49847d6831561a2fad21ec576db2fa5e90..2af76e448621f181e3b7762fa05ee65365cb6752 100644
--- a/app/src/main/java/com/example/abe/ui/form_transaction/FormTransactionViewModel.kt
+++ b/app/src/main/java/com/example/abe/ui/form_transaction/FormTransactionViewModel.kt
@@ -1,13 +1,12 @@
 package com.example.abe.ui.form_transaction
 
-import android.util.Log
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.map
 import androidx.lifecycle.viewModelScope
-import com.example.abe.data.Transaction
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.Transaction
+import com.example.abe.data.db.TransactionRepository
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
diff --git a/app/src/main/java/com/example/abe/ui/graph/GraphViewModel.kt b/app/src/main/java/com/example/abe/ui/graph/GraphViewModel.kt
index c6e874519db0b7d44d546b411fdb96881f00cf92..70a98f436bbe3151dc1f338fe9b56417ab9e8d3d 100644
--- a/app/src/main/java/com/example/abe/ui/graph/GraphViewModel.kt
+++ b/app/src/main/java/com/example/abe/ui/graph/GraphViewModel.kt
@@ -2,7 +2,7 @@ package com.example.abe.ui.graph
 
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.TransactionRepository
 
 class GraphViewModel(private val transactionRepository: TransactionRepository) : ViewModel() {
     suspend fun getExpenses(user: String): Int {
diff --git a/app/src/main/java/com/example/abe/ui/login/LoginActivity.kt b/app/src/main/java/com/example/abe/ui/login/LoginActivity.kt
index e8869b740bac22c18b48d1915e2bfe56fe0819c0..1180d452d053d713a5baf3fd55699bb9d3064b07 100644
--- a/app/src/main/java/com/example/abe/ui/login/LoginActivity.kt
+++ b/app/src/main/java/com/example/abe/ui/login/LoginActivity.kt
@@ -16,9 +16,10 @@ import com.example.abe.connection.NetworkConnectivityObserver
 import com.example.abe.data.local.PreferenceDataStoreConstants.TOKEN
 import com.example.abe.data.local.PreferenceDataStoreConstants.USER
 import com.example.abe.data.local.PreferenceDataStoreHelper
-import com.example.abe.data.network.LoginResultCallback
-import com.example.abe.data.network.Retrofit
+import com.example.abe.api.LoginResultCallback
+import com.example.abe.api.Retrofit
 import com.example.abe.databinding.ActivityLoginBinding
+import com.example.abe.api.LoginResponse
 import com.example.abe.utils.isConnected
 import com.google.android.material.textfield.TextInputLayout
 import kotlinx.coroutines.flow.launchIn
@@ -45,7 +46,7 @@ class LoginActivity : AppCompatActivity(), LoginResultCallback {
 
     private lateinit var preferenceDataStoreHelper: PreferenceDataStoreHelper
 
-    override fun onSuccess(loginResponse: com.example.abe.data.network.LoginResponse) {
+    override fun onSuccess(loginResponse: LoginResponse) {
         println("Login successful: $loginResponse")
 
         lifecycleScope.launch {
diff --git a/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt b/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt
index 7988086650124b35ef44585061d22ff331e78b83..2378b8d5ec9b29d7af133755772842f40c3b3596 100644
--- a/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt
+++ b/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt
@@ -40,9 +40,9 @@ import com.example.abe.ABEApplication
 import com.example.abe.MainActivity
 import com.example.abe.R
 import com.example.abe.data.local.PreferenceDataStoreConstants
-import com.example.abe.data.network.ItemsRoot
-import com.example.abe.data.network.Retrofit
-import com.example.abe.data.network.UploadResultCallback
+import com.example.abe.api.ItemsRoot
+import com.example.abe.api.Retrofit
+import com.example.abe.api.UploadResultCallback
 import com.example.abe.databinding.FragmentScanBinding
 import com.example.abe.utils.isConnected
 import com.google.android.gms.location.FusedLocationProviderClient
diff --git a/app/src/main/java/com/example/abe/ui/scanner/ScannerViewModel.kt b/app/src/main/java/com/example/abe/ui/scanner/ScannerViewModel.kt
index 5cfd8170db1d62a93d9160da905d379aa34d244a..1d2056fd2c84412610b7c0bb5303cf353ef03e70 100644
--- a/app/src/main/java/com/example/abe/ui/scanner/ScannerViewModel.kt
+++ b/app/src/main/java/com/example/abe/ui/scanner/ScannerViewModel.kt
@@ -1,13 +1,13 @@
 package com.example.abe.ui.scanner
 
 import androidx.lifecycle.ViewModel
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.TransactionRepository
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.Dispatchers
-import com.example.abe.data.Transaction
-import com.example.abe.data.network.TransactionItem
+import com.example.abe.data.db.Transaction
+import com.example.abe.api.TransactionItem
 import java.util.Date
 
 class ScannerViewModel(private val transactionRepository: TransactionRepository):
diff --git a/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt b/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
index 0439e20100b49ae6e598e593a6a9fbc42d42ccf4..ef727f55c56e011e239da7021465a42bfe6d6be3 100644
--- a/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
+++ b/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
@@ -3,8 +3,8 @@ package com.example.abe.ui.transactions
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
-import com.example.abe.data.Transaction
-import com.example.abe.data.TransactionRepository
+import com.example.abe.data.db.Transaction
+import com.example.abe.data.db.TransactionRepository
 
 
 class TransactionViewModel(private val transactionRepository: TransactionRepository) : ViewModel() {
diff --git a/app/src/main/java/com/example/abe/ui/transactions/TransactionsAdapter.kt b/app/src/main/java/com/example/abe/ui/transactions/TransactionsAdapter.kt
index da0124b12db5ec09ad008dd4b908c56a8136bd0a..6acf6fc8619d631b94a12d5a1a256d946d77a2d7 100644
--- a/app/src/main/java/com/example/abe/ui/transactions/TransactionsAdapter.kt
+++ b/app/src/main/java/com/example/abe/ui/transactions/TransactionsAdapter.kt
@@ -11,7 +11,7 @@ import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import com.example.abe.R
-import com.example.abe.data.Transaction
+import com.example.abe.data.db.Transaction
 import com.example.abe.domain.FormatCurrencyUseCase
 import java.text.SimpleDateFormat
 import java.util.Locale