CIS553 Fall 2025 - Software Engineering Project
Sell anything instantly by taking a photo. Our AI handles pricing, multi-platform posting, buyer communication, and pickup scheduling automatically.
Sold revolutionizes online selling by automating the entire process:
- πΈ Take a photo of your item
- π€ AI analyzes and suggests optimal pricing
- π One-click post to Facebook Marketplace, Craigslist, OfferUp, 5miles
- π¬ AI agent chats with buyers to negotiate and schedule pickup
- π° Get paid via Venmo/Zelle
π Complete Documentation Index - All documentation organized
Quick Links:
- Project Proposal - Main submission (Due 10/3)
- Current Status - What's built vs. planned
- Start App Guide - How to run locally
- Facebook API Guide - Complete integration guide
Planning:
- Team Tasks - Sprint planning & assignments
- Tech Stack - Architecture & technology decisions
- Requirements Mapping - CIS553 compliance
sold/
βββ backend/ # Express.js REST API (TypeScript)
βββ mobile/ # React Native app (iOS & Android)
βββ shared/ # Shared TypeScript types & validators
βββ docs/ # Documentation
βββ .github/ # CI/CD workflows
Backend
- Node.js 20 + Express.js + TypeScript
- PostgreSQL 15 (Prisma ORM)
- Redis (Bull queue for jobs)
- AWS S3 (image storage)
Mobile
- React Native 0.72+
- TypeScript
- Zustand (state management)
- React Navigation
AI/ML Services (Third-party APIs)
- OpenAI Vision API (image analysis)
- OpenAI GPT-4 (conversational agent)
Integrations
- Google/Facebook OAuth
- Stripe (payments)
- Google Calendar
- Marketplace APIs (Facebook, Craigslist, etc.)
We provide automated setup scripts for easy onboarding:
# Clone the repository
git clone <repository-url>
cd sold
# Run the setup script
chmod +x setup-mac.sh
./setup-mac.shThe script will:
- β Install Homebrew (if needed)
- β Install Node.js 20, pnpm, PostgreSQL, Redis, Watchman
- β Install project dependencies
- β Set up environment files
- β Create database and run migrations
- β Optionally start iOS simulator or web browser
# Clone the repository
git clone <repository-url>
cd sold
# Run the setup script (in Git Bash, WSL, or Linux terminal)
chmod +x setup-pc.sh
./setup-pc.shThe script will:
- β Check for Node.js 20+ and pnpm
- β Guide PostgreSQL and Redis installation
- β Install project dependencies
- β Set up environment files
- β Create database and run migrations
- β Choose between Android emulator or web browser
Click to expand manual installation steps
Required:
Optional (for full features):
- Redis 7 (for background jobs)
- AWS account (for S3 image storage)
- OpenAI API key (for AI features)
Platform-Specific:
- macOS: Xcode (for iOS simulator), CocoaPods, Watchman
- Windows: Android Studio (for Android emulator)
- Linux/WSL: Android Studio (for Android emulator)
-
Install pnpm globally
npm install -g pnpm
-
Install project dependencies
pnpm install
-
Set up environment variables
# Backend environment cp backend/.env.example backend/.env # Edit backend/.env with your credentials
-
Set up database
# Create database (PostgreSQL must be running) createdb sold_dev # Run migrations cd backend pnpm prisma generate pnpm prisma migrate dev cd ..
-
Build shared package
pnpm shared:build
-
Start development servers
# Terminal 1: Backend pnpm backend:dev # Terminal 2: Mobile (choose one) pnpm mobile:ios # iOS simulator (macOS only) pnpm mobile:android # Android emulator pnpm mobile:web # Web browser (easiest)
Requirements:
- macOS 12+ (Monterey or later)
- Xcode 14+ (Download from App Store)
- CocoaPods (
sudo gem install cocoapods) - Watchman (
brew install watchman)
Setup:
# Accept Xcode license
sudo xcodebuild -license accept
# Install CocoaPods dependencies (if needed)
cd mobile/ios && pod install && cd ../..
# Start iOS simulator
pnpm mobile:iosRequirements:
- Android Studio (Download)
- Java JDK 11+
- Android SDK (API level 33+)
Setup:
- Install Android Studio
- Open Android Studio > Settings > Android SDK
- Install SDK Platform 33 and SDK Build-Tools
- Create a virtual device (AVD) via AVD Manager
- Set environment variables:
# Add to ~/.bashrc, ~/.zshrc, or ~/.bash_profile export ANDROID_HOME=$HOME/Library/Android/sdk # macOS export ANDROID_HOME=$HOME/Android/Sdk # Linux/WSL export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/platform-tools
- Start emulator and run:
pnpm mobile:android
Requirements:
- Modern web browser (Chrome, Firefox, Safari, Edge)
- Node.js 20+
Setup:
# Just run the web server
pnpm mobile:webYour default browser will open automatically at http://localhost:19006
After setup, edit backend/.env with your API keys:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/sold_dev"
# Redis (optional for development)
REDIS_URL="redis://localhost:6379"
# JWT
JWT_SECRET="your-secret-key-here"
JWT_REFRESH_SECRET="your-refresh-secret-here"
# OpenAI (required for AI features)
OPENAI_API_KEY="sk-..."
# AWS S3 (required for image uploads)
AWS_ACCESS_KEY_ID="..."
AWS_SECRET_ACCESS_KEY="..."
AWS_S3_BUCKET="sold-images-dev"
AWS_REGION="us-east-1"
# Google OAuth (optional)
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
# Facebook OAuth (optional)
FACEBOOK_APP_ID="..."
FACEBOOK_APP_SECRET="..."
# Stripe (optional)
STRIPE_SECRET_KEY="sk_test_..."
STRIPE_PUBLISHABLE_KEY="pk_test_...""Command not found: pnpm"
npm install -g pnpmPostgreSQL connection error
# macOS
brew services start postgresql@15
# Linux/WSL
sudo service postgresql start
# Windows
# Start PostgreSQL via Services or pgAdmin"ANDROID_HOME not set"
# Add to your shell profile
export ANDROID_HOME=$HOME/Library/Android/sdk # macOS
export ANDROID_HOME=$HOME/Android/Sdk # LinuxPort already in use
# Backend (default: 3000)
lsof -ti:3000 | xargs kill -9
# Expo (default: 19000)
lsof -ti:19000 | xargs kill -9iOS build fails
cd mobile/ios
pod install
cd ../.."Watchman crawl failed" (macOS)
watchman watch-del-all# Run all tests
pnpm test
# Run backend tests with coverage
pnpm backend:test
# Run mobile tests
pnpm mobile:test
# Run linter
pnpm lint
# Format code
pnpm formatsrc/routes/- API endpointssrc/controllers/- Business logicsrc/services/- External integrations (OpenAI, Stripe, etc.)src/middleware/- Auth, validation, error handlingprisma/- Database schema & migrationstests/- Unit & integration tests
src/screens/- App screens (Auth, Camera, Listings, etc.)src/components/- Reusable UI componentssrc/navigation/- React Navigation setupsrc/store/- Zustand state managementsrc/services/- API client
src/types/- TypeScript interfacessrc/constants/- Shared constantssrc/validators/- Zod validation schemas
- Create feature branch:
git checkout -b feature/task-name - Write tests first (TDD approach)
- Implement feature
- Run tests:
pnpm test - Commit:
git commit -m "feat: add feature description" - Push & create PR: GitHub Actions runs CI
- Code review (1 approval required)
- Merge to main (auto-deploy to staging)
14-week development schedule (7 sprints)
| Sprint | Dates | Deliverable |
|---|---|---|
| 1 | Oct 2-15 | Foundation + Auth |
| 2 | Oct 16-29 | Profiles + AI Pricing |
| 3 | Oct 30-Nov 12 | Item Creation + Platform Posting |
| 4 | Nov 13-26 | AI Chat + Scheduling |
| 5 | Nov 27-Dec 10 | Payments + Listings |
| 6 | Dec 11-24 | Notifications + Deployment |
| 7 | Dec 25-Jan 7 | App Stores + Launch |
6-Person Development Team
- Backend Dev 1: Authentication, User Management, Images
- Backend Dev 2: Platform Integrations, AI Services, Payments
- Mobile Dev 1: Auth, Camera, Item Creation
- Mobile Dev 2: Listings, Conversations, Notifications
- DevOps Engineer: Infrastructure, CI/CD, Deployment
- AI Engineer: Price Detection, Chat Agent, NLP
- Jira: Sprint planning, task tracking
- GitHub: Source control, PR reviews
- Confluence: Documentation (optional)
- Bcrypt password hashing (12 rounds)
- JWT tokens (15min access, 7day refresh)
- HTTPS only
- Input validation (Zod schemas)
- SQL injection prevention (Prisma)
- File upload validation
- Rate limiting
Revenue Models (A/B testing):
- Per-post: $0.50/post
- Subscription: $6/month unlimited
- Transaction fee: 5% of sale
This project is part of CIS553 coursework at UMD.
- Follow the coding standards (ESLint + Prettier)
- Write tests for new features
- Update documentation
- Create meaningful commit messages (Conventional Commits)
- Request code review before merging
- Facebook Marketplace API research (may need manual posting)
- Legal review for platform automation
- Instructor approval for OpenAI API usage
- Team size confirmation (6 vs 5 members)
Project Lead: Broderick Higby Course: CIS553 Fall 2025 Institution: University of Michigan Dearborn
Phase 1 Status: β Complete
- Requirements reviewed
- Tech stack defined
- Database schema designed
- Monorepo structure created
- Testing framework configured
- Backend auth implementation (next)