When COVID-19 hit our city of Melbourne in March, a couple of people in my street set up a group to provide support to our local neighbourhood — practical support like shopping and deliveries, but also moral support and companionship. We set up a WhatsApp group and a Facebook group but still not everyone could (or wanted to) access those, so as the resident nerd of the street I was asked to set up something everyone could use.
I figured we didn't need yet another social network that no-one will use. Aren't telephones and iMessage and email and Facebook and Signal and Instagram and Twitter and Whatsapp etc enough? We can work out how communicate just as long as we know who to contact. So I set up an online address book for our street which lets everyone decide for themselves how to keep in touch.
My extended family also wanted something like this, so I started modifying the code to create an address book for my family as well.
Now I had two sites up with similar code. So decided to clean up the code so anyone could use it, and so Little Contact was born.
What it does
Little Contact presents a simple page where your neighbours, family or whoever you've invited enters their email address:
This uses Auth0's passwordless authentication to send a six-digit verification code to their email address. Enter the code into the box and you're in — no need to remember a password for this little app you'll only occasionally use!
Now Little Contact shows you the address book, which contains all the contact details for your family, neighbours, etc. The information here is secure: only people invited to the site and authenticated by Auth0 can view the address book.
Little Contact allows you to define categories, so for example if you have a family address book you might define categories for parents and the kids. Just click 'Parents' to filter out the kids from the address book:
If you configure a Mapbox account then Little Contact will place the contacts on a map. This is particularly great for neighbourhood address books where you want to see who your neighbours are. In this demo data though I've set up a family who are in different cities:
Perhaps the most important feature is that it's pretty easy for everyone to update their own contact details. Just click on the 'Me' tab and update it there. Changes you make are saved securely, and then after a delay become available to everyone with access to the address book. Changes are not immediate... but they don't need to be! An address book
How I built it
The key feature of Little Contact is that you run it yourself. That way you can customise it to suit what your family, neighbourhood or group needs — and I don't need access to your personal data, which I don't want to be responsible for!
Address books don't change that often so Little Contact stores contact data in a git repository. This makes the storage costs low, provides a nice history of changes over time, and suits building into a static site with Vercel.
Little Contact relies on three services:
When you run Little Contact you need a free account with each of these services. Auth0 provides the critical security to make sure only people you want can access the address book. Vercel builds the code and provides the hosting, including critically the secure APIs which can only be accessed when logged in via Auth0. Bitbucket stores the Little Contact code repository from which Vercel builds the site, and a Bitbucket Pipeline to load new contact data from Auth0 and store it in the repository.
Accomplishments that I'm proud of
I'm proud that this is lets you share an address book with in your group in a secure way — without being at the mercy of a big social media company. I want to include everyone in my family or neighbourhood, and some of them just don't trust Facebook etc and refuse to sign up. Little Contact doesn't require a signup and it doesn't require a password, it just needs an email address so a verification token can be sent to you. That makes it more inclusive than running this through a big social media company.
What's next for Little Contact
I'd like to add UI to let administrators add and modify people directly from a Little Contacts site. Right now they need to create users manually by calling Auth0 APIs; that was fine when it was just me but if other people are going to run their own Little Contacts sites then I know I need to make that easier!