A web application that organizes pop-up flea markets with digital labeling solutions for second-hand clothing. The platform connects sellers with buyers at physical market events using QR code technology for seamless transactions.
Bloem is a circular fashion marketplace that brings sustainability to clothing retail through pop-up markets and digital technology. Sellers can list their second-hand items, rent hangers at physical market locations, and use QR codes to enable buyers to scan and purchase items on the spot.
- Browse upcoming and active markets
- Scan QR codes to view item details and purchase
- Digital wardrobe to upload and showcase personal items
- Seamless cart and checkout experience
- Real-time market updates
- Digital wardrobe management with status tracking (wardrobe/rack/sold)
- Hanger rental system for physical markets
- QR code integration for items
- Item listing and market registration
- Direct payouts to registered IBAN
- Real-time notifications for sales
- Market creation and management
- User and item database access
- QR code generation and management
- Platform oversight and analytics
- Framework: Next.js 14 (App Router)
- Language: TypeScript (strict mode)
- UI Components: Shadcn UI + Radix UI
- Styling: Tailwind CSS
- Form Validation: Zod + react-hook-form
- QR Scanner: @yudiel/react-qr-scanner
- Image Optimization: browser-image-compression
- Platform: Next.js Server Actions with next-safe-action
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth (Email/Password + Google OAuth)
- Storage: Supabase Storage
- Real-time: Supabase Realtime
- Email: Resend + React Email
- Provider: Stripe for Platforms
- Features: Split payments, IBAN payouts, webhook handling
- Hosting: Vercel
- CDN: Supabase CDN
- Monitoring: Sentry (error tracking)
- Browse markets and items
- Scan QR codes to view and purchase
- Upload items to personal wardrobe for display/sharing
- Activate as seller by providing IBAN information
- All Regular User capabilities
- Prepare items for selling (move to "rack")
- Rent hangers at markets
- List items on markets
- Link QR codes to items
- Receive payouts to IBAN
- Full platform management
- Create and manage markets
- Manage users and items
- Generate and manage QR codes
- Process payouts
bloem/
├── src/
│ ├── assets/ # Static assets (fonts, images)
│ ├── backend/ # Backend services and configurations
│ └── frontend/ # Next.js application
├── old version/ # Previous Flutter implementation (archived)
├── AGENTS.md # AI agent instructions
├── Implementation Plan.md
├── Requirements - User Stories.md
└── Roles.md
- Node.js 18+ and npm/yarn
- Supabase account
- Vercel account (for deployment)
- Stripe account (for payments)
- Clone the repository:
git clone https://github.com/DarleneQing/bloem.git
cd bloem- Install dependencies:
cd src/frontend
npm install- Set up environment variables:
cp .env.example .env.localFill in the required environment variables:
- Supabase credentials
- Stripe API keys
- Resend API key
- Other service credentials
- Run the development server:
npm run devOpen http://localhost:3000 in your browser.
The project is being developed in systematic phases:
- ✅ Next.js 14 setup with TypeScript (strict mode)
- ✅ Tailwind CSS & Shadcn UI configuration with purple brand theme
- ✅ Supabase client utilities (browser, server, middleware)
- ✅ Complete database schema (11 tables, 11 enums, 40+ indexes)
- ✅ Row Level Security policies (50+ policies)
- ✅ Development tools (ESLint, Prettier, .env.example)
- ✅ All core dependencies installed
See PHASE_0_COMPLETE.md for details and next steps
- Email/Password authentication
- Google OAuth integration
- User profile management
- Seller activation with IBAN
- Item upload with image compression
- Item metadata management
- Status tracking (wardrobe/rack/sold)
- Privacy settings
- Market creation (Admin)
- Market browsing
- Market registration for sellers
- Hanger rental system
- QR code generation
- QR scanning functionality
- Item-QR linking
- Cart and checkout
- Stripe integration
- Split payment processing
- Seller payouts
- Transaction history
- Live market updates
- Sale notifications
- Inventory sync
- Performance optimization
- SEO implementation
- Testing and bug fixes
- Production deployment
- Implementation Plan - Detailed technical implementation guide
- Requirements & User Stories - Complete user stories and acceptance criteria
- Roles - User roles and permissions overview
The project uses custom brand fonts and imagery:
- Font: Gordita (Black, Bold, Light, Medium, Regular)
- Secondary Font: Lexend Deca
- Brand Colors: Purple theme
- Logo: Available in multiple formats (transparent, white, black-white)
This is currently a private project under active development. Contribution guidelines will be added when the project moves to open development.
Proprietary - All rights reserved
For inquiries about the project, please contact the repository owner.