Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increase diversity of homepage gallery #5293

Open
2 tasks
dhruvkb opened this issue Dec 19, 2024 · 6 comments
Open
2 tasks

Increase diversity of homepage gallery #5293

dhruvkb opened this issue Dec 19, 2024 · 6 comments
Assignees
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🌟 goal: addition Addition of new feature help wanted Open to participation from the community 🟩 priority: low Low priority and doesn't need to be rushed 🧭 project: thread An issue used to track a project and its progress 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend

Comments

@dhruvkb
Copy link
Member

dhruvkb commented Dec 19, 2024

Description

The Openverse.org homepage shuffles between 3 collections of images: pottery, universe and olympics. These collections represent a infinitesimal fraction of the 800M+ images in our collection.

pottery universe olympics
Image Image Image

The goal is to surface the collection of images on the frontend via an API endpoint (that can be cached long-term) so that the list of images can be changed often. We can also use this endpoint to provide topical images based on events, holidays, feature launches etc.

These images can serve as entrypoints for a more exploratory approach to the collection (#2710) rather than one that revolves around search.

Documents

  • Project Proposal
  • Implementation Plan(s)

Milestones/Issues

Prior Art

There has been some discussion about this on Slack.

@dhruvkb dhruvkb added help wanted Open to participation from the community 🌟 goal: addition Addition of new feature 🕹 aspect: interface Concerns end-users' experience with the software 🟩 priority: low Low priority and doesn't need to be rushed 🧭 project: thread An issue used to track a project and its progress 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend labels Dec 19, 2024
@dhruvkb dhruvkb moved this from ⌛ Todo to Ideas in Openverse Project Tracker Dec 19, 2024
@madewithkode
Copy link
Collaborator

Hi @dhruvkb this looks like an interesting one, however I see a possibility of the full implementation spanning multiple tasks(between FE and BE/API). Is there a possibility of further breaking it down into smaller more actionable/approachable units? This would be very appreciated as it'd reduce the perceived complexity from a high level overview. Happy to try my hands on it regardless, just might require more time and handholding.

@dhruvkb
Copy link
Member Author

dhruvkb commented Jan 12, 2025

@madewithkode since you have considerable experience with the architecture of the project, would you like to take a stab at breaking it down into smaller issues?

We'd be happy to help if you feel stuck or need assistance.

@madewithkode
Copy link
Collaborator

Haha...That was a good comeback! I guess I'd do it afraid then 😂

Would hit you with relevant questions as I proceed.

@madewithkode
Copy link
Collaborator

How I would go about this:

First Related Separate Issue - Stack: API

  • Expose an API endpoint with support for long term response caching, this should return all(distinct) or specific collections(when specified) alongside relevant images. The number of images would be capped at a certain threshold(say 15/collection, in line with the current implementation).

API response shape might be somewhat like: frontend/src/assets/homepage_images.json

Second Related Separate Issue - Stack: Frontend

  • Use new collections API for rendering Homepage Gallery

@dhruvkb Would this be a good starting point?

@dhruvkb
Copy link
Member Author

dhruvkb commented Jan 12, 2025

That sounds good but let's think one step before the endpoint. We need a way to store these image collections, which brings us to the model layer. You should plan what the models for these image collections will look like.

@madewithkode
Copy link
Collaborator

Hmmm…it appears my understanding of the problem is limited.

Why would we need a separate data model/storage for just the returned collections?

My thinking is that “collections” in this context loosely refer to categories/tags associated with images/media already in the catalaog DB. Isn’t the endpoint basically meant to:

  • extract distinct “collections” across the existing data(Catalog DB)
  • for each distinct “collection”, aggregate x amount of images associated with the current collection.
  • Cache and return the response.

With the cache above serving as hot storage for as long as it’s valid.
Theses are my current assumptions and I admit I might not have thought so hard about the problem. Happy to be wrong here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🌟 goal: addition Addition of new feature help wanted Open to participation from the community 🟩 priority: low Low priority and doesn't need to be rushed 🧭 project: thread An issue used to track a project and its progress 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend
Projects
Status: 💡 Ideas
Development

No branches or pull requests

2 participants