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.
{}