Skip to content

Rating - an application showing the ranking of creators. It works on two APIs, exhibits excellent documentation, and deadlines during its creation.

Notifications You must be signed in to change notification settings

KacperMajcher/rating

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RatingProject

Project description at the bottom

Commit Code cleanup

Changes

Code cleanup

  • The applications have been cleaned and optimized.
  • A stateless widget has been applied to handle widgets.
  • One of the faulty tests has been fixed.
  • Unnecessary records have been removed.

Commit Change deafoult Flavor to production Nov 14, 2023, 2:39 PM

Commit Add an application preview to the documentation Nov 14, 2023, 1:28 PM

App.Review.mp4

Commit Add custom snackbars for Flavors Nov 14, 2023, 12:27 PM

Changes

Add custom snackbars for Flavors

  • A custom snackbar has been added to the application, which is displayed after adding a task
Nagrywanie.2023-11-14.121210.mp4
  • For the production flavor, a snackbar has been added that prevents the removal of tasks from the list. This functionality is only enabled for the development flavor.

Flavor.production

Nagrywanie.2023-11-14.121352.mp4

Flavor.development

Nagrywanie.2023-11-14.121547.mp4

Commit Add app icon Nov 14, 2023, 8:23 AM

Commit Move MyApp class to app.dart Nov 14, 2023, 7:57 AM

Commit Test Coverage Nov 13, 2023, 11:24 AM

Test Coverage

After conscientiously creating tests for the application, my focus shifted towards establishing thorough "test coverage." This metric measures the percentage of the source code covered by unit tests. Its significance lies in its ability to identify sections of untested code and evaluate the overall quality and stability of the application.

Result:

Exciting news! Project has successfully achieved a flawless 100% test coverage. This milestone underscores my dedication to producing a resilient and top-tier software product.

Test-Coverage Tests

Commit Add new DeadlineRepository tests Nov 13, 2023, 10:59 AM

DeadlineRepository Tests Documentation

Test Scopes

1. getDeadlineData() Function

  • Test 1: Retrieving a stream of DeadlineItems. - Verifies that the getDeadlineData function returns a stream of DeadlineItems when valid data is provided.

2. add() Function

  • Test 1: Calling addDeadline once with provided parameters. - Ensures that the add function calls addDeadline on the remote data source once with the provided parameters.
  • Test 2: Throwing exception if addDeadline on remote data source throws. - Verifies that the add function throws an exception if addDeadline on the remote data source throws.

3. setAsDone() Function

  • Test 1: Calling setAsDone with ID once. - Ensures that the setAsDone function calls setAsDone with the provided ID once.

4. filterItems() Function

  • Test 1: Retrieving a list of DeadlineItems. - Verifies that the filterItems function returns a list of DeadlineItems when valid data is provided.

5. remove() Function

  • Test 1: Calling delete() with ID once. - Ensures that the remove function calls delete with the provided ID once.

Commit Add new HomeCubit tests Nov 13, 2023, 10:07 AM

HomeCubit Tests Documentation

Test Scopes

1. getDeadlineItems() Function

  • Test 1: Checking the loading and success states with valid deadline items. - Verifies that the getDeadlineItems function emits loading and success states when valid deadline items are fetched.
  • Test 2: Checking the loading and error states when an error occurs during fetching. - Ensures that the getDeadlineItems function emits loading and error states when an error occurs during the fetch operation.

2. filterItems() Function

  • Test 1: Checking the return of deadlines when no keyword is entered. - Verifies that the filterItems function returns all deadlines when no keyword is provided.
  • Test 2: Checking the return of filtered deadlines when a keyword is entered. - Ensures that the filterItems function returns the correct filtered deadlines when a keyword is provided.
  • Test 3: Checking the return of filtered deadlines when no items match the keyword. - Verifies that the filterItems function returns an empty list when no deadlines match the provided keyword.

3. remove() Function

  • Test 1: Checking the correct removal of an element from the list. - Ensures that the remove function removes the specified deadline from the list.

4. toggleCheckBox() Function

  • Test 1: Checking the success status after calling the setAsDone method. - Verifies that the toggleCheckBox function emits a success status after successfully calling the setAsDone method.

Commit Implement getIt in add page Nov 11, 2023, 3:54 PM

Commit Test PodcasterRepository Nov 11, 2023, 2:40 PM

The PodcasterRepository tests have been added

The getPodcasterModel() function has received tests:

  • Checking if the remoteDataSource.getPodcasterData() method is called.
  • Checking the return of the list of podcasters.

Commit Test PodcasterModel Nov 11, 2023, 2:26 PM

The PodcasterModel tests have been added

The PodcasterModel.fromJson() method has received tests:

  • Checking if the provided map supplies the desired PodcasterModel.
    • Verifies that the expected PodcasterModel is correctly created from the provided map.

Commit Test PodcastersCubit Nov 11, 2023, 2:06 PM

The PodcastersCubit tests have been added

The getPodcasterModels() function has received tests:

  • Checking the method call to getPodcasterModel() once at the start.
  • Checking the successful emission of Status.loading followed by Status.success with results.
  • Checking the emission of Status.loading followed by Status.error with an error message.

Commit Test AddCubit Nov 11, 2023, 12:17 PM

The AddCubit tests have been added

The AddCubit has been tested for:

  • Successful addition, returning Status.success after adding a deadline.
  • Unsuccessful addition, returning Status.error and the appropriate error message after a failed attempt to add a deadline.

Commit Test DeadlineModel Nov 11, 2023, 11:28 AM

The DeadlineModel tests have been added

Test scopes:

Constructor and Serialization

  • Verify that the constructor creates a DeadlineItem with correct data.
  • Confirm that serialized data matches expectations.

Default Values

  • Check if default values are set correctly.

daysLeft() Method

  • Ensure the daysLeft method returns the correct number of days.

deadlineDateFormatted() Method

  • Check if the deadlineDateFormatted method returns a correctly formatted date.

TimeStampSerializer Tests

  • Test serialization/deserialization with TimeStampSerializer.
  • Confirm that fromJson converts a timestamp to DateTime.
  • Confirm that toJson converts DateTime to a timestamp.

Commit Update ArtistModel Tests Nov 11, 2023, 10:31 AM

Commit Test DeadlineRepository Nov 11, 2023, 10:26 AM

The DeadlineRepository test have been added

The getDeadlineData() function has received test:

  • Checking the correct list of deadlines is returned

Commit Test HomeCubit Nov 11, 2023, 9:41 AM

The HomeCubit tests have been added

Test scopes:

The filterItems() function has received tests:

  • Checking the return of deadlines when no keyword is entered.
  • Checking the return of filtered deadlines when a keyword is entered.
  • Checking the return of filtered deadlines when no items match the keyword.

The remove() function has received tests:

  • Checking the correct removal of an element from the list.

The toggleCheckBox() function has received tests:

  • Checking the success status after calling the setAsDone method.

Commit Standardize error handling Nov 11, 2023, 9:27 AM

Error handling has been standardized. The entire application now utilizes a single method

Commit Add podcasters section Nov 10, 2023, 1:38 PM

A top podcasters section has been added to the project

Users can now confidently discover which of their favorites have made it to the top rankings and explore details about other creators. Within the application, they can access biographies, top songs/podcasts, and titles for each artist. Additionally, visually appealing graphics are showcased throughout the application for a more immersive experience!

Current appearance of the application

Nagrywanie.2023-11-10.133609.mp4

Commit Update the graphics database in the application Nov 10, 2023, 12:34 PM

The graphics database in the application has been expanded

Previous graphics have been removed and replaced with better-looking and more relevant graphics generated by AI

Within the artist model, a recent addition includes the introduction of the 'coverNumber' variable, serving the purpose of presenting the fitting album cover for each record

New graphics have been introduced for podcast screens, hinting at the upcoming launch of this section later today

For podcasters, the 'coverNumber' variable is used to display the podcast cover

Commit Remove the reference to remoteDataSource from Cubit for the remove method Nov 9, 2023, 6:37 PM

Commit Wrap deadlines in generators Nov 9, 2023, 4:59 PM

To the home/deadlines part, the following features have been added: freezed, json serializable and injectable

This has resulted in the creation of generating and simplifying code methods

Thanks to freezed, I will also be able to start testing this part of the application

Commit Add flavors Nov 9, 2023, 9:59 AM

Various configuration options (flavors) have been added to the application

Currently, their functionality supports production and development configurations

A new file, 'main_production.dart,' has been created, which is invoked when the production version is launched

Notably, this file does not include the 'debug' bar in the upper right corner of the screen

Regardless of the chosen flavor, we have also implemented a hardcoded link to the API server for different application flavors. If necessary, these links can be modified in one central location, ensuring the correct functioning of the entire application

Commit Improve the functionality of the daysLeft() function Nov 8, 2023, 7:26 PM

The function daysLeft() has been improved

It now correctly displays the number of days remaining until the deadline

Commit Optimize the performance of the 'remove' method Nov 8, 2023, 7:16 PM

Commit Fix searchBar in DeadlinePage Nov 8, 2023, 5:43 PM

The search bar on the deadline page has been fixed

Cubit retrieves a method from the data source

Commit Add real-time checkbox toggler Nov 8, 2023, 5:28 PM

The method responsible for changing the state of deadlines has been updated

The method now sends a signal directly to Firebase

Cubit retrieves a method from the data source

Commit Move the method of adding tasks to data source Nov 8, 2023, 5:00 PM

The method for adding a new task to the Firebase database has been moved to the deadline data source file

Commit Pop-up add page screen after saving Nov 7, 2023, 3:03 PM

The screen is popped up after saving thanks to the Bloc Consumer

Commit Change the date display format Nov 7, 2023, 2:51 PM

The date display format in the Add Page has been changed to be more readable

Check-progress-here

Commit Change the color palette of the date picker Nov 7, 2023, 2:45 PM

The color palette of the date picker has been changed to match the application's visual style

Check-progress-here

Commit Add Add Page Nov 7, 2023, 2:19 PM

An "Add Page" has been added to the application, accessible via an Elevated Button on the Home Page

The tasks added in it are connected to the Firebase database, which refreshes after each action

The "isDone" parameter for task completion is set to false by default

The ability to confirm adding a task is only possible when both a deadline date and a task have been provided. In that case, the check icon button changes color and becomes clickable

The deadline date can be set up to a maximum of 5 years in advance

Nagrywanie.2023-11-07.140944.mp4

Commit Add Dismissible to the deadlines Nov 7, 2023, 10:59 AM

A dismissible feature has been added to manage deadlines

It is linked to the "remove" function, which communicates with the Firebase database and immediately removes the corresponding item from the list

An interesting aspect is that the task is only deleted when it is swiped to the left; otherwise, it won't work

In the background, on the left side of the screen, a trash can icon appears to indicate that this action will result in the removal of the task from the list

Nagrywanie.2023-11-07.105621.mp4

Commit Integrate the application with Firebase to display deadlines Nov 6, 2023, 5:39 PM

The application has been integrated with Firebase Firestore, where deadlines are stored

The application retrieves them in real-time using StreamSubscription, and a newly created deadline data source operates on a stream

The fromJson method has been added to the DeadlineModel

Some minor adjustments have been applied to the DeadlineItemWidget

Many new deadlines have been added to the list

Check-progress-here

Commit Test ArtistCubit Nov 6, 2023, 2:25 PM

The ArtistCubit has been equipped with its own set of tests

The bloc_test plugin has also been used to simplify the process of testing blocs

The tests for ArtistCubit within the project serve the following purposes:

1. Verifying that the getArtistModel method is invoked precisely once.

2. Confirming that the getArtistModel method emits the correct states when there is a success or error scenario.

Commit Test the getArtistModel method in the artists repository Nov 6, 2023, 1:16 PM

Tests for the artist repository have been added to the project

Their role is to confirm the proper operation of the getArtistModel method. These tests aim to ensure that the method is invoked correctly and that it returns the expected list of artists

These tests need to work offline to ensure consistent results, so an expectedArtists list was created, containing mock data that is used in the test

In the code, you can also notice a separation into three parts. This ensures that in the first part of the test, we provide the appropriate data, in the second part, we call the method we want to test, and in the third part, we use expect to make assertions

Commit Test ArtistModel .fromJson method Nov 6, 2023, 12:59 PM

The test artist model has been added to the project

The test verifies whether the .fromJson method correctly transforms the provided map into a model.

Commit Create a complete project documentation Nov 5, 2023, 4:07 PM

The detailed documentation has been added to the readme file

Commit Implement auto registering for injectable Oct 30, 2023, 8:36 PM

Automatic registration for injectable has been added in both the cubit and repository

Check-progress-here

Commit Add field rename to remove @jsonkey's from code Oct 30, 2023, 8:29 PM

Field rename has been added to the project. Due to its design, it automatically converts parameters in the factory constructor

Commit Implement injectable (auto get_it) Oct 30, 2023, 8:14 PM

Automatic registration of elements to get_it has been added

Commit Implement get_it Oct 30, 2023, 7:51PM

References to Dio, repository, and data source have been removed from the ArtistPage (UI part of the application)

Commit Add Retrofit Oct 30, 2023, 7:21 PM

Retrofit implementation has been added to the project

This has simplified the code. Retrofit returns the expected model.

Retrofit is a file generator for Dio. In the next commit, references to Dio from the UI layer of the application will be removed

Commit Implement freezed to the project Oct 30, 2023, 6:59 PM

Freezed implementation has been added to the project

This has simplified the code and made it printable

Freezed was used in both the artist model and bloc

Commit Add Json Serailizable Oct 30, 2023, 2:19 PM

Json Serializable has been added to the project. It allows for the automatic generation of the .fromJson() method.

New deadlines with tasks related to generators have been added to the project

Check-progress-here

Current appearance of the application

Nagrywanie.2023-10-30.141519.-.Trim.mp4

Commit Add Dio handling errors Oct 29, 2023, 6:46 PM

Add Dio handling errors

Commit Create ArtistsRemoteDioDataSource Oct 29, 2023, 6:41 PM

A Json API database has been added to the application in the ArtistsRemoteDioDataSource

Commit Convert Bloc Listener and Bloc Builder to Bloc Consumer Oct 29, 2023, 6:21 PM

Commit Implement handling error to artist page Oct 29, 2023, 6:14 PM

Commit Display data using .fromJson method Oct 29, 2023, 11:38 AM

The model has been converted into a JSON list

The data is displayed using the .fromJson method

Commit Improve artists details page look Oct 27, 2023, 4:43 PM

The appearance of the Artists Details Page screen has been improved

The best songs of the artists, their sample album covers (generated by AI), and the number of views for the songs have been provided for each of the screens

A new deadline has been added

Nagrywanie.2023-10-27.163744.mp4

Commit Create a suffix to optimize the display of 'day(s) left' in the DeadlineItemWidget Oct 27, 2023, 12:04 AM

In the main screen of the application, a suffix has been added to improve code readability. It is responsible for displaying an appropriate phrase related to the remaining days to complete a task from the list.

The deadline list has been updated

Check-for-changes

Commit Improve the display of deadlines Oct 27, 2023, 11:47 AM

The display of deadlines has been improved

Commit Implement prototype of artist details page Oct 27, 2023, 11:11 AM

The new data has been passed and displayed in the ArtistDetailsPage screen prototype

Check-for-changes

Commit Add a new model to the ArtistModel Oct 27, 2023, 11:04 AM

The ArtistModel has been updated with a new model called TopSongs

It contains data about the top 3 songs of the artist participating in the competition

Commit Add artists details page Oct 26, 2023, 10:38 PM

An artist details page has been added to the project, which will store more information about the listed artist in the future

Using the onTap parameter in InkWell, clicking on an artist will navigate us to the artist details page screen

New deadlines have been added to the list

Commit Add navigation to the main page in drawer Oct 25, 2023, 10:32 PM

Navigation to the main page in drawer is added

Check-for-changes

Commit Improve artists page look Oct 25, 2023, 10:21 PM

The appearance of the artist page has been improved

New images (generated by artificial intelligence) will be used as avatars for the artists

Check for changes

Nagrywanie.2023-10-25.221735.mp4

Commit Add AI-generated images to the project Oct 25, 2023, 10:16 PM

The project has had AI-generated images added, which serve as avatars for artists in the listing

Commit Create artist page prototype Oct 25, 2023, 6:12 PM

A prototype of the artist page has been created

The screen is divided into parts - there's a header, a search bar, and a list of containers where rankings are entered (each window represents one artist)

The data is fetched in the same way

Check-progress-here

Commit Create mocked data source and convert model to models list Oct 25, 2023, 4:17 PM

The remote data source for the artist page has been added to the project

A list of sample artists has been included in the remote data source

Artists from the remote data source are displayed on the artist page

The artists on the homepage are displayed using the artistItemWidget in a listView

Check-progress-here

Commit Create artist repository Oct 25, 2023, 3:17 PM

An artist repository has been created

Using the getArtistItems function, elements from the artistmodel are passed to Cubit, and then they are displayed on the artist page

Commit Create artist model Oct 25, 2023, 3:06 PM

An artist model was developed

This model is integrated into the Cubic system. More specifically, this model is used within the "getArtistItems" function, where particular author is assigned to the model

The model, along with its assigned author, is presented and showcased on a web page

Commit Build BLoC for articles page Oct 25, 2023, 12:52 PM

Implement BLoC for articles page

Pass data from Cubit to the view

Commit Display sample data on the artist page Oct 25, 2023, 12:01 PM

Display sample data on the artist page

Check-progress-here

Commit Handle errors in home with switch Oct 25, 2023, 11:30 AM

Using the added enum, the switch function allows for controlling the states in the home

status.initial

Check-progress-here

status.loading

Nagrywanie.2023-10-25.105756.mp4

status.error

Check-progress-here

status.success

Check-progress-here

Commit Add enums Oct 25, 2023, 11:23 AM

Enums has been added to the project

Commit Fix transparent searchbox background Oct 25, 2023, 9:41 AM

The semi-transparent tile color on the homepage behind the search bar has been concealed by a container using a stack

The issue was with the widgets in a ListView that extended beyond the expanded area. They have been covered by a container and are now invisible

Check-progress-here

After cutting the tile color

Check-progress-here

Final (with stack)

Check-progress-here

Commit Integrate BLoC with main app view Oct 25, 2023, 6:41 AM

The block has been integrated into the main application view (including the item filtering function and task completion value modification)

Check-progress-here

Commit Connect repository and home page through BLoC Oct 24, 2023, 8:37 AM

Items from the repository were passed to the homepage through a block

Check-progress-here

Commit Implement BLoC Oct 24, 2023, 8:08 AM

BLoC has been added to the project

The HomePage received a Cubit, and the first hardcoded data has been passed to a sample view

Check-progress-here

Commit Add deadline repository Oct 24, 2023, 7:37 AM

Deadline repository has been added to the project, storing all the deadlines in the application

New deadlines have been added to the list

Check-progress-here

Commit Implement Flutterfire UI Oct 21, 2023, 7:34 PM

The application now features the capability to allow users to log in via email and Google accounts

The application utilizes the FlutterFire UI module

A user screen has been added, accessible by clicking the "your profile" button in the drawer

Check-progress-here

Commit Organize files Oct 21, 2023, 6:24 PM

Commit Add podcasters and artists page Oct 20, 2023, 8:16 PM

Artists and Podcasters pages have been added to the project

Artists and Podcasters pages are accessible from the drawer by Navigator.push

The drawer has become the rating page

New tasks have been added to the deadline list

Check-progress-here

Commit Improve drawer's look Oct 20, 2023, 7:45 PM

The appearance of the drawer has been improved

The drawer has been moved to a new file in the 'widgets' folder

References to the user page, artists, and podcasters pages have been added

The drawer displays an avatar of a sample user and greets them by name

New icons have been added to the project

The avatar of the sample user displayed in the drawer has been generated by artificial intelligence

Check-progress-here

Commit Add navigation drawer to home page Oct 20, 2023, 11:55 AM

In the project, a drawer has been added to open a menu with screens

They have been described, and icons have been assigned to them

Icons have been imported into the project and placed in the 'assets' folder

New deadline tasks have also been added to the project

Check-progress-here

Commit Add searchbox functionality Oct 19, 2023, 7:25 PM

Add searchbox functionality

Check-progress-here Check-progress-here

Commit Add checkboxes functionality Oct 19, 2023, 6:24 PM

Add checkboxes functionality

After clicking the container, the text gets crossed out, and the checkbox fills in - this only works within the application; the code in the model and isChecked do not change. After refreshing the emulator, we return to the initial state - this will be fixed with the implementation of Firebase in the project.

Check-progress-here

Commit Install firebase core Oct 19, 2023, 1:13 PM

Install firebase core

Commit Create deadline model Oct 19, 2023, 12:08 AM

Create deadline model

Deadline item moved into a new folder

Displaying deadline items using a for loop

Commit Implement search box Oct 19, 2023, 10:20 AM

Implement search box

Add new deadlines for today

Check-progress-here

Commit Add a function checking if the number of days is singular Oct 19, 2023, 10:05 AM

Transparency from the "app planner" container when scrolling through tasks is removed.

The deadlines have been equipped with a function to check whether the number of remaining days until the deadline is singular or plural, allowing for the display of "day(s) left" in the appropriate format.

Check-progress-here

Commit Improve home_page look Oct 18, 2023, 2:54 PM

Improve home page look

Check-progress-here

Commit Add home_page Oct 17, 2023, 8:31 PM

I've placed the home screen into the "features" and added the first three tasks to it.

I'm working on the "feature" branch to maintain code cleanliness.

=== Changes === Initialize project Oct 17, 2023, 08:06 PM

--- Project Description ---

RatingProject is a project that fulfills one of my deepest dreams. It represents my approach to creating an application from scratch and, at the same time, provides an excellent opportunity to showcase my programming skills.

This application will evolve as the project progresses, fully demonstrating the extent of my capabilities. One of its main components will be the "Deadlines" screen, which will serve as a preview, allowing users to peek into the future and discover what's coming next for the application in the following weeks. The deadlines accompanying these previews will serve as evidence of my commitment and diligence in working on the project, always ensuring the timely delivery of solutions.

What exactly will this application be? My goal is to explore all the possibilities offered by Flutter and create complex and appealing screens. I plan to create a "To-Do List" module, which will not only help users organize their tasks but also provide a preview of what's coming soon in the application.

Additionally, the project will include a module that fetches data from an external REST API. This module will introduce users to two exciting categories: "Artists" and "Podcasters." Each of these categories will take them into the world of the top 5 artists or podcasters in the current rankings. Users will be able to discover their episodes, music tracks, podcasts, and learn more about each of them through available details.

It's worth noting that the database used by the application is not real but generated by advanced artificial intelligence. These data will then be converted into JSON format and implemented in the application, creating an attractive and dynamic interface.

An essential part of the project will be the user login module. Initially, I will use a ready-made module from Firebase, but my long-term goal is to create a unique module tailored specifically to the needs of this application, showcasing my skills in authentication and user data management.

All of these elements together paint a complete picture of the RatingProject, which is both a personal challenge for me and proof of my skills in the field of advanced mobile application development.

From time to time, there will be updates in this document to reflect what has changed in the application.

About

Rating - an application showing the ranking of creators. It works on two APIs, exhibits excellent documentation, and deadlines during its creation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published