After selfhosting dozens of applications myself I am looking forward to giving something back to the community. I wanted a way to manage both my professional and personal relationships better. Especially with kids around it feels difficult to keep up with everyone’s birthdays, diets, events and whatnot . Originally I used Monica but development has stalled since quite a while and the new version was a fair bit more complex than I needed. So over the last many months I built my own solution.

What it can do: You can add contacts (even with custom fields), relationships, reminders, activities and notes. Optionally you can also activate the CardDav server to sync contacts to and from your phone.

What it cannot do: There is no platform sync with LinkedIn/E-Mail/Messengers and there are no AI functionalities (neither is currently planned). As of now there is no native iOS/Android app, using the page on mobile works fine for me so far.

Development and use of AI: This app is not vibe coded. I do use AI assistants for programming support but code is either authored or reviewed by me (which is definitely required). I used golang for the backend (such a great language), the frontend is react. After a PR on github E2E tests are run, for each tag docker containers are built and available.

Demo and links: 
 You can try a demo here: https://meerkat-crm-demo.fly.dev/ (login with username demo and password test_12345). The demo starts on demand so it might take a couple seconds to load. Data is shared but resets as soon as the demo goes idle. 

 Repository: https://github.com/fbuchner/meerkat-crm (the README has a screengrab to give you an impression)

I am an avid user of the app myself and excited to open it up to the community now. Please be kind, I’ve been working on this for quite a while but it is my first open source project at this scale.

  • BromSwolligans@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    3 hours ago

    I think this is terrific. How much experience do you have programming, and what languages/frameworks did you use for this? I’m asking as a beginner who never knows where or how to really get started hobby programming, but really admires people who are out there doing cool shit.

    • silicea@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 hours ago

      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.