Your campus marketplace awaits - Connect with fellow Longhorns to buy, sell, and discover amazing deals right on campus.
A React Native mobile application built with Expo that provides University of Texas students with a dedicated platform for buying and selling items within the campus community.
- Browse & Search - Discover items with advanced filtering by category, price, condition, and more
- Create Listings - Post items for sale with photos, descriptions, and pricing
- Categories - Organized sections including Furniture, Tech, Books, Clothing, Housing, and more
- Real-time Updates - Live notifications for favorites, messages, and listing interactions
- In-App Messaging - Direct chat with buyers and sellers
- Push Notifications - Stay updated on messages and listing activity
- User Ratings - Rate and review your trading partners
- Personalized Feed - Recent listings and recommendations
- Favorites & Watchlist - Save items you're interested in
- User Profiles - View seller history and ratings
- Authentication - Secure login and registration system
- UT-Themed UI - Burnt orange color scheme matching UT branding
- Intuitive Navigation - Tab-based navigation with modal flows
- Responsive Design - Optimized for both iOS and Android
- Haptic Feedback - Enhanced user interactions
- Node.js (v18 or higher)
- Expo CLI
- iOS Simulator (for iOS development) or Android Studio (for Android development)
- Supabase account for backend services
-
Clone the repository
git clone <repository-url> cd ut-marketplace-app
-
Install dependencies
npm install
-
Set up environment variables Create a
.envfile in the root directory:EXPO_PUBLIC_SUPABASE_URL=your_supabase_url EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Start the development server
npm start
# Start development server
npm start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Build for development
npm run build:dev
# Build for production
npm run build:prod
# Lint code
npm run lint
# Format code
npm run format- React Native - Mobile app framework
- Expo - Development platform and toolchain
- Expo Router - File-based routing system
- TypeScript - Type-safe JavaScript
- NativeWind - Tailwind CSS for React Native
- Zustand - State management
- Lucide React Native - Icon library
- Supabase - Backend-as-a-Service
- PostgreSQL - Database (via Supabase)
- Real-time subscriptions - Live updates
- Row Level Security - Data protection
- ESLint - Code linting
- Prettier - Code formatting
- EAS Build - Cloud builds
- Expo Dev Client - Custom development builds
app/
βββ (auth)/ # Authentication screens
βββ (tabs)/ # Main tab navigation
βββ (modals)/ # Modal screens
βββ chat/ # Messaging system
βββ listing/ # Listing details
βββ ...
components/
βββ ui/ # Reusable UI components
βββ forms/ # Form components
βββ layout/ # Layout components
βββ listing/ # Listing-specific components
βββ modals/ # Modal components
lib/
βββ supabase.ts # Database configuration
βββ notifications.ts # Notification services
βββ ...
contexts/
βββ AuthContext.tsx # Authentication state
βββ ...
- Supabase Auth integration
- Row Level Security (RLS) policies
- Email-based authentication
- Secure user sessions
- Live chat messaging
- Push notifications
- Real-time listing updates
- Instant favorite/watchlist sync
- PostgreSQL with Supabase
- Optimistic UI updates
- Image upload and storage
- Advanced search and filtering
- UT brand compliance
- Smooth animations and transitions
- Haptic feedback integration
- Responsive design patterns
The app uses Expo with custom development builds enabled. Key configurations:
- File-based routing with Expo Router
- TypeScript paths for clean imports
- Custom splash screen and icons
- Platform-specific configurations
- Users and authentication
- Listings with categories and images
- Messaging system
- Favorites and watchlist
- Ratings and reviews
- Push notification tokens
npm run build:devnpm run build:prodThe app is configured for deployment through EAS Build with separate profiles for development, preview, and production environments.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use ESLint and Prettier for code formatting
- Write meaningful commit messages
- Ensure all features work on both iOS and Android
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ for the University of Texas community
- University of Texas for the inspiration
- Expo team for the amazing development platform
- Supabase for the backend infrastructure
- The React Native community
Hook 'em Horns! π€