Requirements
These are the guidelines for what your product does, and which features it requires.
Tech-Stack
Your application must be built using the following tech-stack, which will be discussed during course lectures 1.
- Kotlin for a programming language.
- Amper or Gradle for build configuration.
- kotlin-test and JUnit for test coverage.
- Jetpack Compose or Compose Multiplatform for user interfaces.
- Navigation3 for navigation.
- Coroutines for concurrency.
- Koin for dependency injection.
Depending on your requirements, you may need additional libraries. Choose from these:
Core Requirements
Your application must meet all of these requirements.
-
You must build a graphical application, that follows standards for each selected platform.
-
You must support at least one OS from each category below.
- Desktop: Windows, macOS, or Linux.
- Mobile: Android or iOS.
-
Your application must store some portion of its data in a database e.g., recipes for a recipe tracking application, user profile information, or user preferences like choice of theme.
- If your database is online, you are expected to implement suitable authentication and access control mechanisms.
- If your database is local, you are expected to follow best-practices for security on that platform.
-
Your application must use Amper or Gradle build configuration, and you will use best-practices for structuring your project/modules.
-
You are expected to implement automated tests for all of your features using the Kotlin test framework. You should demonstrate 75% code coverage by the end of the course.
Features & Functionality
Your application must also deliver functionality that is suitable to the particular problem you are solving.
As part of your project proposal, you will define a user, their problem, and user-stories i.e., problems and expected solutions. This will require you to identify the features that are specific to your application e.g., sorting recipes in a cooking application, display a social feed for other users in a multiuser application.
This list of features will be different for each project but should be sufficient to address all of the functionality that the user might expect.
-
Deviations from this requirement are only possible with written consent from the instructor. ↩︎