Skip to content

Conversation

@fridascript
Copy link

Here's my project and netlify.
(obs, I see that netlify is not yet synced with the latest version as per thursday 17.50 🫣)

@artakjato
Copy link

Overall Review:
Amazing job, Frida! The progress really shows — the site runs smoothly and feels much more dynamic. I love that you’re experimenting with playful touches that make it stand out. Excited to see what you build next!
Netlify view:
The deployed version on Netlify looks clean and easy to use. Nice work keeping the layout and colors consistent — it feels very user-friendly.
Commits:
I would love to see committing smaller changes more often. I think that it helps us save progress step by step and makes it easier to trace or undo changes if something breaks.
Random button UX:
The spinning random button is a fun touch — it really adds some flavor (pun intended 😄)!

@JennieDalgren JennieDalgren self-assigned this Oct 23, 2025
Copy link

@JennieDalgren JennieDalgren left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job with the project!

It is tricky to actually filter on some preferences when using this random endpoint so i had to refresh a couple of times. But that's the API 🫣

Think about being consistent when you declare you functions. Either use arrow functions or function keyword. Do not mix

Keep up the good work!

Comment on lines +20 to +22
<div class="header">
<h1>Recipe Library</h1>
</div>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use the

instead of div if it is a header

Comment on lines +22 to +23
group.querySelectorAll("button").forEach(b => b.classList.remove("selected"))
e.target.classList.add("selected")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure but maybe it could work to use .toggle("className") here


// ------ Data from localStorage as backup if API fails ------ //
function loadFromLocalStorage() {
const storedRecipes = localStorage.getItem("recipes")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.



// ------ Recipe cards ------ //
function renderMeals(meals) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stick to either arrow functions like youve done in
const fetchData = () => {...}
or
function renderMeals(meals) {...}

dont mix

Comment on lines +98 to +99
if (meals.length === 0) { //no matching recipes - message
recipeCard.innerHTML = '<p class="error">No recipe match, sorry 🫣</p>'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good fallback!

border: none;
cursor: pointer;
border-radius: 50px;
padding: 8px 16px 8px 16px;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

padding: 8px 16px 8px 16px;
can be shortened to
padding: 8px 16px;
vertical and horisontal values when they are two

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants