Inspiration

Have you ever woken up with no plans, craving something new and exciting? How many events are you missing out on, just because you don’t realise that they exist? With every hangout, our group chats have the same, age-old question: “What’s the happs tonight?”

The answers tend to be the same too. The same shopping centres, the same restaurants, and the same activities that we've done numerous times before. For people who crave new experiences, this turns into a time consuming search through multiple platforms to find an event or activity that matches everyone’s interests. With all of this fragmented information, we often miss events that we would have loved to attend.

That’s when we came up with the idea of happs - a simple web app that connects you to your friends and allows you to find your latest local events suited to your interests, anytime, anywhere.

What it does

happs is a map-based platform that lets users see spontaneous events happening in their local area. happs takes the guesswork out of planning hangouts with friends, emphasising the importance of trying new activities and providing individuals with new ideas and experiences. Each event is displayed on an interactive map as a marker, allowing users to easily explore the latest happs around them. Upon clicking on each marker, an AI-powered summary tells you exactly what to expect and whether it matches your vibe.

Want to bring friends along? Add them in-app and tap “Going” so that everyone knows you’ll be there. Our friending feature allows users to connect to friends within the app, making it easier to coordinate plans and discover new experiences together. If an event catches your eye but you’re not ready, save it to your list for later.

Event organisers or everyday users can also add their own events to happs, allowing for spontaneous meetups, gatherings, and smaller activities to be visible to people in the area, connecting communities and providing a fun and new experience for individuals in a close proximity.

Users can browse events based on how far they’re willing to travel, how much they’re willing to spend, and if they’re looking for alcohol-free events, making the app suitable for families and people of all ages. As well as this, users can filter events based on their interests, whether that be sport, music, food, or festivals.

With happs, spontaneous adventures are just a tap away - no endless scrolling or hidden fees, just trusted events curated from local sources. Rediscover your city in a way that’s fun, easy and totally in the moment.

How we built it

happs is built with a system to consolidate event data from a range of Australia-specific and international web sources. The technical side of this involves our scraper worker deployed on Cloudflare workers, which enables querying each site from a hand-picked list, sourcing event pages, and extracting all event information available on the site using cues like structured JSON-LD event data and heuristics within the site. This information is parsed and indexed using an LLM, returning a structured object that is pushed and stored into our Supabase PostgreSQL database. These entries are ready for viewing on the frontend, which includes polling depending on features and optimisations depending on where the user is looking at the map.

The frontend of the site follows modern design principles like minimalism and glassmorphism, and follows a non-conventional design layout. It is deployed on Vercel, and polls the Supabase backend and our API worker also deployed on Cloudflare to collect event data, user data, friend data and more. It uses the React + NextJS stack and adapts to the mobile and desktop views. We used modern components and animations using frameworks like Radix, Tailwind CSS, PostCSS and Autoprefixer for styling, Leaflet and React-Leaflet for the mapping functionality.

Through our development process, we used a continuous integration and deployment pipeline that involved GitHub, Vercel and Cloudflare interfacing with each other, following merges from our feature and bug squash branches to the main branch. We used Cursor, GitHub Copilot and ChatGPT to aid in the development process and used techniques like Spec-driven development to make sure our development was not based on impulse, bad practice, and sub-par vibe-coding.

We implemented observability, caching, test coverage, DB security through RLS and RPC functions, secret management throughout the stack and data normalisation in our scraping flow.

Challenges we ran into

Many unforeseen challenges arose during the development process, targeting critical aspects of happs’ infrastructure like the database reliability, cost effectiveness, and legal concerns. A key challenge was resolving a crashing database upon implementation of the friending system, which came forth from loading a SQL query with raw strings. This could have been detrimental to happs’ system. Through collaboration, we resolved a crashing database by restarting the DB, monitoring logs across our entire stack, and pinpointing the incident to the friend system. We implemented RPC functions in the DB to circumvent such instances.

Our initial worker was set to work on a cron trigger through the Cloudflare platform, but this was inefficient and cost us close to $40 in API credits in one night, as the scraping ran across the full URL list. We responded to this by immediately disabling the cron trigger, and moving to a /manual endpoint within the scraping worker which let us control exactly when to scrape.

Our initial spec also required considering significant legal restrictions that come from the restrictions on scraping. To make sure we were compliant, we made sure to fetch the /robots.txt file of the URLs we wanted to scrape and made sure that these explicitly allowed scraping (and did not disallow crawlers). Only these URLs made it to the final URLs list we use in production.

We also initially did not consider the implications of traversing entire pages to find events, and ran into problems with the compute time being exceeded on our stack. We mitigated this by switching to sites that provided JSON-LD event data and then using heuristics from the site source to determine whether to continue scraping.

Further, we ran into problems with our API key returning as breached on the web, which was swiftly countered by rolling over new API keys and updating their occurrences within the codebase. Quick action was key here, as to not suffer from a web-scraper stealing the sensitive keys without our knowledge.

Accomplishments that we're proud of

Reducing cost of all APIs from $40 per run to under $5 per month by using web indexed event information instead of querying the LLM with fully rendered PDFs of the event page. This way barely sacrifices accuracy for a huge performance and cost boost. This practical business decision reshaped happs’ to suit the goals of both the users and the developers. The UI design was particularly unique and was something we were definitely happy with (animations, colours, button styles, layout and the likes). Our CI/CD workflows were also surprisingly effective for our first time working on such a large-scale project.

What we learned

  • We learnt proper development practice using branches in Github and setting up a proper rollout and CI/CD process that interfaces across technology like Vercel, Cloudflare, and Supabase
  • We learnt new frameworks like Geocoding with OSM, and using Leaflet for the map.
  • We learnt how to properly add secrets across multiple technologies and centrally manage the rollover of these secrets
  • We learnt to work in a team effectively, delegating tasks across the team and working across tech stacks together while maintaining a production and staging environment at the same time.

What's next for happs

The future holds exciting possibilities for happs!

Our web app works on both desktop and mobile devices, but we would love to be able to develop a dedicated mobile app. This can increase accessibility and also allow for ease of use, anytime, anywhere. With the mobile app, we could implement push notifications that remind users of upcoming events, and also let friends know where other people are going.

We also hope to populate the app with events from all over the country and the world, meaning that individuals can see events from wherever they are, even if they’re travelling.

Other features we'd like to implement include weather-aware suggestions, more event filters to make event discovery even more personalised and interactive, and a messaging system to allow for further connection between users.

Overall, our long-term vision is for happs to become your go-to platform for discovering spontaneous activities and events happening around you.

Built With

  • archlinux
  • autoprefixer
  • cloudflare
  • cloudflareworkers
  • clsx
  • crontriggers
  • eslint
  • googlegemini2.5proapi
  • lucidereact
  • next.js15
  • photongeocoder
  • postcss
  • postgresql
  • radix
  • react19
  • reactleaflet
  • rowlevelsecurity
  • sql
  • supabase
  • supabaseauth
  • tailwindcss
  • tailwindmerge
  • typescript
  • vim
  • wrangler
Share this project:

Updates