The landing site is live at barfriends-web.vercel.app (source). The app lives in elritz/barfriends-reactnative.
Feature
Emoji moods
Pick one emoji mood for the night. Its gradient tints your Tonight screen and profile, so friends see how your night feels before they see where you are.
Feature
Joining a bar is your choice
Being counted at a venue is anonymous. You only show up once you tap Join, and you can leave any time.
Connector
One tap to get there
Every venue has a ride card that opens Uber with the drop-off set to the venue. Uber was the first connector, and the pattern fits any service that takes a location.
Feature
Messaging for the night out
Direct and group chats with threaded replies. A message can carry a request, so asking someone to dance or offering a drink happens right in the chat.
The business
- Registered as a business, with the company holding the brand, the apps, and the developer accounts
- D-U-N-S number from Dun & Bradstreet, the business identity Apple and Google require for an organization developer account
- Corporate taxes filed for every year the company has been active
- Business plan built around the local advertising model below, with expansion planned city by city
The idea
Going out is social, but nothing tells you where people actually are. Barfriends answers one question: what's popular tonight, and who's there? Open the app and see the venues near you that are busy right now, then decide whether to join the one you're in. Your friends' nights land in one feed, each tinted by their mood, and messaging keeps the group together.
For venues and advertisers it is a local channel. A micro-brewery or a mid-sized restaurant group can run a promotion to the 18 to 25 crowd in one city without buying a national campaign. That local ad model is how the app was meant to pay for itself.
I ran the whole thing solo: brand, product design, the mobile app, the backend, and the marketing site.




The design
A solo project needs a design system that scales, or every new screen costs a redesign. The Figma files are split so the global foundations (colour, type, components) live in one place and each flow gets its own local file that pulls from them. That kept wireframing fast and let a prototype grow into production screens without starting over.
- Brand identity, product research, and design iterations
- A design system organised into global foundations and per-flow files
- Wireframes first, then full designs and clickable prototypes for mobile and web
The embeds below load on demand. Click one to open it.
The rest of the files: Search, Localization, Venue profile, Venue creation, and Advertising.
The tech
Mobile
An Expo and React Native app for iOS and Android.
- Location-based explore, so the feed is built around where you are
- Deep linking and push notifications
- Theme scaffolding with dark and light mode
- State standardised on Apollo GraphQL and reactive variables
- Custom and generic hooks, memoised where it made a measurable difference
Backend
A GraphQL server on Node, Prisma, and Postgres.
- Join and leave venues, with a history of where you've been
- Location-based explore with H3 geospatial indexing and a search-history resolver
- Location-based advertisement resolvers
- Full-text search
- Multimedia messaging
- JWT access and refresh token authentication for web and mobile clients
- Push notification service driven by GraphQL subscriptions over WebSockets
- Device profiles: one device holds several profiles, switches between them fast, and any profile can be logged out remotely
The outcomes
- A working iOS and Android app with the explore, join, profile, and messaging flows built end to end
- A GraphQL backend with auth, messaging, push, and location search
- A design system and nine Figma files covering every flow, from onboarding to advertising
- A marketing site, live on Vercel
Barfriends stopped short of a store release, and the repo is archived now. The plan past launch was data driven: in-app surveys and analytics feeding Python (NumPy and pandas) analysis to guide expansion city by city, seeded with local venue and influencer partnerships. What stayed with me is the habit of carrying one idea through brand, design, data, and code, which is still how I work.
Tech stack
Mobile
- Expo
- React Native
- React
- TypeScript
- Apollo Client
- gluestack UI
Backend
- Node
- Express
- GraphQL
- Apollo Server
- Prisma
- PostgreSQL
- H3
- Go
Tooling
- AWS
- Docker
- Vercel
- Jest
- GitHub
- Figma
