• 1 Post
  • 8 Comments
Joined 3 years ago
cake
Cake day: July 8th, 2023

help-circle
  • Some long backstory: I worked as a C# and AngularJS developer a long time ago but am now in a different profession. For this app I used go for the backend (with GORM as ORM) and react (with MUI for components) for the frontend. Go is what really brought me back to coding two years ago since it is a fun language and especially for hobby projects it feels clean and not overloaded. For the frontend I actually started with Vue.js but got frustrated with their state handling and discovered some bugs as well. Then I switched to Svelte wich seemed great if you build everything yourself but the existing component libraries still needed some work. In the end I landed at react. So in that repository I always had the same backend but did two rewrites for the frontend.

    From my personal experience I recommend focussing on the architecture and not to overengineer it. You likely do not need a full database at the start, instead sqlite might be enough. You probably can also live without a queue like Kafka or cache like Redis. And your frontend probably does not yet need Redux for state management or even Tailwind for styling. Of course you will have a little more pain when you want to add this later but at the same time your starting complexity reduces and it is easier to maintain the mental model of your application. Once you extend the functionality try to keep as much business logic as possible in the backend (so the frontend can stay “dumb” and focus on UI/UX). Always easier to test the backend. Pick a tech stack and stick with it, knowing your stack is more advantageous than having the perfect stack for every problem. And of course, just get started on something, the growth will happen along the way anyway.






  • There is an export button in the settings to export all data (aside from profile pictures) as CSV or export the contacts as VCF including profile pictures (but excluding activities and notes). Both of these methods allow for import into e.g. google contacts if you want to migrate away. In general all data is stored in an sqlite database on your file system as well as a folder for the profile photos.

    //Edit: To migrate data into meerkat there is also an import assistant in the contact list page that allows for VCF or CSV import


  • There’s quite an overlap in functionality but differences in how it works in detail. Looking for example at reminders, Meerkat shows overdue reminders in the dashboard until you acknowledge them (email reminder goes out only once of course). Then the reminder can be marked done and get persisted into the timeline or you can skip it. You can also set reminders to reschedule from completion date (e.g. you have a weekly catchup, are behind for five days; then the reminder is rescheduled for in a week not for in two days). Or looking at profile photos you can also just copy the image address from e.g. a LinkedIn profile in pull it in via the dialogue without saving it locally on disk. There are many such differences, so best see what works better for you.


  • Thank you and do open a github issue if anything is not working as expected or the docs are unclear. I used expose in the docker compose file to help other developers understand the application better (expose itself is only for documentation, only ‘ports’ actually opens a port outside the internal network). Both containers also sit behind an nginx that acts as a single entry point. The /health endpoint exists currently only for docker healthcheck but I like your idea of exposing it through the frontend to allow for Uptime Kuma monitoring. I’ll implement that next.