Inspiration
Making friends in college is hard. Icebreakers feel forced, people stick with who they already know, and friend apps keep you swiping instead of talking. We wanted something that only works face to face, and that makes saying hi to a stranger feel like a game instead of a risk. Nintendo's StreetPass inspired us: meeting people should leave a little trace you can collect.
What it does
Every user has an NFC keychain and a pixel avatar. When you meet someone, you ask, "Do you wanna connect on Charm?" and tap your keychain on the back of their phone. No app download or pairing is needed. Their phone opens Charm, which shows both avatars, your shared interests, and a conversation prompt written for the two of you. Then you just talk.
The tap in saves to both accounts, and that person joins your plaza, a pixel world where everyone you've met wanders around as their avatar.
- New users join through the tap. If the other person doesn't have Charm yet, the tap opens sign up, and they make an avatar in about 30 seconds.
- Prompts from shared interests. Gemini writes a prompt from what you have in common, with a backup bank of hand-written prompts.
- Streaks. You can tap in with the same friend once a day. Keep tapping in every week to keep your streak with each friend alive.
- Points and costumes. Tap ins earn points you can spend on outfits and accessories for your avatar.
- Memory photos. Save a photo with each tap in so you remember who you met and where.
- Campus locations. Meeting new people unlocks new plaza scenes drawn from UF landmarks like Century Tower and Plaza of the Americas. Points reward seeing the same friends again, and locations reward meeting new ones.
How we built it
- Hardware: NTAG215 NFC keychains built into keychains. Each one stores a link with a random secret code. iPhones read NFC tags natively, so tapping a keychain opens the link with no extra app.
- Frontend: A mobile web app (PWA) built from our Figma designs and original pixel art, deployed on Vercel.
- Auth: Auth0 for sign up and login.
- Database: Supabase, so one phone's tap updates both users' accounts in real time.
- AI: Gemini API to generate prompts from shared interests, with a fallback prompt bank.
- Design: We designed the brand, avatar parts, sprites, and every screen in Figma before writing code, then each of us built on our own git branch.
Challenges we ran into
- Only one phone per tap. We dropped a USB reader station from our first plan. The other person's phone reads your keychain, so the app has to figure out who owns the keychain and who's holding the phone, then save the tap in for both.
- Fair streaks and points. We enforce one tap in per pair per day so two friends can't farm points by tapping over and over.
- Keeping keychains secure. Keychain links use random codes, not names or user IDs, so nobody can fake a tap in by guessing a URL.
- iPhone NFC quirks. iPhones only read tags when unlocked, and the link opens from a notification, so we designed the flow around that.
- Creating the pixel art avatars. Hand-drawing the avatars was out of our time scope, so we drew a quick sketch of what we wanted the avatars to look like and prompted AI to generate the final product, which took many iterations for it to look as desired.
Accomplishments that we're proud of
- A full loop that works: tap a keychain, see the shared prompt, and find each other in your plazas.
- A design that protects privacy: nicknames only, no location tracking, no contact info shared, and every friend in your plaza is someone you really talked to.
- Figma design: creating the design system with the colors that match the vibe and gamified feel, took 8 hours to fully complete.
What we learned
- How NFC tags and phone link handling work on iPhone.
- How to sync shared data between two users in real time with Supabase.
- How to design game mechanics (streaks, points, unlocks) that reward real-life behavior instead of screen time.
- How to collaborate with AI in creating avatars and generating code.
- How to split up tasks and work simultaneously in Git.
- Hoow important design is in building somehting deliverable and neat.
What's next for Charm
- Android testing and support
- Tap in review, so you can remove a tap in that wasn't you, plus deactivating a lost keychain
- Mutual opt-in to swap socials
- Collections like "Meet someone from 5 different majors"
- More campus locations and costumes, and a puzzle-piece swap featuring art by student artists
- Pilots with clubs and orientation events, where meeting new people matters most
Built With
- auth0
- css
- figma
- gemini
- html
- javascript
- nfc
- ntag215
- pwa
- supabase
- vercel
Log in or sign up for Devpost to join the conversation.