
Full Stack Personal Finance App with Remix, Firebase and Chakra UI
Design comparison
Solution retrospective
I'm proud of successfully integrating Firebase into my app. It enabled me to add user authentication and real-time database features, which I had never done before. This is the first project where I’ve built something dynamic like this, and seeing it work felt like a big accomplishment.
Next time, I’d focus more on getting the structure right from the beginning instead of rushing through certain parts. I ran into some bigger issues down the line (such as hydration errors) that would’ve been much easier to solve if I had taken the time to lay the groundwork properly at the start. It would’ve saved me a lot of trouble and kept the project moving more smoothly.
What challenges did you encounter, and how did you overcome them?Firebase Issues: One of the toughest challenges I faced was figuring out how to effectively pass data between components. Retrieving data from Firebase was already tricky, but the real challenge came when I needed to pass that data through multiple components—especially when they were related but not directly connected. It took a lot of trial and error, digging through documentation, and making good use of developer tools like Copilot, but eventually, I figured out how to get everything working smoothly.
Hydration Issues: Hydration errors were another major challenge. These occur when the HTML rendered on the server doesn’t match what the client-side JavaScript expects, often causing the app to crash. It’s a common issue with web frameworks, as I’ve now learned the hard way.
I noticed the app ran more smoothly in incognito mode, which led me to realize that one of my browser extensions was causing part of the problem. Additionally, working with Chakra UI introduced its own set of issues—a configuration problem with the theme setup in the root file was also contributing to the crashes. Looking back, I wish I had tackled these problems earlier in development, as they became more difficult to resolve later on.
What specific areas of your project would you like help with?If you would like to test the application with pre-filled data, the user credentials are:
- Email:
demo@finance.com
- Password:
frontend
I’d like some feedback on the overall structure of the code in my project. Does it follow good architectural practices? Are there areas where I could improve? Any suggestions to make it cleaner and easier to work with in the long run would be greatly appreciated.
I’d also love some feedback on how I’ve used Remix. Early on, I didn’t take the time to fully understand all its features, like using loaders for server-side rendering and boosting app performance. My app works fine without them, but I’m wondering if adding them would have made a noticeable difference in terms of efficiency or scalability. Do you think incorporating them would have been worth the effort?
Please log in to post a comment
Log in with GitHubCommunity feedback
- P@karthik2265
Hi mitchell, fellow frontend developer here sharing my thoughts on this:
functionality and design
The solution matches the design very well, good job. The loading spinner and the notifications adds a nice experience to the user, looks like you have thought this through. few things you can add to improve:
- adding a smooth transition between pages, modal closing and for the side menu collapse.
- the loading spinner for the transactions page appears at the top instead of in the middle like the other pages
- adding a notification while redirecting the user to the login page when not logged in would make the user experience even better
code
- the file structure looks well and intuitive. There was one emotion file outside the emotion folder, but I think it makes sense to have it inside the folder.
- looks like you have added some logic to add a different layout for '/login' and '/register' routes. You can achieve this by using the file based routing provided by remix. This would mean less code to test and easier to maintain.
- is the
Link
component from chakra UI compatible with remix? we should use theLink
component provided by remix because remix suggests that is the way to go about navigation in a remix app. - nicely handled edit mode and add mode for components, I tried this once and it gets tricky and we better keep it organized like you did. just a tiny nit, we could use an enum for checking the component mode.
- In noticed in few try catch blocks where you are just logging the error, maybe adding a notification would make the user experience better. Also it's better not to log errors from firebase in the browser console for security reasons.
- Handling the loading state when data is added from pages inside the hooks would be a good idea. I think using the server side data handling feature provided by remix would work, but if you have to implement this in your current app which is mainly structured by using hooks, it would take some considerable time and effort. Just wanted to share my idea here. ex link: https://remix.run/resources/remix-auth
Overall, nice work. I liked this solution.
Marked as helpful - @IonCatana
I just finished my solution if you want you can take a look at mine solution maybe it can help you in some way! Have a good day.
Join our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord