I’ve been using various contact managers but they all feel like sales tools, so I built Nametag to track the people I actually care about - friends, family, colleagues. It maps relationships, tracks birthdays, and visualizes your network as an interactive graph.
Self-hosting highlights:
- Docker Compose setup - PostgreSQL, Redis, Next.js app. One command to start
- No email service needed - Accounts auto-verify, works completely offline
- Unlimited contacts - No artificial limits (hosted version caps free tier at 50)
- Complete data ownership - Your relationship data stays on your infrastructure
- Optional email - Can configure Resend if you want birthday/reminder emails
- No phone-home - Runs entirely on your network if you want
- AGPL-3.0 licensed - Full source access
Features:
- Track people with flexible attributes (name, birthday, contact info, notes)
- Map relationships between people (family, friends, colleagues, custom types)
- Interactive D3.js network graph visualization
- Custom groups for organizing contacts
- Birthday reminders (if you configure email)
- Dark mode, i18n (English and Spanish for now, but more are coming)
- Mobile-responsive
Tech stack:
- Next.js 16 (TypeScript)
- PostgreSQL + Prisma ORM
- Redis for rate limiting
- D3.js for graph visualization
- Tailwind CSS
Quick start:
git clone https://github.com/mattogodoy/nametag
cd nametag
# Edit .env with your secrets
docker-compose up -d
Database migrations run automatically on first start.
Access at localhost:3000.
There’s also a hosted version at https://nametag.one/ if you don’t want to self-host (helps fund development).
GitHub: https://github.com/mattogodoy/nametag
Happy to answer questions about the setup, architecture, or deployment!
Does it have caldav/carddav capabilities? That’s key to keep it all there.
It’s on the works!
Would you mind taking a look at this issue? https://github.com/mattogodoy/nametag/issues/15 I’m planning the implementation for CalDAV/CardDAV and have a few high level questions I’d like your opinion on. Thanks!
Sorry for the late reply. My wife has been keeping me busy with shit I don’t want to do.
Looking at the conversation on github, I saw the first suggestion being the inclusion of pimsync into the docker compose file. I’m no developer, but it stands to reason that the same challenges remain if doing this because at the end of the day, pimsync is just a parser to sync with file systems, and for it to work with carddav the other party would still need to support carddav, right? So that idea is dead in the water.I am going to reply now to your 4 questions in the github. My handle is ‘mofongox’.Edit. I was a complete moron and chose to asume before even trying the software. I replied to your comment on GitHub just now, and now that I’m clear on what this actually does (thank you for your patience man) I fixed my reply accordingly. The short of it is that any way to import the information from a carddav server, or even a template on how to format an import json file for the purpose of adding people should suffice. Thanks so much for this great addition to the FOSS community.
For small personal deployments, is SQLite support planned? It’s crazy performant and I have to imagine it would work for up to 500 contacts at the very least, which should cover the majority of deployments. Making Redis optional (otherwise using a basic in-memory KV store of some kind) would also be cool.
Any way to sync with contacts on mobile? I’d love one source of truth.
CardDAV synchronization is next on the list of priorities :)
No reason this should need a server.
Couldn’t the same be said for just about any self-hosted app? You can watch video files with a local video player, so no need for Jellyfin; you can save passwords in KeePass, so no need for Vaultwarden; etc.
Seems to me like, if you’d like to have access to this app along with your data from any computer without having to overlay a separate data syncing solution and install a local app on each of those computers, that’s justification enough. Or maybe I’m just not understanding your critique here…
It’s not Minecraft. My contacts list is not multiplayer.
It’s not a video file. How many terabytes do you think my contacts list is?
How many people do you think are getting a server before getting a file sync app?
But I have multiple devices and want to access it from all of them.
That don’t need a server.
How else would you do it? With a Synchronisation client? Where you need to make sure that all devices are online at the same time?
Or would you sync it over the cloud? Which would mean a server but not yours.
You turn off your phone to use the computer? lmao
No, but my laptop and desktop are seldomly online at the same time.
Not many… but this community isn’t for those people. It’s for people who are already predisposed to self-hosting software.
How many people do you think are finding his place before file sync?
Tools like these are used collaboratively by many people for various reasons. Someone in this thread said they’d use it to manage people in work projects, for instance.
Great, this is not clear from the post.



