feat: Scaffold UI screens and update project specification

- Create stub files for all UI screens defined in the tech spec (InventoryList, ItemDetails, ItemEdit, LabelsList, LocationsList, Search).
- Add corresponding ViewModels for each new screen.
- Update `tech_spec/project_structure.txt` to include the new files and mark them as 'stub'.
- Update `tech_spec/tech_spec.txt` to reflect the current implementation status, changing feature statuses to 'in_progress'.
- Add the undocumented `SearchScreen` to the project specification.
- Add `*.hprof` files to `.gitignore` to exclude memory dumps from version control.
This commit is contained in:
2025-08-08 19:40:13 +03:00
parent 5b613f7cc8
commit 94fb88f7b3
16 changed files with 4792 additions and 34 deletions

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.inventorylist
// [FILE] InventoryListScreen.kt
package com.homebox.lens.ui.screen.inventorylist
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun InventoryListScreen() {
// [ACTION]
Text(text = "Inventory List Screen")
}
@Preview(showBackground = true)
@Composable
fun InventoryListScreenPreview() {
InventoryListScreen()
}
// [END_FILE_InventoryListScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.inventorylist
// [FILE] InventoryListViewModel.kt
package com.homebox.lens.ui.screen.inventorylist
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class InventoryListViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_InventoryListViewModel.kt]

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.itemdetails
// [FILE] ItemDetailsScreen.kt
package com.homebox.lens.ui.screen.itemdetails
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun ItemDetailsScreen() {
// [ACTION]
Text(text = "Item Details Screen")
}
@Preview(showBackground = true)
@Composable
fun ItemDetailsScreenPreview() {
ItemDetailsScreen()
}
// [END_FILE_ItemDetailsScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.itemdetails
// [FILE] ItemDetailsViewModel.kt
package com.homebox.lens.ui.screen.itemdetails
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class ItemDetailsViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_ItemDetailsViewModel.kt]

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.itemedit
// [FILE] ItemEditScreen.kt
package com.homebox.lens.ui.screen.itemedit
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun ItemEditScreen() {
// [ACTION]
Text(text = "Item Edit Screen")
}
@Preview(showBackground = true)
@Composable
fun ItemEditScreenPreview() {
ItemEditScreen()
}
// [END_FILE_ItemEditScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.itemedit
// [FILE] ItemEditViewModel.kt
package com.homebox.lens.ui.screen.itemedit
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class ItemEditViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_ItemEditViewModel.kt]

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.labelslist
// [FILE] LabelsListScreen.kt
package com.homebox.lens.ui.screen.labelslist
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun LabelsListScreen() {
// [ACTION]
Text(text = "Labels List Screen")
}
@Preview(showBackground = true)
@Composable
fun LabelsListScreenPreview() {
LabelsListScreen()
}
// [END_FILE_LabelsListScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.labelslist
// [FILE] LabelsListViewModel.kt
package com.homebox.lens.ui.screen.labelslist
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class LabelsListViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_LabelsListViewModel.kt]

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.locationslist
// [FILE] LocationsListScreen.kt
package com.homebox.lens.ui.screen.locationslist
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun LocationsListScreen() {
// [ACTION]
Text(text = "Locations List Screen")
}
@Preview(showBackground = true)
@Composable
fun LocationsListScreenPreview() {
LocationsListScreen()
}
// [END_FILE_LocationsListScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.locationslist
// [FILE] LocationsListViewModel.kt
package com.homebox.lens.ui.screen.locationslist
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class LocationsListViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_LocationsListViewModel.kt]

View File

@@ -0,0 +1,22 @@
// [PACKAGE] com.homebox.lens.ui.screen.search
// [FILE] SearchScreen.kt
package com.homebox.lens.ui.screen.search
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
// [ENTRYPOINT]
@Composable
fun SearchScreen() {
// [ACTION]
Text(text = "Search Screen")
}
@Preview(showBackground = true)
@Composable
fun SearchScreenPreview() {
SearchScreen()
}
// [END_FILE_SearchScreen.kt]

View File

@@ -0,0 +1,16 @@
// [PACKAGE] com.homebox.lens.ui.screen.search
// [FILE] SearchViewModel.kt
package com.homebox.lens.ui.screen.search
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
// [VIEWMODEL]
@HiltViewModel
class SearchViewModel @Inject constructor() : ViewModel() {
// [STATE]
// TODO: Implement UI state
}
// [END_FILE_SearchViewModel.kt]