Menstruation Nation (M. Nation) is a free period tracker designed for youth. The app helps people learn more about their bodies by tracking their period cycle and symptoms.
[ ] a) Make sure ALL logical operations are in the view models and not in the view itself. For example, line 200 in symptomLog/ExcersisePrompt.kt is a function that should really belong in the view model.
[ ] b) Some files have significant redundant code, either make helpers or simplify the logic. One example is onboarding/Question*
[ ] c) Some files contain way too many components (look at symptomlog/LogScreen, settings/SettingScreenLayout, onboarding/Question*), move them into separate files. It's better to have more files each containing individual components, than one file containing multiple components.
[ ] d) We want to increase reusability so if there are components that could be reused, extract them and move them to the common component folder
[ ] e) Avoid nesting and extract nested code into its own functions/components. Aim for nesting with depth less than 4. For example, we can extract a lot of the functions passed into components into its own functions symptomLog/ExcercisePrompt.kt.
[ ] f) Components such as loading, or is related to database should be in its own folder, instead of spread out in different ui sub folders
[ ] g) Remove spaces between lines
[ ] h) Fix deprecated calls. For example, line 111 in AppScreen.kt
[ ] i) If possible, fix all warnings and errors from IntelliJ (click on Problems, Project Errors, then inspect the whole project). There are currently 640+ warnings
symptomLog/ExcersisePrompt.kt
is a function that should really belong in the view model.onboarding/Question*
symptomlog/LogScreen
,settings/SettingScreenLayout
,onboarding/Question*
), move them into separate files. It's better to have more files each containing individual components, than one file containing multiple components.component
foldersymptomLog/ExcercisePrompt.kt
.AppScreen.kt
strings.xml
/calendar
/cycle
/education
/legal
/onboarding
/setting
/symptomlog
Stage 1:
Stage 2: