the sign in page looks broken on my phone
The form is fixed at 420px instead of using a max-width, so on a narrow screen it overflows and the browser zooms the whole page out to fit — which is why the text looks tiny rather than wrapped. I can switch it to max-width with a percentage fallback and add the viewport meta tag, which is missing entirely. That second one is probably why every page has felt slightly off on mobile, not just this one.
why does it even ask to sign in just to look
Right now the route guard wraps everything, so any page redirects to sign-in when there is no session. You could gate only the actions that need an account — saving, posting, commenting — and leave reading open. That is more code paths to keep straight, but it is how most sites of this kind behave.
people should be able to just browse
ask them to sign in when they want to save something
Moving the guard down to the actions then. Browsing, search and individual recipe pages become public, and the save button triggers sign-in with a return path so nobody loses their place. Worth deciding now what happens to a save made before signing in — either you hold it in local storage and apply it after, or you drop it and let them press it again. Holding it is friendlier and it is the kind of thing that is much harder to add later.
Dev server on :3000. Sign-in is no longer blocking the feed.
the feed is showing the oldest recipes first
The query has no order clause, so Postgres returns rows in whatever order it likes — which happens to be insertion order here. I can sort by created date descending. There is also the option of a simple popularity sort using saves, if you want the good ones surfacing rather than just the recent ones.
newest first. no ranking thing
i hate feeds that decide what i see
Newest first it is, and I will leave the sort explicit in the query rather than hiding it behind a default, so the next person reading this can see the decision was made on purpose. If you ever want a popular tab it can sit alongside as its own thing rather than changing what the main feed means.
the photo should be the first thing you see
Reordering the card so the image leads and the title sits under it. That does mean a recipe with no photo looks broken, so I will need a placeholder — or we require a photo at upload, which is a stricter call but keeps the grid even.
one recipe per card. no swiping through photos
Dropping the carousel. Single image per card, and the extra photos move to the recipe page itself where there is room for them. It also simplifies the grid — every card is the same shape, so the layout stops jumping while images load.
Dev server on :3000. Sign-in is no longer blocking the feed.
the feed is showing the oldest recipes first
The query has no order clause, so Postgres returns rows in whatever order it likes — which happens to be insertion order here. I can sort by created date descending. There is also the option of a simple popularity sort using saves, if you want the good ones surfacing rather than just the recent ones.
newest first. no ranking thing
i hate feeds that decide what i see
Newest first it is, and I will leave the sort explicit in the query rather than hiding it behind a default, so the next person reading this can see the decision was made on purpose. If you ever want a popular tab it can sit alongside as its own thing rather than changing what the main feed means.
the photo should be the first thing you see
Reordering the card so the image leads and the title sits under it. That does mean a recipe with no photo looks broken, so I will need a placeholder — or we require a photo at upload, which is a stricter call but keeps the grid even.
one recipe per card. no swiping through photos
Dropping the carousel. Single image per card, and the extra photos move to the recipe page itself where there is room for them. It also simplifies the grid — every card is the same shape, so the layout stops jumping while images load.
the sign in page looks broken on my phone
The form is fixed at 420px instead of using a max-width, so on a narrow screen it overflows and the browser zooms the whole page out to fit — which is why the text looks tiny rather than wrapped. I can switch it to max-width with a percentage fallback and add the viewport meta tag, which is missing entirely. That second one is probably why every page has felt slightly off on mobile, not just this one.
why does it even ask to sign in just to look
Right now the route guard wraps everything, so any page redirects to sign-in when there is no session. You could gate only the actions that need an account — saving, posting, commenting — and leave reading open. That is more code paths to keep straight, but it is how most sites of this kind behave.
people should be able to just browse
ask them to sign in when they want to save something
Moving the guard down to the actions then. Browsing, search and individual recipe pages become public, and the save button triggers sign-in with a return path so nobody loses their place. Worth deciding now what happens to a save made before signing in — either you hold it in local storage and apply it after, or you drop it and let them press it again. Holding it is friendlier and it is the kind of thing that is much harder to add later.
Newest first it is, and I will leave the sort explicit in the query rather than hiding it behind a default, so the next person reading this can see the decision was made on purpose. If you ever want a popular tab it can sit alongside as its own thing rather than changing what the main feed means.
the photo should be the first thing you see
Reordering the card so the image leads and the title sits under it. That does mean a recipe with no photo looks broken, so I will need a placeholder — or we require a photo at upload, which is a stricter call but keeps the grid even.
one recipe per card. no swiping through photos
Dropping the carousel. Single image per card, and the extra photos move to the recipe page itself where there is room for them. It also simplifies the grid — every card is the same shape, so the layout stops jumping while images load.
the sign in page looks broken on my phone
The form is fixed at 420px instead of using a max-width, so on a narrow screen it overflows and the browser zooms the whole page out to fit — which is why the text looks tiny rather than wrapped. I can switch it to max-width with a percentage fallback and add the viewport meta tag, which is missing entirely. That second one is probably why every page has felt slightly off on mobile, not just this one.
why does it even ask to sign in just to look
Right now the route guard wraps everything, so any page redirects to sign-in when there is no session. You could gate only the actions that need an account — saving, posting, commenting — and leave reading open. That is more code paths to keep straight, but it is how most sites of this kind behave.
people should be able to just browse
ask them to sign in when they want to save something
Moving the guard down to the actions then. Browsing, search and individual recipe pages become public, and the save button triggers sign-in with a return path so nobody loses their place. Worth deciding now what happens to a save made before signing in — either you hold it in local storage and apply it after, or you drop it and let them press it again. Holding it is friendlier and it is the kind of thing that is much harder to add later.
Dev server on :3000. Sign-in is no longer blocking the feed.
the feed is showing the oldest recipes first
The query has no order clause, so Postgres returns rows in whatever order it likes — which happens to be insertion order here. I can sort by created date descending. There is also the option of a simple popularity sort using saves, if you want the good ones surfacing rather than just the recent ones.
newest first. no ranking thing
i hate feeds that decide what i see
people should be able to just browse
ask them to sign in when they want to save something
Moving the guard down to the actions then. Browsing, search and individual recipe pages become public, and the save button triggers sign-in with a return path so nobody loses their place. Worth deciding now what happens to a save made before signing in — either you hold it in local storage and apply it after, or you drop it and let them press it again. Holding it is friendlier and it is the kind of thing that is much harder to add later.
Dev server on :3000. Sign-in is no longer blocking the feed.
the feed is showing the oldest recipes first
The query has no order clause, so Postgres returns rows in whatever order it likes — which happens to be insertion order here. I can sort by created date descending. There is also the option of a simple popularity sort using saves, if you want the good ones surfacing rather than just the recent ones.
newest first. no ranking thing
i hate feeds that decide what i see
Newest first it is, and I will leave the sort explicit in the query rather than hiding it behind a default, so the next person reading this can see the decision was made on purpose. If you ever want a popular tab it can sit alongside as its own thing rather than changing what the main feed means.
the photo should be the first thing you see
Reordering the card so the image leads and the title sits under it. That does mean a recipe with no photo looks broken, so I will need a placeholder — or we require a photo at upload, which is a stricter call but keeps the grid even.
one recipe per card. no swiping through photos
Dropping the carousel. Single image per card, and the extra photos move to the recipe page itself where there is room for them. It also simplifies the grid — every card is the same shape, so the layout stops jumping while images load.
the sign in page looks broken on my phone
The form is fixed at 420px instead of using a max-width, so on a narrow screen it overflows and the browser zooms the whole page out to fit — which is why the text looks tiny rather than wrapped. I can switch it to max-width with a percentage fallback and add the viewport meta tag, which is missing entirely. That second one is probably why every page has felt slightly off on mobile, not just this one.
why does it even ask to sign in just to look
Right now the route guard wraps everything, so any page redirects to sign-in when there is no session. You could gate only the actions that need an account — saving, posting, commenting — and leave reading open. That is more code paths to keep straight, but it is how most sites of this kind behave.