For this day, I wanted to implement swipe gestures to edit or delete a list entry. More complex than initially thought but doable within this day.
There were 3 packages to install: a gesture handle, an animation lib, and expo-haptics. After creating a swipeable row, I needed to implement the actions for edit and delete some hooks and was mostly done. After writing this all down, it sounds less complex than it felt when I implemented it. π
While testing the app, I saw a caching bug after switching users. User2 saw the data of User1 after a sign-out and new sign-in because the cache was not cleared on user change.
I thought the task for this day would be easier. But using a username for sign-in is quite challenging to implement with Supabase. :/
Now I have a new table for profiles, besides the auth table Supabase provides. Because Supabase Auth can't handle sign-in with a username, I now also have an edge function running. Which I never used before. It works, so I don't complain. :)
Maybe this is something you normally don't need for an MVP, but I was tired of typing an email for the sign-in. So, for me, it needs to be in the MVP.
When I was done, I staged my changes, and I noticed that I accidentally committed my .env file. So I used git-filter-repo to remove the env file from git history. What I did not know was it removed all my staged changes without a warning. π± That was a shock. A big one. After some minutes walking through the house, I calmed down and sat back on the chair. I was able to rescue around 85% of the files. The rest I could reproduce somehow.
WHAT an evening! I'm back on track and happy the accident was not that bad.
On Day 19, I made some updates so that the app feels more like an app inside the device.
It got a proper app icon and a splash screen that work in light and dark mode. Currently I focus more on a good integration with iOS; Android is coming later.
I also added a date picker. Before it was basic string insertion into the date field, which is not a good UX.
Even if I don't post daily, I'm still making progress. I just focus more on the progress part and not on the documenting one. πItβs crazy how all this is coming together while I work full-time and manage family and renovating the basement. π€―
On Day 18, the two main points on this day were a new home screen, which shows some nice little statistics, and the move to tanstack/query for a shared data layer. (Which I should have used directly from the start.)
The home screen is now showing a clean grid with 5 tiles that show summaries and top entries. The top entry tiles are clickable/tappable and trigger a search in the entry list, which feels good and in the correct place. The summary tiles are using a simple SVG chart, a bar chart to be precise.
I'm at a point where I can focus more on the UI. And this will be time-consuming. This is a lot of trying out and seeing what sticks. It's a lot of fun, but I need to limit myself and not overdo it here. π
So, today I got a lot of stuff done. Refined the spacing and tried to make it even on all screens. Improved the styling of the forms and buttons. And cleaned up the styling itself, so it looks a bit more minimal.
I want to show more, but I also would like to keep it a secret what app and style I'm working on. So the posts get a bit shorter. I just want to describe what I have achieved so far.
I'm falling a bit behind. Started another freelance project, so things are a bit slower now.
Most of the MVP is done, and I'm starting to polish some things. For Day 15, there was a small refactor of the Add/Edit forms to make them more robust and improve the UX.
One of the notable things here is the introduction of react-hook-form and zod. Which makes the most sense in combination with Supabase. In addition, I moved all form fields into shared components.
All the changes will give me a good feeling that this app can grow after the MVP. :)
On Day 14, I improved the error handling and fixed some bugs that bothered me for some time but were not necessary to fix directly. One of them was storing the user session between rebuilds. Every time I rebuilt the app, I needed to make a new login, which is inconvenient when developing. :D
On Day 13, Iβve focused on a tagging system. While making entries, the user can now add tags to the entries. These tags are also now part of the search and filter functionality I implemented yesterday.
The app is coming to a state where the MVP is nearly done. Next, I will focus a bit more on polishing and also improve the error handling.
Today Iβve implemented a basic search to filter the entries. It's just a simple search field on top of the entries list; here you can type in keywords and reduce the list to what you need. Simple as that.