Refactoring of homepage / restaurant list #4168
alexsegura
started this conversation in
General
Replies: 2 comments
-
This is super Alex! Thanks a lot! I really appreciate having a roadmap like this :) |
Beta Was this translation helpful? Give feedback.
0 replies
-
What step on we on now? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Long term vision
What we want to implement is "faceted search" (https://en.wikipedia.org/wiki/Faceted_search)
Right now, filtering will be implemented by performing SQL queries in the database.
This may lead to bad performance, and put some pressure on the database.
We can mitigate the performance impact by caching results.
To reach a higher throughput, we will need to use a search/indexing engine.
So, filtering system (mainly URLs) needs to be designed so that we can migrate later.
This will be implemented on the web first, but as we will want to implement it on the app, the filtering will probably need to be moved behind the API, to make it reusable out of the box on the app.
1/ Implement horizontal scroll for "collections" (homepage)
This will be implemented directly on the (current) homepage, to show more shops (less vertical space). It is basically what already exists on the homepage: we have a collection per type of business.
At the moment, collections will be built automatically on what we have.
We will have a collection per type of business like now, and we can also have:
Later, we can allow "editing" collections by hand, creating custom collections with arbitrary shops.
2/ Implement lazy-loading for images
If we are going to show more shops, at least we must lazy load images for performance.
3/ Implement infinite vertical scroll
It shouldn't be necessary to click on a button to show more shops.
As most visitors are coming on mobile, this improves UX a lot when scrolling with fingers.
4/ Implement sidebar on shops list page
At the moment, we will have 2 sections (= facets) on the sidebar: type of business, and cuisine.
5/ Start indexing shops using Typesense
We are already using Typesense, and it implements faceted search.
For some time, we won't be using it, just monitoring the RAM usage across all instances.
https://typesense.org/docs/0.22.2/api/documents.html#facet-results
6/ Implement search box + use Typesense to return filtered results
Once everything is indexed properly in Typesense, we can use the search engine, instead of performing SQL queries.
7/ Allow adding custom facets to shops
Once everything is managed properly using Typesense, we can add screens to manage facets.
8/ Allow adding custom collections
Admins should be able to create custom collections per instance, with arbitrary shops.
9/ Generate collections automatically for customers
Collections can also be built automatically based on what each customer prefers (previous orders, preferred cuisines...)
Beta Was this translation helpful? Give feedback.
All reactions