# GSOC 2023: Feed Section in Android App

**URL:** https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375
**Category:** GSoC applications
**Tags:** android, gsoc, listenbrainz
**Created:** [March 10, 2023, 10:23am UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375 "2023-03-10T10:23:21Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Jasjeet](https://community.metabrainz.org/user_avatar/community.metabrainz.org/jasjeet/32/64960_2.png) [@Jasjeet](https://community.metabrainz.org/u/Jasjeet)
#### Post date: [March 10, 2023, 10:23am UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/1 "2023-03-10T10:23:21Z")

</div>

# Personal Information

Name: Jasjeet Singh

IRC nick: jasje

Email: [07jasjeet@gmail.com](mailto:07jasjeet@gmail.com)

Github: [07jasjeet](https://github.com/07jasjeet)

Time Zone: UTC+05:30

# Feed Section in ListenBrainz Android App

## Project Overview

Currently, ListenBrainz Android app consists of various features like BrainzPlayer, Listens Service, Listens history, YIM and many more which already make the app very interesting.

ListenBrainz website is an amazing platform that inculcates an idea which I believed in past but had no power to do so, i.e., having a social media app that revolves around music. Feed section is one of the core functionalities of this idea and the Android app lacks it. This feature has the potential to attract more users than ever because social media is something people access frequently and a mobile device is the best place to have it.

This project aims to integrate the _Feed Section_ into the Android app.

### My contributions up till now:

My Pull Requests: [Check Out](https://github.com/metabrainz/listenbrainz-android/pulls?q=is%3Apr+author%3A07jasjeet+is%3Aall)

My Commits: [Check Out](https://github.com/metabrainz/listenbrainz-android/commits?author=07jasjeet)

## Implementation

Going with the flow that [ListenBrainz Android Docs](https://docs.google.com/document/d/1hY5oloIiANeXg1R9oSBIr2ZUHSlm7LU8qy6tW1VJMQg/edit#heading=h.x4w8r8egtv4e) mentions, this project will be implemented through the following stages:

1. **Planning**

2. **Designing**

3. **Knowing the APIs**

4. **Coding**

## Timeline

Following is an overview of how I will be spending my time during the duration of GSOC:

### Pre-Community Bonding Period (4 April - 3 May):

Work on restructuring and write tests for the app. Discuss the UI for the feed with my mentors. Work on the UI ideas.

### Community Bonding Period (3 May - 29 May):

Start **Phase 1** early if no work persists. Since my college exams are scheduled in this period, work will be affected.

## Phase 1 : User Search Page

### Week 1 (29 May - 5 June)

- Setting up API calls to the following required endpoints with their respective Unit tests:

- Setting up dependency injection.

### Week 2-3 (5 June - 19 June)

- Implementing Search Page user interface. This includes the following:

- Performance test the screen.

## Phase 2 : Feed page

### Week 4 (19 June - 26 June)

- Setting up API calls to the following required endpoints with their respective Unit tests:

- Setting up dependency injection.

### Week 5-6 (26 June - 10 July)

- Finish up remaining Unit tests, if any.
- Setting up required view-model (with tests) and integrate connectivity observer.
- Creating repository for Spotify App Remote, adding it to dependency tree and injecting it into view-model’s various cases where recordings are found.

### Week 7-9 (10 July - 31 July)

- Begin UI implementation.  
Please checkout point 4 of Coding part in implementation section for more clarity on the exact **chronological order** of implementation of each functionality.
- Connect all UI components to prepare a beta product.

### Week 10 (31 July - 7 August)

- Compose UI is prone to performance issues (or recompositions to be exact) if not implemented correctly, hence improve code quality overall.
- UI has to be tested for each screen aspect-ratio as the app supports Android phones with a minimum of Android 5.0 (Lollipop).
- Test all the services and linked components for error/edge cases.
- Start implementing Instrumented Tests for the feature if the project seems stable.

### Week 11 (7 August - 14 August)

- Implement Instrumented Tests for the feature. This includes tests for both Search page and Feed page.

### Week 12 (14 August - 21 August)

- Finish up pending work, if any.
- Start writing documentation for the project.
- Discuss with mentors about any final changes.

### Stretch goals

- Integrate BrainzPlayer with Remote Players such that users are able to control media playback from mini-player and only from notification of original service by removing notification of BrainzPlayer when remote players are active. Removing notification helps in keeping notification bar clean from unnecessary notifications in Android 10 and below.

## Detailed Information About Yourself

My name is Jasjeet Singh, currently residing in Chandigarh. I am a sophomore pursuing Bachelors in IT from University Institute of Engineering and Technology, Panjab University, Chandigarh, India. I had not known much about coding until I came to college. Started with C in my 1st semester. Didn’t last long due to distractions and slight obsession with games (CS; and yes 1v1 accepted 😈). Soon after, I realized this habit won’t help me in the long run. I had to pick any development to make “things” or projects as we call them. I’ve always had a thing for Android, so I picked it!

### Tell us about the computer(s) you have available for working on your SoC project!

I have my Lenovo Legion 5 Pro, with Ryzen 7 5800H, RTX 3060 and 16 GB of RAM.

### When did you first start programming?

I stepped into the coding world with C as my first programming language last year.

### What type of music do you listen to? (Please list a series of MBIDs as examples.)

I mostly listen to Punjabi music artists like [Arjan Dhillon](https://musicbrainz.org/artist/9b34cd6a-b874-4e75-bec8-1c174fe295d0), [Karan Aujla](https://musicbrainz.org/artist/4a779683-5404-4b90-a0d7-242495158265), [Sidhu Moose Wala](https://musicbrainz.org/artist/119a6864-622b-4e6c-8aab-a422080530c6) or [Tame Impala](https://musicbrainz.org/artist/63aa26c3-d59b-4da4-84ac-716b54f1ef4d) for some change.  
I’ve also added one recording and artist to MusicBrainz database respectively:

[https://musicbrainz.org/recording/5279bc04-6b83-4897-814d-4f604fedd79c](https://musicbrainz.org/recording/5279bc04-6b83-4897-814d-4f604fedd79c)

[https://musicbrainz.org/artist/d0a37e1c-a9c3-4966-b630-984c33b087df](https://musicbrainz.org/artist/d0a37e1c-a9c3-4966-b630-984c33b087df)

Some MBIDs of my favorite recodings 🥰 :

5279bc04-6b83-4897-814d-4f604fedd79c (The one I added to MusicBrainz)  
5ecd8c60-c756-4532-8207-c45886df2feb  
f078699c-9b68-4040-9ba4-b1e4f7d86598  
31eeb9db-cff0-40ab-bc5a-5474a432519c

### What aspects of the project you’re applying for the interest you the most?

I love Android Development and listening to music, so there’s no better project than ListenBrainz that keeps me engaged and happy. I’ve been working on ListenBrainz Android for some months now and honestly, I really have passion about moving the app further, exploring its scope and making it better continuously.

### Have you contributed to other Open Source projects? If so, which projects and can we see some of your code?

ListenBrainz is my first point of contact with open source and feels really good to be this way.

### What sorts of programming projects have you done on your own time?

I mostly play with Android Development, hence most of my projects are Android projects like [Drawing App](https://github.com/07jasjeet/Drawing-App) and [Quiz App](https://github.com/07jasjeet/Quiz-App). I also have some C projects ([here](https://github.com/07jasjeet/C-Projects)) and some flask projects (which I’m currently learning btw) but they are pretty teensy and under active development.

### How much time do you have available, and how would you plan to use it?

I will be providing 40 to 45 hours per week to the project. There may be slight ups and downs due to college exams and other activities.

---

<div class="post-metadata">

### Author: ![akshaaatt](https://community.metabrainz.org/user_avatar/community.metabrainz.org/akshaaatt/32/78047_2.png) [@akshaaatt](https://community.metabrainz.org/u/akshaaatt)
#### Post date: [March 19, 2023, 8:25am UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/2 "2023-03-19T08:25:59Z")

</div>

Thanks a lot for your proposal @Jasjeet! 💯

I would like to clarify a few things before we move ahead with this:

1. We need a way to allow users to search for other users. This would allow them to follow that particular user. Only then, we can proceed with the idea of a feed section. Hence, a search box and the relevant screen for that will be a part of this project.

2. Reviews will be a part of the feed. In order for a user to be able to add a review to a listen, a connection to CritiqueBrainz has to be made prior, like the one made on the [website](https://listenbrainz.org/profile/music-services/details/).

3. If we take a look at the options available for the listens card, this is the list.  

`Pin this track`, `Recommend to my followers`, `Personally recommend`, `Write a review` directly affect the feed and are an integral part of it. These would be considered as a pre-requisite for this project. Also, `Open in Spotify` has already been mentioned by you in the proposal.

1. Hide, Unhide, Delete, etc are all parts of the feed and would be taken up with the project.

That being said, I would like to point out that this project is not just a UI/UX project which dumps the exisiting feed info of a user from the website to the app.  
Our major focus has to be on the accessibility of these features for the feed. For example, last year we had an entire gsoc project which only focused on adding the ability to add reviews on ListenBrainz. But with this project, we are considering that as a pre-requisite.

It is important that we are on the same page about the expectations. Your contributions to the ListenBrainz app have already been so helpful and amazing. Just to be clear, when I think of the Feed project, I imagine it to be complete. Also, this is a long project. Hence, given your caliber and from my understanding, we could cover up the entire Feed with this Summer of Code project.

Feel free to comment and re-work on your proposal with the exact descriptions of the features which will be taken up and those which won’t. I am fine with leaving out certain things that you feel won’t be an adequate part of this project, but we should have that clarified before itself.

Also, looking at your weekly breakdown, it is quite generic and doesn’t mention the features being worked on exaclty. I would like a mention of the exact features/api calls being worked on and which feature will be taken up when. For example, review feature comes before listen track intimation on the feed, etc.

We could also take up push notifications in stretch goals btw, just a suggestion.

Let me know if you have any questions.  
Great to see your enthusiasm and dedication to this project. Thank you! 😃

---

<div class="post-metadata">

### Author: ![snaekboi](https://community.metabrainz.org/user_avatar/community.metabrainz.org/snaekboi/32/57449_2.png) [@snaekboi](https://community.metabrainz.org/u/snaekboi)
#### Post date: [March 20, 2023, 5:51pm UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/3 "2023-03-20T17:51:01Z")

</div>

Good one Jasjeet :))

---

<div class="post-metadata">

### Author: ![Jasjeet](https://community.metabrainz.org/user_avatar/community.metabrainz.org/jasjeet/32/64960_2.png) [@Jasjeet](https://community.metabrainz.org/u/Jasjeet)
#### Post date: [March 21, 2023, 5:58pm UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/4 "2023-03-21T17:58:34Z")

</div>

Thankyou for the amazing _feed_-back (pun intented). All the recommendations are duly noted 😄. Just updated the proposal with your analysis in mind.

---

<div class="post-metadata">

### Author: ![snaekboi](https://community.metabrainz.org/user_avatar/community.metabrainz.org/snaekboi/32/57449_2.png) [@snaekboi](https://community.metabrainz.org/u/snaekboi)
#### Post date: [April 1, 2023, 12:32pm UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/5 "2023-04-01T12:32:07Z")

</div>

Hi @Jasjeet , I went through your proposal again. And as someone who has no idea about this project, I gotta say it looks flawless to me!

Good job keeping it super succinct!

IMO your proposal clearly demonstrates your passion and capability to pull off the project - so there’s not much to comment there.

Just to nitpick, I’d like to point out a couple of things in the “detailed information about yourself” section.

> I mostly play with Android Development, hence most of my projects are Android projects. I also have some C projects and some flask projects (which I’m currently learning btw) but they are pretty teensy.

Folks at MetaBrainz already are aware of your capabilities. But in general, always try to include GitHub links when talking about your projects. It will definitely also open up more doors for you along the way.

> I will be providing 40 to 45 hours per week to the project. There may be slight ups and downs due to college exams and other activities.

Refer your timetable, and try to mention specific dates, e.g. `Exams from 4th July - 10th July`, `Going on a Family trip from 3rd Aug - 6th Aug`, etc. Setting the expectations right from the get-go really helps :))

> What type of music do you listen to? (Please list a series of MBIDs as examples.)

Doesn’t really matter, but I’ve personally included my listenbrainz profile, and some recording MBIDs in this section too. Might help 🤷

---

<div class="post-metadata">

### Author: ![Jasjeet](https://community.metabrainz.org/user_avatar/community.metabrainz.org/jasjeet/32/64960_2.png) [@Jasjeet](https://community.metabrainz.org/u/Jasjeet)
#### Post date: [April 1, 2023, 3:19pm UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/6 "2023-04-01T15:19:08Z")

</div>

> [@snaekboi](#):
>
> `Exams from 4th July - 10th July`,

Exams are a big unknown in our university, they just keep changing ☹. I actually included some buffer time in week 9-13. I’ll clarify it there. Thanks for pointing this one!

> [@snaekboi](#):
>
> Going on a Family trip from 3rd Aug - 6th Aug

As far as family trips are concerned, I have no clue about when those hit 💀.

> [@snaekboi](#):
>
> Folks at MetaBrainz already are aware of your capabilities. But in general, always try to include GitHub links when talking about your projects. It will definitely also open up more doors for you along the way.

I’ll rework on this section, seems generic to me too now that I’ve seen it again 💀.

Thanks for the feedback! Much appreciated 🙌.

---

<div class="post-metadata">

### Author: ![akshaaatt](https://community.metabrainz.org/user_avatar/community.metabrainz.org/akshaaatt/32/78047_2.png) [@akshaaatt](https://community.metabrainz.org/u/akshaaatt)
#### Post date: [April 1, 2023, 11:00pm UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/7 "2023-04-01T23:00:16Z")

</div>

@Jasjeet Overall, the proposal looks great to me now! Ready for submission I believe 💯  
The only thing which I could suggest for now is to try and break Week 9-13 a bit more because that is literally clubbing a chunck of weeks, which doesn’t sound right. I understand what you mean, but just for sanity, it would be better to just communicate it better.

---

<div class="post-metadata">

### Author: ![Jasjeet](https://community.metabrainz.org/user_avatar/community.metabrainz.org/jasjeet/32/64960_2.png) [@Jasjeet](https://community.metabrainz.org/u/Jasjeet)
#### Post date: [April 2, 2023, 7:12am UTC](https://community.metabrainz.org/t/gsoc-2023-feed-section-in-android-app/627375/8 "2023-04-02T07:12:30Z")

</div>

> [@akshaaatt](#):
>
> The only thing which I could suggest for now is to try and break Week 9-13 a bit more because that is literally clubbing a chunck of weeks, which doesn’t sound right. I understand what you mean, but just for sanity, it would be better to just communicate it better.

Thanks for pointing this out! @snaekboi pointed it out beforehand but I couldn’t think of any reasons at that time. But now I’ve recalled some stuff (my memory is terrible at remembering dates) and made a separate week schedule for the buffer period with reasons. Also, please note that the buffer period may coincide with UI implementation so as to not suffocate the UI implementation period itself.

Also, I know the coding part doesn’t have exact weeks timeline. This is due to the fact that The whole UI is so interdependent and if I started laying out timeline for each functionality, it will come down to days and given that a lot of decisions are made while actual implementation itself, I deemed it unfaithful to give each functionality a timeline. A chronological order has been given to ensure what steps will taken in what flow.
