Inspiration

As students living in Chapel Hill for the past 3+ years, we have watched beloved Franklin Street spots, from cafés to clothing shops, struggle to keep foot traffic steady. During our time here, we have seen multiple spots we used to frequent even have to shut down due to this lack of foot traffic. Meanwhile, UNC students and visitors are constantly looking for affordable ways to eat, shop, and explore town. Living on the college budget makes it hard to support local spots that are more often at higher price points than accessible food chains, like Chick-fil-A, Raising Cane's, and McDonald's. On top of that, many pre-existing business-focused applications, whether it be delivery apps or pickup order systems, take significant cuts from restaurants, and most “rewards” programs are confusing, credit-based, or chain-focused.

What it does

Localized connects local businesses with students through a gamified, credit-free reward system. Each week, users can browse a rotating Lineup of deals from restaurants, shops, and studios. They can claim one free coupon per week and unlock another by sharing the app, turning local support into a fun, social experience. Businesses can publish and manage their offers while tracking redemptions in real time through a lightweight backend dashboard. Students redeem rewards in-store using dynamically generated QR codes, verified through a secure backend.

How we built it

Localized was developed with a Swift/ SwiftUI iOS frontend and a FastAPI + PostgreSQL backend, designed for speed, modularity, and security.

Frontend: Built in Swift MVVM architecture for modular design between Business, User, and Authentication flows, and smooth state management. Integrated AVFoundation package for camera usage, CodeScanner package for QR code scanning, Map Kit to create interactive Map UI with pinned and expandable restaurant information, and custom data decoding and encoding for coupons.

Backend: Developed with Python (FastAPI) and SQLModel, powered by PostgreSQL, specifically an AWS RDS instance. Used JWT for secure authentication and protected endpoints, as well as used AWS S3 bucket for image and other important file storage capabilities

Design: Our design process was extensive, and we used Apple-native tools, including Icon Composer (Swift iOS 26) for creating our liquid-glass style branding and interface icons, and Pixelmator Pro (Apple-owned) for crafting our logo and visual identity. The result is a sleek, modern interface that feels fluid and true to Apple’s design philosophy while maintaining a fun, community-driven aesthetic.

Challenges we ran into

Integrating the backend and decoding data across 17 API routes spread over six major service categories was one of the most demanding parts of development. We had to ensure every route returned data in a format that the SwiftUI frontend could reliably decode, which ended up requiring extensive debugging, payload inspection between the FastAPI models, and Swift struct interactions.

Implementing the QR code redemption flow came with its own hurdles. Getting the scanner to recognize dynamic codes, handle state changes, and dismiss modals smoothly in Swift took multiple redesigns and testing cycles to achieve a clean and smooth experience.

On the infrastructure side, provisioning our AWS RDS database and S3 bucket required careful setup of inbound traffic rules to ensure accessibility. Finally, deploying the FastAPI backend through Vercel proved to be quite difficult, setting up the requirements.txt, ensuring dependencies built correctly, and confirming that Vercel recognized the app root properly.

Overall, each fix taught us something new and valuable about scalability, frontend and backend interaction, and deployment pipelines.

Accomplishments that we're proud of

We are proud that despite the complex system architecture, we successfully launched a fully functional, end-to-end platform, integrating our Swift frontend with live Python-based backend routes, authentication, and real QR code generation and redemption.

We built an extensive 17-route API ecosystem from scratch that supports user registration, authentication, coupon creation, redemption, and business management. Our infrastructure now seamlessly connects AWS RDS, S3, and a live FastAPI server with a Swift/SwiftUI frontend.

On the frontend, we created an interactive Lineup picking experience, a QR-based coupon flow, and a clean UI that mirrors modern Apple design guidelines. From properly Bcrypt-hashed authentication tokens to production-ready deployment, every piece of this system communicates securely and efficiently.

What we learned

We learned how critical consistency and communication are in full-stack development, not just between teammates, but between systems. Aligning data models between Python and Swift required us to think deeply about type safety and openly check in with each other about formatting and any updates any of us had made at a given moment.

We also learned that infrastructure setup is not just a menial backend task, but it truly affects how features perform in production. Understanding how to configure AWS permissions, environment variables in Vercel, and CORS policies gave us real-world infrastructure development experience.

Most importantly, we learned how to bridge creativity and engineering discipline: designing a product that’s not only technically solid but also delightful to use, all while staying true to our mission of supporting local businesses.

What's next for Localized

Next, we would love to continue this project and launch a pilot with 10 to 15 Franklin Street businesses this semester. Our upcoming milestones include:

  • Business dashboards for analytics (redemptions, engagement, customer insights)
  • Social media integration and sharing incentives to drive organic growth and word-of-mouth
  • Expansion to Carrboro and Durham businesses
  • Long-term goal: Scaling Localized to other college towns like Athens, Berkeley, and Ann Arbor, each version adapted to its own community

We have great visions for this application, expanding it greatly so we can achieve our main three goals: students save, businesses grow, and the community flows!

Built With

Share this project:

Updates