Skip to content

RubenHunter/groove-review

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

61 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Album Review App

This is an Android application built using Kotlin that enables users to browse a collection of albums and leave their own reviews. Each album displays detailed information and users can provide their opinions with a rating from 1 to 5 stars (including decimals such as 4.5).

RELEASES ARE AT THE BOTTOM!!!


Project Overview

  • Album Details:
    Explore a curated list of albums featuring classic artists like The Beatles, Led Zeppelin, Pink Floyd, Fleetwood Mac, alongside a few rap and modern pop albums. Each album record shows:

    • Title
    • Artist
    • Release date
    • Genre
    • Cover image
    • Tags (array of descriptive values)
    • An indicator if the album is explicit (isExplicit)
  • User Reviews:
    Users can add multiple reviews per album, providing both textual feedback and a nuanced rating.

  • Rating System:
    Ratings are displayed on a scale from 1 to 5, supporting decimal values to capture refined opinions (e.g., 4.5 stars).


Dataset

The dataset is stored in the data/db.json file and follows this structure:

  • Albums:
    Each album record includes:

    • id (Integer): A unique identifier.
    • title (String): The album title.
    • artist (String): The album's performing artist.
    • releaseDate (Date): The release date in ISO 8601 format.
    • genre (String): The genre (e.g., ROCK, POP, RAP).
    • coverImage (String): Direct URL to the album's cover image.
    • tags (Array): An array of primitive values describing the album.
    • isExplicit (Boolean): Indicates whether the album contains explicit content.
  • Reviews:
    Each review record includes:

    • id (Integer): A unique identifier.
    • albumId (Integer): The album's id this review is related to.
    • reviewer (String): The reviewer's name.
    • reviewText (String): The content of the review.
    • reviewDate (Date): The date when the review was made.
    • rating (Number): A decimal rating (from 1.0 to 5.0).

How to Run

  1. Clone the Repository:

    git clone https://gitlab.com/Ruben_Moons/ui-2_android.git
  2. Open in Android Studio: Open the project using Android Studio. Ensure you have the necessary Kotlin and Android dependencies installed.

  3. Build & Run: Compile and run the app on an emulator or physical Android device.

Final Note

This project serves as a foundation for understanding how to work with datasets, manage one-to-many relationships (albums and reviews), and build an interactive Android application. The detailed JSON dataset and rating system aim to provide an engaging user experience and help you explore various functionalities in your app development journey.

(Partly generated by AI)

πŸ“¦ Releases

✨ Release: v1.0 (2025-04-20) week_1_2

βœ… New Features

  • Album Carousel: Horizontal scrollbar row met album covers. The selected album is visually bigger.
  • Landscape layout: In landscape album cover and details are next to each other with a responsive Row.
  • Updating Date: Possible to update the release date using a input field.
  • Review Telling: The number of reviews for every album are shown (can be 0,1 or more).
  • Full support for tablets(landscape detection).

🌟 What works well.

  • The carousel feels intuitive thanks to the automatic scroll on selection.
  • The transition between albums is smooth.
  • Adjusting the date with validation is user-friendly.

🎨 Creative accents

  • The carousel idea itself is a nice touch.
  • Carousel effect with magnification of the selected cover.
  • Dynamic layout that adapts to landscape mode with clear visual separation between image and details making everything fit without having to scroll on a tablet.

🐞 Known issues

  • For what was asked in the app assignment currently their are no bugs that i know of. ofcourse the app itself is lacking a lot but does everything asked of the assignment.

🚫 Not implemented

  • Everything that was asked in the Art Space app assignment is implemented.

✨ Release: v1.2 (2025-05-11) week_3_4

βœ… New Features

  • Scrollable Review List: Implemented a LazyList to create a scrollable horizontal list for each album's reviews, improving visibility and navigation.
  • Dutch Language Support: Added support for the Dutch language, enabling bilingual functionality alongside English.
  • Enhanced Landscape Mode: Modified the layout in landscape mode to dynamically adjust with a side-by-side view of the album cover and details, surpassing the original requirement of just adding a scrollbar.
  • Custom App Design: Integrated a fully self-designed logo (progress pictures of different versions available upon request), a custom font (HK Nova Bold Rounded or a close match), and a unique color scheme using hex codes (#26c662 for green, #141416 for black background, #1d1d1f for lighter black surfaces, and #a2a2a4 for gray text).
  • Light and Dark Mode Themes: Introduced light mode with a white (#ffffff) background and light gray (#e0e0e0) review cards, while dark mode retains the black (#141416) background and lighter black (#1d1d1f) surfaces, both using the same green and gray accents for thematic consistency.
  • App Name Change: Renamed the app to "Groove Review" to reflect its musical focus and enhanced user appeal.
  • Animation Addition: Added a foldable reviews section with a fade in/out and expand/shrink animation, triggered by an expandable icon.
  • Album Management: Users can now add, edit, and delete albums, with real-time updates to the UI.
  • Custom Album Cover Upload: Added the ability to upload custom album cover images (.png or .jpg) from the user’s device.
  • Quick Action Button: Implemented a floating action button (FAB) in landscape mode for saving changes without closing the keyboard, enhancing usability.
  • Loading Screen: Introduced a simple loading screen featuring the app logo and background color during startup.
  • Icon Functionality: All icons are now fully functional, including those for uploading images, selecting dates, navigation, and collapsing/expanding reviews.
  • Logging: For developers only: Added a lot of logging to follow what the app is doing in real time. (0 println used).

🌟 What works well.

  • The horizontal review list scrolls smoothly, making it easy to browse multiple reviews.
  • The bilingual support switches seamlessly between English and Dutch based on device settings.
  • The custom design elements (logo, font, and colors) give the app a professional and cohesive look.
  • The light and dark mode themes adapt well, maintaining the green and black theme from the logo.
  • The animation for the reviews section adds an engaging interactive element.
  • Album management features (add, edit, delete) work intuitively with real-time UI updates.
  • The quick action button in landscape mode improves the editing experience by keeping the save option accessible.
  • The loading screen provides a polished startup experience.

🎨 Creative accents

I MUST SAY I AM VERY PROUD WITH MY COLOR AND FONT AND LOGO DESIGN CHOICES. SCREENSHOTS AT THE BOTTOM

  • Enhanced Landscape Layout: The side-by-side design in landscape mode is an original improvement over the basic scrollbar requirement.
  • Custom Logo Evolution: The self-designed logo showcases a creative process with multiple iterations.
  • Unique Typography: The use of HK Nova Bold Rounded (or a similar font) adds a distinctive, clean aesthetic.
  • Thematic Color Scheme: The custom color codes tie the app’s design to the logo.
  • Interactive Animation: The foldable reviews with fade and expand effects bring a modern touch to the UI.
  • Album Cover Upload: Allowing users to upload custom images (.png or .jpg) for album covers adds a personal touch.
  • Quick Action FAB: The floating save button in landscape mode is a thoughtful addition for better usability.

🐞 (Known) Potential issues

  • The HK Nova Bold Rounded font may not be perfectly replicated if an exact match isn’t found, potentially affecting text rendering consistency.
  • The animation might occasionally stutter on lower-end devices due to performance limitations.
  • Language switching might not fully localize all strings if new content is added without updating translations.
  • Limited input validation for album details (e.g., no checks for empty fields or invalid dates beyond basic date parsing), which could lead to errors if invalid data is entered.

🚫 Not implemented (yet)

  • Advanced user authentication or account management features.
  • With an account upload your own review
  • Additional animations beyond the reviews foldable feature.
  • Input validation for all fields (e.g., ensuring valid dates, non-empty fields).
  • Stars as rating system in reviews

✨ Release: v1.3 (2025-05-29) week_5_7

βœ… New Features

  • Revamped Homescreen: The homescreen now focuses solely on displaying albums. Clicking an album takes you to a new details page where you can view album details, edit or delete the album, and manage its reviews. Reviews now include a reviewer name, content, and a star rating out of 5, with options to write, edit, or delete them.
  • Album Details Enhancements: Added tags to albums, displayed with random colorful gradients for a vibrant look. An explicit indicator now appears as a red tag next to the album title for albums marked as explicit.
  • Navigation: Introduced seamless navigation throughout the app for a more fluid user experience.
  • Settings Screen: Implemented a settings screen where users can customize preferences like dark mode or light mode, language, and username. These preferences are saved and persist even after closing and reopening the app.
  • Reviewer Name: When adding a review the reviewers name will be automatically filled in with the saved username form the settings screen, but can be changed by the user. If left empty it wil be posted under Ananymous.
  • Data Management: Shifted from local data storage to a JSON REST server, improving data accessibility and management.
  • Loading Screen: Added a loading screen that displays while albums are fetched, enhancing the user experience during data loading.
  • Dependency Injection: Integrated Hilt for dependency injection, optimizing the app’s architecture.
  • REST Server Configuration: The JSON REST server can be set to public (shared data across all users) or local, depending on the Retrofit base URL selected (e.g., http://10.0.2.2:3000/ for local or https://68364c5a664e72d28e406351.mockapi.io/ for public).
  • User Feedback: All actions (e.g., changing settings, creating, editing, or deleting albums/reviews) now trigger corresponding alerts to keep users informed.
  • Image Handling: Album cover images are now loaded from the internet via URL, with the option for users to upload their own pictures from their device.
  • Design Pride: The app’s design shines in both landscape and portrait modes, as well as dark and light themes, offering a polished and cohesive experience. Screenshots will be included to showcase this.
  • Transition Animation: Added a slightly faster transition animation for screen navigation, improving the flow compared to the slower default animation.
  • Validation: Implemented basic validation for album and review inputs, ensuring that required fields are not left empty.

🌟 What Works Well

  • The streamlined homescreen makes it easy to browse albums and jump to their details with a single tap.
  • The details page offers a comprehensive hub for managing albums and reviews, with intuitive controls.
  • The settings screen provides a user-friendly way to personalize the app, with persistent storage working flawlessly.
  • The JSON REST server integration ensures data is always current and accessible, whether public or local.
  • The loading screen keeps users engaged while albums load, smoothing out the experience.

🎨 Creative Accents

  • Colorful Gradient Tags: Tags in the album details now feature random colorful gradients, adding a playful and visually striking element to each album.
  • Explicit Indicator: A bold red explicit tag next to the album title clearly flags explicit content, blending functionality with style.
  • Design Excellence: The app’s design stands out in both landscape and portrait orientations, as well as dark and light modes, reflecting a meticulous attention to detail. Screenshots will highlight this achievement.

🐞 Known Issues

  • Data fetching from the REST server may experience slight delays under poor network conditions.
  • If you use the public server the images uploaded by a user will be visible for him alone but not for others. (since its just a simple mockapi server not a imagehosting one)
  • In light mode it was very hard to make it obvious when a star rating is half filled. I tried my best to still make it look good but its not perfect.

🚫 Not Implemented (Yet)

  • Uploading picture URLs by user.

πŸ“Έ Screenshots

Below are some screenshots showcasing the app's design and features:

Dark mode (as of v1.3)

darktheme_mainscreen_loading darktheme_mainscreen darkmodeCreate darkmodedetails darkmodeEdit darkreviews darkeditreview darksettings

Light mode (as of v1.3)

lightmodehome lightcreatealbum lightdetails lightreviews lighteditreviews lightcustomcover lightsettings

Logo Design Process

logo_design_progress

UI Design overhaul evolution

oldUI albumspace darktheme_mainscreen darktheme_mainscreen darktheme_mainscreen darkmodedetails

lighttheme_mainscreen lightmode lightmodehome lightdetails

Loading screen when opening app and loading screen when loading in albums

loadingscreen darktheme_mainscreen_loading

Dark mode (as of v1.2)

darktheme_mainscreen darktheme_mainscreen darkmodeCreate darkmodeEdit darkmodeDelete

Light mode (as of v1.2)

lightmode lightcreate lightedit

Landscape mode (as of v1.2)

landscape1 landscape2

  • The Fast Action Button (FAB) for quicksaving without having to close your keyboard.

landscapecreate landscapeedit

About

See README and screenshots to appreciate the UI/design progression! Android album review app built in Kotlin. Features custom UI/UX design with light/dark modes, bilingual support, and REST API integration. First Android project, showcases design evolution across 3 major releases.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages