Website Under Development
Next.jsPostgreSQLDrizzle ORMClerk
Article written: 01 June 2025Development period: 05/2024 - 07/2024Reading time: 3 min

Drawdle

When one of my friends got into drawing, I felt compelled to create a platform that would allow us to share our masterpieces in a gamified manner. Drawdle is the result, it's a web app that "fosters" creativity through its drawing and voting systems. Users can submit their own drawings to participate in themed drawing challenges ("Draweeks") and vote on their favorite submissions and upcoming themes. The source code is available on GitHub.

Key Features

The core of Drawdle revolves around themed drawing challenges called "Draweeks." A new Draweek, along with voting, is automatically created each week, featuring a winning theme from the previous one.

Users create and submit drawings, and then the community votes on them. The app keeps track of user activity and their submission streak, which adds a fun, competitive element.

The web app is also a mobile PWA application, bulling users with push notifications about new Draweek themes and voting, making sure they stay in the loop.

The app is built in Next.js and uses UploadThing for image uploads, with components like UploadButton and UploadDropzone. PostgreSQL that stores all the application data. Clerk handles user authentication, with middleware protecting certain routes. And web-push is used to deliver real-time notifications.

How it Works

A new Draweek theme is generated, and a voting session is initiated. Users upload their drawings, which are stored in the database and associated with the current Draweek. Users then vote on their favorite submissions and receive notifications about new Draweeks and voting results. The winning vote from the previous week becomes the theme for the new Draweek, creating a continuous cycle.

A Footnote

While certainly an interesting learning experience, building this project took way too long. Since I was juggling an internship at the time, my free time was limited, and by the time I got it into a functional state, my friend's drawing phase had already passed.

Still, it was a great opportunity to dive into Drizzle ORM, Clerk for authentication, and the Web Push API. It taught me a bunch about building apps from scratch, even if the timing was a bit off.