Skip to content

About

An Android app built with Jetpack Compose that displays a catalogue of Warframe characters. Browse the list, search by name, view per-frame stats, and dynamically add or remove entries at runtime.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

JetWarframe

An Android app built with Jetpack Compose that displays a catalogue of Warframe characters. Browse the list, search by name, view per-frame stats, and dynamically add or remove entries at runtime.

Features

  • Scrollable, alphabetically-grouped Warframe list with sticky headers
  • Live search / filter by name
  • Detail screen per Warframe (stats, lore, portrait)
  • Add Limbo Prime to the list at runtime
  • Delete the first entry from the list at runtime
  • Animated scroll-to-top button
  • About screen with developer info
  • Dark-themed UI (Material 2, custom color palette)

Tech Stack

Layer Technology
Language Kotlin
UI Jetpack Compose (Material 2)
Architecture MVVM — ViewModel + StateFlow
Image loading Coil (AsyncImage)
Navigation Intent-based per detail Activity
Build Gradle 7.4, AGP 7.2.1, Kotlin 1.7.0
Min SDK 21 (Android 5.0 Lollipop)
Target SDK 33 (Android 13)

Project Structure

app/src/main/java/com/example/jetwarframes/
├── MainActivity.kt              # Entry point — hosts JetWarframesApp composable
├── JettWarframesApp.kt          # Root composable: list, search, option menu
├── JetWarframesViewModel.kt     # State owner: warframe list, search, add/delete
├── WarframeRepository.kt        # Provides initial warframe data
├── WarframesData.kt             # Static seed data (immutable list)
├── Warframe.kt                  # Data model
├── ActivityAbout.kt             # About / developer screen
├── AshPrime.kt                  # Detail screen — Ash Prime
├── AtlasPrime.kt                # Detail screen — Atlas Prime
├── BansheePrime.kt              # Detail screen — Banshee Prime
├── BaruukPrime.kt               # Detail screen — Baruuk Prime
├── Citrine.kt                   # Detail screen — Citrine
├── EmberPrime.kt                # Detail screen — Ember Prime
├── ExcaliburUmbra.kt            # Detail screen — Excalibur Umbra
├── FrostPrime.kt                # Detail screen — Frost Prime
├── KhoraPrime.kt                # Detail screen — Khora Prime
└── RhinoPrime.kt                # Detail screen — Rhino Prime

Getting Started

Prerequisites

  • Android Studio Dolphin (2021.3.1) or newer
  • JDK 8+
  • Android SDK with API 33 platform installed

Clone & open

git clone https://github.com/Akumaaaaaa/JetWarframe.git

Open the project folder in Android Studio and let Gradle sync complete.

Run

Connect a device or start an emulator (API 21+), then press Run (⇧F10) or:

./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk

Release build

./gradlew assembleRelease

The release build has R8 minification and resource shrinking enabled.

Architecture

UI (Composables)
      │  collectAsState / State<T>
      ▼
JetWarframesViewModel        ← single source of truth for the list
      │  getWarframes()
      ▼
WarframeRepository
      │  reads
      ▼
WarframesData (immutable seed)

WarframesData provides the initial immutable list.
WarframeRepository wraps it for DI / testability.
JetWarframesViewModel owns _allWarframes: MutableStateFlow<List<Warframe>> and derives the grouped, filtered view exposed to the UI. All mutations (add / delete) go through the ViewModel so the UI reacts immediately via StateFlow.

Warframes Included

# Name Element
1 Ash Prime Radiation
2 Atlas Prime Toxin
3 Banshee Prime Electricity
4 Baruuk Prime Impact
5 Citrine Magnetic
6 Ember Prime Heat
7 Excalibur Umbra Electricity
8 Frost Prime Cold
9 Khora Prime Toxin
10 Rhino Prime Impact
+1 Limbo Prime (addable at runtime) —

Known Limitations

  • Detail screens use local drawable resources (bundled images), not the network URLs shown in the list. Adding a new warframe via the menu will not have a matching detail screen unless code is added for it.
  • The profile photo URL in the About screen (res/values/strings.xml → profile_photo_url) points to a GitHub avatar; replace it with your own stable photo URL.
  • Navigation from list → detail is driven by a when (warframe.name) string match. Adding new warframes requires updating both WarframesData.kt and that when block.

License

This project is for educational / portfolio purposes. Warframe assets belong to Digital Extremes.

About

An Android app built with Jetpack Compose that displays a catalogue of Warframe characters. Browse the list, search by name, view per-frame stats, and dynamically add or remove entries at runtime.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages