master
SocialWatch
Isn't is unfair how we have dashboards for everything but not for YOU? No longer. Now you can track your friendships like a true nerd.
This app fetches contacts from cardDAV, events from calDAV, combines them in a nice webUI and gives you an score calcuated from diversity of people you meet with and frequency.
It shows a bunch of metrics like:
- Last Meetups: a chronological feed of past events
- This Year: a GitHub-style heatmap of all social activity
- Top Contacts: who you spend the most time with, ranked
- Catch Up Soon: contacts you haven't seen in a while, sorted by time pased
- Social Score: a 0-1 score combining event frequency and contact diversity
- Number of Events in the current month
and its even mobile friendly!
API endpoints
| Endpoint | Description |
|---|---|
GET /api/people |
List of contacts from the address book |
GET /api/people/<person-uid> |
A contact by id |
GET /api/people/<person-uid>/photo |
A contacs photo by id |
GET /api/events |
List of calendar events with matched participants |
GET /api/events/<event-uid> |
A calendar event by id |
GET /api/scores |
Social score breakdown (total, event_score, diversity_score) |
GET /api/parse_errors |
Calendar participants that couldn't be matched to a contact |
Stack
- Backend: Python with Flask (flask is awesome!)
- Frontend: Vanilla HTML/CSS/JS
- Data Base: all from CalDAV and CardDAV. No persistend data stored in the app!
- config: in an simple
.envfile. Look at.env.examplefor reference - auth: none, you should use an SSO service like Authelia
Screenshots
Usage
- copy
.env.example, rename it to.envand fill in all options (make sure URLs point to one specific calendar/addressbook, not a directory) - copy
docker-compose.ymland adjust if needed - start the container
- in your contacts add whatever you've set for
CARDDAV_IGNORE_STRto a contacts notes section to exclude them from the dashboard - in your event calendar add all event participants in the description section, one per line, starting with
CALDAV_PARTICIPANT_PREFIX - optionally add the website to your homescreen to use it as an app on mobile
AI usage
I wrote the entire backend by hand. The frontend is 99% vibe coded. Sorry, code-purists.
Description
track your social relationships like a true nerd. Straight from your calDAV & cardDAV server
3.2 MiB
Languages
JavaScript
37.2%
Python
33.1%
CSS
21.7%
HTML
7.3%
Dockerfile
0.7%


