sidequest.
Sep 2024 - Nov 2025
Pokemon Go for Event Discovery. This is an app I spent a year developing. I designed, built, and launched the product 0 to 1 covering the full-stack including frontend, backend, and infrastructure. I also lead user research, produced marketing content/videos, and conducted real-life events attracting 100s of attendees.
Intro
Sidequest was my first attempt at building a startup. The idea was inspired by my 3 month backpacking and hostel hopping trip across Europe with my younger brother where I discovered the wonder of unexpected shared experiences. I time-boxed the project to 1 year to see how far I could take it, building out a mobile app, web admin dashboard, full backend, and infrastructure. Prior to transitioning off the startup, the app gained 100+ users and was tied to 3 self-organized events totalling 100s of attendees.
Tech Stack + Important Frameworks
Mobile:
React Native/Typescript, Expo, Vite, Reanimated, Mapbox
Web:
Next.js, Tailwind, TypeScript, Vercel
Backend:
Python Django, PostgresSQL, Docker, JWT, Refresh Tokens, Google & Apple OAuth
Infrastructure:
Terraform + AWS, ECS, S3, RDS, Docker
What I Built
This section covers the core features of the app from both a user and admin perspective. Each subsection will contain a demo, features, and at least one deep dive.
Map-Based Discovery | Filters, Regions, Maps, Events, Geofencing
Features
Browse events by integrated Mapbox map view or list view on a custom bottom sheet
Filter by city, region, date, start time, and category + sort by distance or start time
View and interact with events in their own custom view card and screen view
Save events to calendar, profile, or share with friends via external links to the companion site. Provides directions and ability to check in and collect as well.
Users can check in and collect events by geo-fenced check-in system. Backend service checks is user is within X meters of the event and if so, event is marked as collected. Also used to track attendance. (Feature code completed but not deployed in current app version).
Creation Pipeline | Submission, Approval, Image Organizer & Cropper, Timezones
Features
Multi-step submission flow for discovered events + local drafts. Events submitted by users are reviewed on a custom admin dashboard and if approved appear on the map.
Image picker with custom-built image crop system.
Chosen images could be reordered by long-pressing and then dragging them to the desired position. This reorder-enabled ScrollView is a custom component which can be used with any component item in the middle. For example this was also used to reorder badges.
Address autocomplete and map pin with reverse geocoding.
Custom KeyboardAvoidingView to replace React Native's default buggy one. Effectively this view made it so the keyboard would not cover up the input fields when the keyboard is opened.
Timezone support for events. Event timezones were converted and stored in the backend based on geocoded event coordinates, instead of the user's timezone.
Personalization | Profiles, Badges, Color Palettes
Features
My Sidequests section houses drafts, Sidequests submitted in reivew, and Sidequests which were submitted and approved by the user
Liked Sidequest section shows liked Sidequests and can be clicked into which then allows for the ability to swipe to unlike. Sidequests are ordered by soonest start time.
Custom color palette system with themed components and custom useTheme() hook allowing for ease of creating new color palettes. At launch light and dark exist but setup makes it easy to add more by just changing out colors.
Profile badges awarded for achievements. Badges earned by completing tasks such as attending X events, submitting X events, attending Sidequest exclusive activations and many more tasks. Badges had rarity tiers from Common to Relic. The profile is limited to displaying 6 badges which can be reordered. Accounts are determined eligible for a badge by custom service in the backend upon certain criteria. (Code completed but not deployed in current app version).
User Accounts and Persistence | Auth, Creation Flow, Roles, Security
Features
Custom JWT + Refresh Token auth system setup in the backend with 4 distinct user roles and permissions. Login will persist based on a refresh token as long as it hasn't expired.
Social login with Google and Apple, securely verified on both the client and server side.
Login with email possible with one-time-password sent to email by the backend.
Custom User Creation Flow with server and client side validation, encryption, and security
Companion Website


Features
Landing page with overview of app, features, screenshots, and social links.
Contact page which submits to a custom email address on the backend.
App events also accessible via the website. These event links deep link to the mobile app and allow for ease of sharing with friends.
Moderation/Administration
The admin dashboard is admin only and allows for easy management of users, events, and other data. All screenshots are samples.








Features
Custom stat emitter with stats stored in PostgresSQL database. Metrics are derived from API call data, failures, event clicks, logins, etc. Collected information is collated and displayed on the dashboard
User management page allows for editing of user roles and permissions as well as displays all users.
Event management page allows for the creation, updating, viewing, deletion, and approval of events. Events also have instances based on recurrence logic which can be manually created and overridden on this page. User submitted event approvals and rejections also occur on this page.
Event Recurrence
Purpose of this feature is to allow better customization of events so repeating events can easily be changed saving hours of labor for copy pasting and manually managing events.






Features
Recurrence logic based on RRULE format with nightly cron job generating out 60 days of future events based on the rule string
There is a custom base event model in the database with an associated Event Instance model built on top for recurring events with custom information. This allows for quick access of the database and adhoc generation as needed.
Recurring event logic similar to Google Calendar where it starts on the first event date and then can be simple such as every day or month on a certain day or complex such as every week on monday, tuesday, friday. Custom exclusions and overrides are possible on the admin dashboard.
Real World Activations | Events I Organized
As part of Sidequest, I began organizing events in the later stages to test my theory that the best way to make an event app successful is to build the culture around it. Turns out my theory was correct. All events were hosted at Proof Coffee Roasters in NYC, a local cafe I partnered with.
Karaoke Cafe
Karaoke Cafe Recap
View on Instagram
Highlights
Organized and hosted a 40+ person karaoke cafe event
Pumpkin Decorating Contest
Pumpkin Decorating Promo
View on Instagram
Pumpkin Decorating Recap
View on Instagram
Highlights
Hosted a 12 person pumpkin decorating contest with a prize pool of $50 for best pumpkin
Due to the event, the cafe revenue for allotted time period was 5x the norm
Re:Made Market
Re:Made Hand Promo
View on Instagram
Re:Made Promo 2
View on Instagram
Highlights
Collaborated with 2 other startups to organize an 8 local vendor, 100+ attendee popup sustainable/upcycled clothing market in less than 30 days with no prior experience in fashion
The event featured a major brand sponsorship from Yerba Madre and had a live DJ