Mytimer.cloud for the Appwrite hackathon, June 2023

Photo by Susan Mohr on Unsplash

Mytimer.cloud for the Appwrite hackathon, June 2023

Hey there! I had a blast participating in the Appwrite hackathon and I want to share my journey with you. So, buckle up and get ready for some timer magic!

Team Details

Okay, before we dive in, let's get to know the team (well, it's just me actually):

Description of Project

Introducing mytimer.cloud, your one-stop destination for timers and stopwatches in the cloud. It's like having your own magical timekeeper that syncs across all your devices. Pretty cool, right?

Tech Stack

Here's the tech wizardry behind mytimer.cloud:

  • Solid.js and Vite - the frontend magic

  • Appwrite Cloud - the power behind the scenes

    • Database - for storing all your timers

    • Cloud Functions (Node.js) - making things happen

  • CloudFront Pages - for hosting the frontend magic

The Appwrite Database is used to store user timers in a collection per session.

Appwrite Functions are used to generate a session for a user and create the matching collection as well as clear all timers within a session. In the future, I'll add a cleanup periodic function to handle stale or dead sessions from the database.

Challenges I Faced

Now, let's talk about the hurdles I faced during the hackathon. We all know that even magic has its quirks, right?

  1. Debugging Functions: Spells can go wrong sometimes, and it was no different with Appwrite functions. Debugging became a bit of a challenge without proper error and output logging. It seemed that console.error would not go anywhere and I had to resort to console.log. It would be fantastic if Appwrite could sprinkle some extra logging magic to make it easier for us developers to spot and fix those pesky bugs. Oh, and a way to test functions locally before casting them into the cloud would be simply magical!

  2. Dynamic Collection Creation: Creating collections within functions turned out to be a not-so-fun adventure. It involved multiple function calls to set up attributes for each collection after one was created programmatically. It would be amazing if Appwrite could conjure up a simpler way to create collections with all their attributes in a single magical incantation. And hey, shedding some light on how to share code between functions would make our lives a lot easier!

  3. Enhanced Environment Variable Management: Remembering all those environment variables can be quite tricky, right? Well, things got a bit tangled when it came to uploading .env files to new functions or copying variables between them. It would be fantastic if Appwrite could provide a way to effortlessly upload .env files or easily copy variables between functions. Let's make managing environment configurations a breeze!

  4. Improving Type Completion: Oh, the frustration when type completion misbehaves! During the hackathon, I stumbled upon a bug that affected type completion in functions code. Thankfully, it's been fixed (hooray!), but the fix hasn't been released yet. Once released, it will make our coding experience smoother and less prone to magical explosions.

  5. Learning solid.js on the go was both amusing and challenging. Its learning curve and unexpected roadblocks slowed me down at times, but I love taking on new technologies through exciting side projects. Despite the initial hurdles, I found solid.js captivating, with its unique concepts and reactive updates. Unravelling its mysteries brought me great joy, even amidst moments of lol-ful confusion.

Public Code Repo

Lo and behold the secrets of mytimer.cloud in my GitHub repository.

https://www.youtube.com/watch?v=QpTdnphRI9g

Bye

That's a wrap, folks! Thanks for joining me on this magical journey through mytimer.cloud. Keep coding and stay enchanted!