πŸš«πŸ“† Serverless calendar built with shuttle.rs

Overview

zerocal 🚫 πŸ“†

Welcome to zerocal, the serverless calendar.
It allows you to create calendar invites from the convenience of your terminal!
πŸ”— Here's my blog post about the project.

Usage

curl https://zerocal.shuttleapp.rs?start=2022-11-04+20:00&duration=3h&title=Birthday&des
cription=paaarty > party.ics
open party.ics

Web UI

You can also use the web UI at https://zerocal.shuttleapp.rs

web ui

Self-hosting

You can also self-host zerocal. To do so, compile the binary with cargo build --release --features local and run it with ./target/release/zerocal. The server will listen on port 8000 by default.

Contributing

Please check the issue tracker for contribution ideas. Any pull request is welcome. ❀️

To run a local development version install cargo-watch and then run

make local

You can also run a dev version on shuttle.rs with

make dev

Derivatives

Was your project inspired by zerocal? Add it here!

  • kiwical - Kiwi Calendar built with Typescript on Deno Deploy.

Credits

This app was built with the help of πŸš€ shuttle.rs, the web application platform for Rust.

Comments
  • Issue 13: QR Codes

    Issue 13: QR Codes

    Fixes #13

    Changes

    • Uses qrcode-generator crate.
    • Cross-service (local/shuttle) router creation, to avoid updates in two places.
    • Moved calendar generation to new file cal.rs to allow reuse between qr generation and normal function.
    • Fixed clippy complaining about a match which could have been an if let.

    Design

    Decisions

    • Exports images as PNG for better compatibility (HTML image embedding didn't work with SVG), plus smaller file sizes (<2KB, compared to ~200KB for SVG).
    • QR generation is handled by a new endpoint /qr, for continued ease of use with curl etc., plus this allows people to share links to images rather than the image itself if desired.
    • QR contains embedded calendar event, rather than a link back to the app to generate the event.
    • QR code has medium ECC - not personally sure if this is correct, we could go lower for smaller codes.

    UI/UX

    QR code is tucked beneath the link to the calendar invite: image

    QR code directly produces a calendar event on both Android and iOS: Android | iOS -----------|------- image|image

    opened by Nabushika 11
  • A clone in Typescript/Deno Deploy

    A clone in Typescript/Deno Deploy

    Hi! I really liked this project and found it inspiring to make a clone in Typescript on Deno Deploy. If you are curious you can see it here - https://kiwical.deno.dev/ Thank you for the inspiration!

    opened by maheshsundaram 2
  • Setting duration to

    Setting duration to "dog" (or any other unparseable value) responds with a 500 error

    Setting duration to "dog" (or any other unparseable value) responds with a 500 error.

    I was just noticing this when reading the blog article and thinking about how rust doesn't necessarily protect from logic edge cases :smile:

    opened by ahungry 2
  • Add support for QR code generation

    Add support for QR code generation

    Use case: as a meeting organizer, i want to quickly create an event on my phone, then share that meeting with my friends though a QR code on my phone

    QR code would either be the link to the event or the link to the calendar file

    opened by sebasrp 1
  • 🌈 Beautiful UI?

    🌈 Beautiful UI?

    I'm not a designer. Can anyone create a beautiful design for zerocal? 🎨 The entire HTML and CSS is in this file: https://github.com/mre/zerocal/blob/main/static/index.html.

    opened by mre 0
  • Web GUI cannot set a custom timezone

    Web GUI cannot set a custom timezone

    Seems that the browser's local timezone is used (without inspecting code)

    I would like a way to set to use my timezone by default, or manually select one from a dropdown list ala google: image

    Even just manually setting the offset from UTC would be ok too as an MVP.

    opened by NukeManDan 3
  • URL/Location cannot include `#`

    URL/Location cannot include `#`

    URLs are truncated for anything including a # MRE:

    curl -LG https://zerocal.shuttleapp.rs/ -d title=matrix -d location="https://matrix.to/#/#a-channel:matrix.org"
    
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:ICALENDAR-RS
    CALSCALE:GREGORIAN
    BEGIN:VEVENT
    DTSTAMP:20221010T153700Z
    DESCRIPTION:Powered by zerocal.shuttleapp.rs
    DTEND:20221010T163700Z
    DTSTART:20221010T153700Z
    LOCATION:https://matrix.to/
    SUMMARY:matrix
    UID:0d85aec2-c585-44e5-a80e-c9464e9c5572
    END:VEVENT
    END:VCALENDAR
    

    Perhaps a # to %23 conversion could fix this? Was needed on twitter for these links as an example to be valid and work a while ago (now patched).

    opened by NukeManDan 0
  • Cannot use unicode in fields 😭

    Cannot use unicode in fields 😭

    Emoji work fine if downloaded from the gui, but no output on the CLI if used. MRE:

    # fails
    curl -LG https://zerocal.shuttleapp.rs/ -d title=Valid -d desc=🍺+to+catch+up!
    # works
    curl -LG https://zerocal.shuttleapp.rs/ -d title=Valid -d desc=beers+to+catch+up!
    
    opened by NukeManDan 1
  • Add a HTML version of the event response

    Add a HTML version of the event response

    When a recipient clicks the link, it would be nice if they got a HTML page first. The page could contain links to download as ical, add to Google Calendar etc.

    opened by tuukka 3
Owner
Matthias
Curious person. Maker. Rustacean. Oxidizing things.
Matthias
Shuttle.rs Christmas Code Hunt 2023

?? Shuttle.rs Christmas Code Hunt 2023 Submissions ?? These are my submissions for the Christmas Code Hunt hosted by shuttle.rs This is using a custom

null 4 Dec 7, 2023
A simple program for handling Ethiopian calendar dates.

Mek’ut’erΔ«ya A simple program for handling Ethiopian calendar dates. Installation cargo install --git https://github.com/frectonz/mek-ut-er-ya If you

Fraol Lemecha 15 Dec 20, 2022
Cookiecutter templates for Serverless applications using AWS SAM and the Rust programming language.

Cookiecutter SAM template for Lambda functions in Rust This is a Cookiecutter template to create a serverless application based on the Serverless Appl

AWS Samples 24 Nov 11, 2022
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications

Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications Explore PipeCD docs Β» Overview PipeCD provides a unified co

PipeCD 650 Dec 29, 2022
Ref Arch: Serverless GraphQL in Rust on AWS

A Whole Hog Reference Architecture for an Apollo Federation-Ready, Serverless, Rust-Based GraphQL Microservice on AWS using Cloud Development Kit (CDK)

Michael Edelman 3 Jan 12, 2022
Examples of how to use Rust with Serverless Framework, Lambda, API Gateway v1 and v2, SQS, GraphQL, etc

Rust Serverless Examples All examples live in their own directories: project: there is nothing here, just a simple cargo new project_name with a custo

Fernando Daciuk 9 Dec 17, 2022
Serverless setup for activity pub (using lambda+dynamodb) in Rust

Serverless ActivityPub About This is an experiment to have free/cheaper activitypub instances running on AWS (making use of free tiers as much as poss

Conrad Ludgate 3 Dec 30, 2022
Monorep for fnRPC (high performance serverless rpc framework)

fnrpc Monorep for fnRPC (high performance serverless rpc framework) cli Cli tool help build and manage functions Create RPC functions Create & Manage

Faasly 3 Dec 21, 2022
Serverless search for AWS.

Pathery ?? Serverless Search ?? Pathery is a serverless search service built on AWS using Rust, CDK and Tantivy. ?? WARNING: This is currently a work

Tyler van Hensbergen 40 Jan 3, 2023
Repo for Monaco, a DCA engine for Solana. Built on Solend and lending protocols (Jet, Solend, Port, etc...)

Monaco Monaco is a DCA protocol for solana built on top of Serum and compatible with any program that implements or extends the instruction interface

Rohan Kapur 19 Apr 13, 2022
Catify, but built in rust

A simple project to prettify commit messages NOW IN RUST! Commit messages are good. They provide information about tons of things. But far too many co

Alecto Irene Perez 2 Oct 20, 2021
Hydrogen is the desktop application for Geplauder, built with tauri studio.

Hydrogen Hydrogen is the desktop application for Geplauder, built with tauri studio. For more information on Geplauder, click here. Usage To configure

null 4 Nov 21, 2021
Keyscope is a key and secret workflow (validation, invalidation, etc.) tool built in Rust

βœ… Automate your key and secret validation workflows ?? Over 30 different providers ?? Export to JSON, audit via CSV ?? Keyscope Keyscope is a key and

null 364 Dec 22, 2022
Cakecutter - a utility tool that quickly sets up a project from a pre-built template

Cakecutter Create projects from pre-built cakes (templates)! Supports files, packages, content, running commands and more! Cakecutter is a utility too

Dhravya Shah 10 Jun 22, 2022
Pure Rust library for Apache ZooKeeper built on tokio

zookeeper-async Async Zookeeper client written 100% in Rust, based on tokio. This library is intended to be equivalent with the official (low-level) Z

Kamil Rojewski 16 Dec 16, 2022
syncmap is a fast, concurrent cache library built with a focus on performance and correctness.

syncmap syncmap syncmap is a fast, concurrent cache library syncmap is a fast, concurrent cache library built with a focus on performance and correctn

Behrouz R.Farsi 15 Dec 2, 2022
SimpleX Chat GUI built with Rust, Tauri and Yew

simplex-desktop A desktop application for simplex-chat. WIP, contributions are welcome. Architecture For the back end we rust with tauri and frontend

Simon Shine 5 Feb 28, 2023
πŸͺ Modern emoji picker popup for desktop, based on Emoji Mart, built with Tauri and Svelte

Emoji Mart desktop popup Modern emoji picker popup app for desktop, based on the amazing Emoji Mart web component. ?? Built as a popup: quick invocati

Vincent Emonet 10 Jul 3, 2023
Convert Hygea calendar to an iCal file to easily import it to Google Calendar (Rust version)

Hygea to iCal Goal Hygea provides a calendar via PDF and an application called Recycle. I just wanted to use an iCal file to import it in my calendar.

Guillaume Quittet 2 Oct 28, 2021
Synchronizes Southern California Mountaineers Association (SCMA) calendar events to Google Calendar.

SCMA Google Calendar Sync Synchronizes Southern California Mountaineers Association (SCMA) calendar events to Google Calendar. Credentials SCMA websit

Rob Donnelly 1 Aug 11, 2022