aDress — About the Project
1. Overview
aDress is a cross-platform mobile application designed to solve a universal social fashion dilemma: coordinating event outfits, preventing embarrassing duplicate dresses or clashing suits, and building private, shared photo galleries for major celebrations.
Whether it is a high school formal, wedding, milestone birthday, prom, or charity gala, aDress replaces messy group chats and screenshot albums with an elegant, private, and localized event outfit hub.
2. The Problem & The Solution
The Problem
- Outfit Clashes: Attendees frequently worry about wearing the exact same outfit or color as someone else, leading to anxiety and awkward moments.
- Chaotic Group Chats: Coordinating looks across SMS, WhatsApp, and Instagram DMs is fragmented, unorganized, and lacks privacy controls.
- Transient Photo Sharing: Event photos get lost in personal camera rolls and are rarely collected into a single, high-quality private gallery accessible to all guests.
The Solution
- Private Event Hubs: Hosts create invite-only event spaces with verified attendees.
- Visual Outfit Board: Guests upload photos of their planned dresses, suits, and accessories before the event.
- Real-Time Social Interaction: Attendees comment, react, and coordinate accessories in one place.
- Shared Event Memories: During and after the event, guests upload high-resolution photos into a dedicated, privacy-protected event gallery.
3. Core Features
🌟 Event Creation & Management
- Rich Details: Event name, date, time, description, and interactive Google Maps venue integration.
- Visual Cover Photos: Hosts can upload custom cover artwork or use dynamic placeholders.
- Host Moderation: Event creators can enable/disable comments, enforce photo moderation queues, and approve or reject join requests.
🔗 Frictionless Sharing & Universal Deep Links
- Viral App Links: Custom deep links (
https://www.adress.com.au/join/:code) route directly into the mobile app on both iOS and Android. - QR Codes & Native Share: One-tap sharing via OS share sheets, QR codes, SMS, WhatsApp, Messenger, and email.
🌍 Global Reach & Internationalization
- 15 Native Locales: Full localization in English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Turkish, Greek, Bulgarian, Swedish, Polish, Afrikaans, and Traditional/Simplified Chinese.
- Locale-Aware Formatting: Dates, times, and UI strings automatically conform to device region preferences.
🔒 Privacy by Design & Security
- Zero-Password SSO: Seamless authentication with Google Sign-In and Apple Sign-In.
- EXIF Stripping: All uploaded photos are automatically sanitized with
sharpto remove privacy-sensitive metadata (e.g. GPS coordinates). - Automated Data Retention: Automated 48-hour event soft-delete and purge pipelines via Google Cloud Scheduler ensure data minimization and GDPR compliance.
💎 Monetization & Subscriptions
- Google AdMob: Integrated banner ads for free-tier users.
- In-App Subscriptions: Powered by RevenueCat for annual VIP upgrades ($4.99/yr) unlocking unlimited event creation, ad-free experience, and expanded attendee limits.
4. Technology Stack & Architecture
Frontend (Mobile App)
- Framework: React Native / Expo SDK 55 (TypeScript)
- State & Data Fetching:
@tanstack/react-query(React Query) - Secure Storage:
expo-secure-store(Encrypted Keystore / Keychain) - Animations:
react-native-reanimated(60fps fluid UI) - Monetization:
react-native-google-mobile-ads&react-native-purchases(RevenueCat) - Push Notifications:
expo-notifications
Backend (API Service)
- Runtime & Framework: Node.js 22 / Express (TypeScript)
- Deployment: Google Cloud Run containerized via Docker (
australia-southeast1) - Database: Google Cloud SQL (PostgreSQL)
- Object Storage: Google Cloud Storage (GCS)
- Image Processing:
sharp(High-performance EXIF stripping and thumbnail generation) - Secret Management: Google Secret Manager
5. Engineering Challenges & Breakthroughs
High-Density Shared Wi-Fi Rate Limiting:
- Challenge: During live school formals and parties, hundreds of guests on the same venue Wi-Fi or cellular CGNAT IP generated rapid bursts of photo uploads and comments, causing standard IP-based rate limiters to trigger false-positive
429 Too Many Requestslockouts. - Solution: Engineered a hybrid rate-limiter behind Cloud Run's
trust proxythat isolates quotas per authenticated user token rather than by IP address, paired with a generous 5,000 req / 15-minute threshold.
- Challenge: During live school formals and parties, hundreds of guests on the same venue Wi-Fi or cellular CGNAT IP generated rapid bursts of photo uploads and comments, causing standard IP-based rate limiters to trigger false-positive
Universal App Linking Across OS Versions:
- Challenge: Android 12+ and iOS 18+ strictly enforce domain association verification before allowing deep links to bypass the browser.
- Solution: Configured and verified Digital Asset Links (
assetlinks.json) with both EAS upload and Google Play App Signing SHA-256 certificate fingerprints, alongside Apple App Site Association (apple-app-site-association) served with direct in-memory fallback routing on Cloud Run and FTP.
6. Project Links & Availability
- Official Website: https://www.adress.com.au
- Google Play Store: Download on Google Play
- Apple App Store: Download on App Store
- Source Code Repository: GitHub Repository
Built With
- cloudflare
- expo-notifications
- expo.io
- express.js
- google-cloud
- google-cloud-run
- google-cloud-sql
- google-mobile-ads
- i18n
- node.js
- postgresql
- react-native
- revenuecat
- secret-manager
- sharp
- typescript
Log in or sign up for Devpost to join the conversation.