Inspiration

I wanted to bring circular fashion to everyone by making clothing swaps as fun as dating apps.

What I Built

A swipe-based mobile & web app where I list items, match on clothes I love, and arrange swaps with other users.

Lessons Learned

  • Managing real-time state with Bolt.new, handling i18n, and integrating third-party SDKs.

Challenges

  • Ensuring immediate UI updates on “Add Product” and full localization on language switch.

Tech Stack

Core Technologies

  • Expo SDK 52 (cross-platform framework)
  • Expo Router (file-based navigation)
  • React Native Web (web rendering)
  • TypeScript (static typing)

UI/UX & Design

  • Expo Linear Gradient (gradients & visual effects)
  • Lucide React Native (SVG icon library)
  • Expo Google Fonts (Inter) (professional typography)
  • React Native Safe Area Context (safe-area handling)
  • Expo Status Bar (status bar control)

Native Features

  • Expo Image Picker (image selection & upload)
  • Expo Location (geolocation)
  • Expo Camera (camera support; disabled on web)
  • Expo Web Browser (external link opening)

Authentication & Persistence

  • Bolt.new Auth (native sign-up & login)
  • Express API (user and product persistence)
  • Expo Secure Store (secure token storage)

Internationalization

  • Custom i18n system (Spanish, English, German)
  • React Context API for global language state

State Management

  • React Context API for auth, products & locale
  • Custom React Hooks (useState, useEffect, useContext)

App-Specific Features

  • Swipe-to-match system (like/pass)
  • Recommendation algorithm based on preferences
  • Sustainability scoring per item
  • Premium matches marked with a crown badge
  • Real-time chat with history & read receipts
  • Full CRUD for products, material categorization & multi-image upload
  • Subscription tiers (basic & premium) with exclusive features

External APIs & Services

  • Pexels (stock images for listings)
  • BigDataCloud (reverse geocoding)
  • Bolt.new (prompt-driven development platform)

Web-Specific Features

  • Responsive design across all screen sizes
  • PWA-ready configuration
  • SEO-optimized metadata & structure

Custom Components

  • SwipeCard (swipeable product cards)
  • ProductThumbnail (interactive product previews)
  • LanguageToggle (locale switcher)
  • PremiumCrown (premium user indicator)
  • ConfettiCelebration (celebratory animation)

Security & Privacy

  • Multi-factor authentication
  • Privacy policy compliance
  • Permissions management (location, camera, storage)
  • Form validation & error handling

How I Built It

I started with zero prior app-building knowledge and, in just four days, turned a written Lean Canvas into a functional prototype. Bolt.new’s prompt-driven interface taught me to craft clear requests and refine my prompts for maximum efficiency—so my effort focused on perfecting the idea, not wrestling with boilerplate. I used Expo Router for navigation, NativeWind for styling, and a lightweight Express API for persistence. The core swipe-and-match flow lives in Bolt’s reactive store, and I deployed the web app to Netlify under my custom domain (toma-daca.site) with DNS managed in IONOS.

Challenges I Ran Into

  • Initial Supabase integration broke my registration flow, so I reverted to Bolt.new’s native auth.signUp.
  • Language switches only updated button labels until I refactored every component to consume i18n.currentLocale.
  • “Add Product” POSTs succeeded but didn’t refresh the web UI; I unified my onSuccess handler to insert new items into both store.user.products and the public discover feed.
  • Expo Router on web threw a registerError due to a route name collision; I fixed it by moving register.tsx into an (auth) folder and updating my layout.

Accomplishments I’m Proud Of

  • Going from zero to a polished, bilingual swipe-and-swap app in days.
  • Real-time product updates: newly added items appear instantly in “My Products” and Discover.
  • Full bilingual support with no hard-coded strings.
  • Custom domain live (toma-daca.site) with the “Built with Bolt.new” badge.
  • First-time Bolt.new and Expo Router user shipping a production-ready experience.

What I Learned

  • How powerful and intuitive Bolt.new is for rapid prototyping and state reactivity.
  • The art of writing clear, targeted prompts to drive code generation.
  • Best practices for global i18n in React/Expo and avoiding route collisions in Expo Router.
  • That refining my idea and prompts can be more impactful than hand-coding every detail.

What’s Next for TOMA-DACA

  • Conduct user testing to refine interactions and catch edge cases.
  • Polish micro-interactions and UI feedback.
  • Integrate RevenueCat for a “Premium Swapper” subscription and ElevenLabs TTS for richer product descriptions.
  • Publish on the App Store and continue web enhancements to monetize my vision.
  • Expand translations, launch a public beta, and grow my community of eco-enthusiasts.

Built With

  • bigdatacloud
  • bigdatacloud-api
  • bolt.new
  • bolt.new-auth
  • custom
  • custom-i18n-system
  • expo-camera
  • expo-google-fonts-(inter)
  • expo-image-picker
  • expo-linear-gradient
  • expo-location
  • expo-router
  • expo-sdk-52
  • expo-secure-store
  • expo-status-bar
  • expo-web-browser
  • expo.io
  • express-(node.js)
  • express.js
  • ionos
  • ionos-dns
  • lucide
  • lucide-react-native
  • nativewind
  • netlify
  • pexels
  • pexels-api
  • pwa-ready
  • pwa-ready-configuration
  • react
  • react-context-api-&-hooks
  • react-native-safe-area-context
  • react-native-web
  • seo-optimized
  • typescript
Share this project:

Updates