Slide mode: https://notes.infinite.build/p/8MRLalNPu#/
Repo: https://github.com/voboda/zKal
---
# π€ GCal β‘οΈ ZKal! π
Even among those who advocate for decentralisation, itβs tough to break free from Google Calendar.
---
# Ingrained Network Effects πΈοΈ
Google Calendar's ingrained network effects and varying technical abilities within groups make it hard to leave.
---
# Meeting Confusion π
"I'm in Jitsi, where u?"
"Google Meets. It was in the invite."
"I hate you Google."
---
# Scalability Issues π
In larger groups, especially with over 300, Google Calendar breaks badly, even reveals anonymous user info.
---
# Shadow Profiles π΅οΈ
Google collects information about who we spend time with, which is terrible for shadow profiles.
---
# Default Opacity π§±
The political centralisation of SaaS tools creates opacity between teammates.
Different teams may miss each otherβs meetings due to separate calendar feeds. πππ
---
# Critical Moments π¨
This lack of transparency can be problematic during critical moments when welcoming community is essential.
---
# zKal Solution π‘
ZKAL offers a solution by providing a self-hosted calendar feed, and proxies user interactions from calendar backends using zero-knowledge semaphores.
---
Prove membership to access
![](https://i.imgur.com/mBPavwe.png)
---
# Semaphore π
Users access it through Semaphore, maintaining anonymity while proving group membership.
---
See all the calendars
![](https://i.imgur.com/ByM7FSK.png)
---
RSVP or anon add to calendar
![](https://i.imgur.com/Q9UZQBl.png)
---
# RSVP Publicly or stay anon π₯
They can RSVP publicly within the Semaphore group, useful for hosts.
Or stay anon. Hosts see a +1.
---
# Decentralised Administration βοΈ
ZKAL supports multiple ICS feeds, decentralising calendar administration.
---
# Gradual Transition π’
This allows for a gradual transition away from Google Calendar.
---
# Flexibility π
Different rooms or groups can operate on various systems without an all-or-nothing switch from Google Calendar.
---
# Respecting Challenges π€οΈ
This approach respects the busyness of our lives and the challenges of change.
---
# Simple Deployment π
It's a nodejs app. Easy deployment on Docker containers. Or run it on an RPi or your rooted vacuum robot.
---
# Development Challenges π οΈ
As a developer returning after 10-15 years away, Iβve faced challenges adapting to new development patterns.
---
# Choosing Svelte π
I chose Svelte for its simplicity and small components.
---
# Web3 APIs π
I found most Web 3 APIs and SDKs are geared towards React.
---
# Technical Issues βοΈ
I encountered issues with ESM versus CJS since Vite is an ESM maxi.
---
# Libraries π
I had to deabstract, digging into Zupass libraries and then using EF's Semaphore libs directly.
---
# KISS ππππππππππππππππ
Eventually, this simplified things while maintaining functionality. I look up to Saint Nikolai of Rai, and his ethos of simple protocols, easily understood.
---
# Night shifts π
During this hackathon, I also managed night shifts at SDPβs help desk and assisted with setup tasks.
---
# Determination πͺ
Despite previous hackathons where I couldnβt submit my projects due to various frustrations, I was determined to submit this time!
---
# Gratitude π
ETH Berlin is my favourite hackathon by far. What you do inspires and energises me for the year. It would give me joy to maintain & build on this for you. Anything I can do to help you do your wonderful work.