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):
- Amir Eldor - @amireldor
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?
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 toconsole.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!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!
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!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.
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.
Demo Link
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!