BETI - your all-in-one fashion companion for discovering brands, organizing your digital closet, creating outfits, and planning purchases with visual moodboards.
Beti is a web and iOS fashion platform that brings thousands of brands and retailers into one place. Users can browse products, manage a digital closet of their own wardrobe, and build outfits from what they already own. Instead of holding inventory, Beti links directly to brand websites for checkout while providing powerful tools like visual moodboards, wishlists, and outfit planning to help users curate their personal style.
Beti Fashion Platform - Technical Overview
Core Features & Functionality
Beti is a comprehensive fashion platform that bridges the gap between discovery, organization, and shopping across thousands of brands and retailers. At its core, the app offers a universal search capability that allows users to browse products from any fashion brand in one unified interface, powered by ShopStyle API integration that provides access to millions of products from over 1,000 retailers. The Digital Closet feature enables users to create a complete virtual wardrobe by uploading photos of items they already own or adding products they've purchased through the app, with sophisticated organization tools including filtering by category, brand, color, and season—complete with wardrobe value tracking.
The Outfit Builder is a standout feature that lets users mix and match items from their digital closet to create complete looks, save their favorite combinations, and share outfits with friends, making it easy to visualize styling options before getting dressed. Moodboards provide a Pinterest-like experience where users can pin inspiration images, plan future purchases, create themed style boards, and maintain visual wishlists for items they're eyeing. The integrated Wishlist system ties everything together by allowing users to save favorite products across all brands with priority levels and notes, creating a unified shopping planning experience. Additionally, the app includes a Smart Checkout System with a browser extension and automated bot that can streamline the purchasing process by navigating to brand websites and facilitating faster checkout experiences.
The web application is built with Next.js 14 using the modern App Router architecture, React 18, and TypeScript for type safety throughout the codebase. The styling is handled by Tailwind CSS, providing a utility-first approach that ensures consistent, responsive design across all screen sizes. For enhanced user interactions, the app leverages Framer Motion for smooth animations and transitions, creating a polished, app-like experience in the browser. State management is handled elegantly with Zustand, a lightweight alternative to Redux that provides a simple, hooks-based API for managing global state including user authentication, shopping cart, and wishlist data.
The component architecture follows modern React best practices with a clear separation of concerns: the src/app directory contains page-level components using Next.js's file-based routing, while src/components houses reusable UI components like ProductGrid, Navigation, AddToCartModal, and BrandList. The app uses axios for HTTP requests with interceptors for authentication token injection, and react-dropzone for intuitive drag-and-drop image uploads to the digital closet. React Icons provides a comprehensive icon library, while react-image-gallery delivers a beautiful, performant image viewing experience for product photos. The TypeScript integration provides compile-time type checking, IntelliSense support, and improved developer experience with auto-completion for API responses and component props.
frontend architecture
The iOS app is built as a native Xcode project using Swift and SwiftUI, Apple's modern declarative UI framework, ensuring optimal performance and a truly native iOS experience. Unlike hybrid or React Native approaches, this native implementation provides full access to iOS APIs, including the camera for capturing closet items, CoreData for local storage, and native gesture recognizers for smooth interactions. The app features a beautiful mint green theme that matches the web app's branding, creating a cohesive cross-platform experience. The SwiftUI architecture leverages modern Swift concurrency with async/await patterns for API calls, ensuring responsive UI updates without blocking the main thread.
The iOS app implements JWT-based authentication with secure token storage in UserDefaults (with plans for Keychain integration for enhanced security), maintaining user sessions across app launches. The APIService layer provides a clean abstraction for all backend communication, using Codable protocols for type-safe JSON serialization and deserialization. The app mirrors all major features from the web platform, including the home screen with featured brands and products, product browsing with real-time search, the complete digital closet management system, outfit creation and management, moodboard organization, and a comprehensive user profile with settings. The native implementation means users get familiar iOS design patterns like pull-to-refresh, native navigation controllers, haptic feedback, and seamless integration with iOS system features.
native ios application
The backend is powered by Node.js with Express.js, creating a robust RESTful API that serves both the web and iOS applications. At the database layer, PostgreSQL provides reliable, scalable data storage with ACID compliance, while Prisma ORM serves as the database toolkit, offering type-safe database queries, automatic migrations, and an intuitive schema definition language. The Prisma Client generates TypeScript types directly from the database schema, ensuring end-to-end type safety from database to frontend.
Security is handled through JWT (JSON Web Tokens) for stateless authentication, bcryptjs for secure password hashing with salt rounds, and Helmet middleware for setting secure HTTP headers. The API implements role-based access control and input validation using express-validator to prevent SQL injection and XSS attacks. Image management is handled by Cloudinary, a cloud-based media management platform that provides automatic image optimization, transformation on-the-fly (resizing, cropping, format conversion), and a robust CDN for fast global delivery of user-uploaded photos. Multer handles multipart form data for file uploads, while Morgan provides HTTP request logging for debugging and monitoring.
The backend's modular architecture organizes routes by feature (auth.js, products.js, closet.js, outfits.js, moodboards.js, wishlist.js, brands.js), with a centralized authentication middleware that validates JWTs and attaches user data to requests. The Amazon Product Advertising API (PAAPI) integration allows for real-time product data fetching, while the Puppeteer automation framework (with puppeteer-extra and stealth plugins) powers the smart checkout bot that can navigate e-commerce sites. The database schema uses foreign key relationships to maintain data integrity, with models for Users, Brands, Products, ClosetItems, Outfits (with many-to-many relationships to ClosetItems), Moodboards, MoodboardItems, and Wishlist entries. The API runs by default and includes comprehensive CORS configuration to allow cross-origin requests from the web app while maintaining security.
Development workflow is streamlined with nodemon for automatic server restarts during development, Prisma Studio for visual database management, and seed scripts that populate the database with sample brands and products from Nike, Zara, H&M, and other major retailers. The entire stack is designed to scale horizontally, with stateless API design that allows multiple server instances behind a load balancer, and the PostgreSQL database can be upgraded to managed services like AWS RDS or Heroku Postgres for production deployments.
This architecture demonstrates a modern, production-ready approach to building a cross-platform fashion application with strong emphasis on performance, security, developer experience, and maintainability.