TigerPop — Campus Marketplace, Reimagined
Inspiration
TigerPop began from a common, frustrating campus problem: students constantly need textbooks, furniture, and event tickets, while others are looking to sell or give them away. However, the current solutions—scattered group chats and clunky social media groups—lack safe discovery, simple communication, and streamlined workflows.
We set out to build more than just a classifieds page. We wanted a polished marketplace tailored specifically for campus life: fast, privacy-aware, and easy to operate for both students and administrators. Our goal was to create a modern product that lowers the friction of real-world transactions while keeping the community's trust intact.
What it does
TigerPop is a full-stack campus marketplace that enables verified communities to list, discover, and close sales with minimal friction. The platform manages the entire listing lifecycle—from creation and image management to status transitions (Available, Pending, Sold).
Key features include:
- Dynamic Listing Lifecycle: Comprehensive CRUD operations for listings, allowing users to set categories, conditions, and prices.
- Smart Image Management: Multi-image uploads backed by Cloudinary with CDN-optimized delivery and server-side validation.
- Buyer Intent Capture: A "Request to Buy" system that records interest in the database and automatically moves listings to a "Pending" state to prevent double-selling.
- Dual Dashboards: Specialized views for sellers to manage active listings and for buyers to track purchased items and active requests.
- Admin Suite: Tools for moderation, category management, and CSV report exports for campus auditing.
How we built it
We adopted an API-first architecture, utilizing a TypeScript-based React frontend and a Flask (Python) backend.
The Architecture
- Frontend: React + TypeScript with Tailwind CSS for a responsive, modern UI.
- Backend: Flask organized with modular Blueprints for Authentication, Listings, and User Profiles.
- Database: PostgreSQL managed via SQLAlchemy ORM. We used Alembic to track and manage schema migrations.
Infrastructure: The project is designed for Vercel, utilizing serverless-friendly patterns. For instance, we dynamically adjust our database pooling based on the environment:
Media: Cloudinary handles image storage and transformations, ensuring our server remains lightweight.
Challenges we ran into
- Serverless DB Management: Ensuring short-lived serverless invocations didn't exhaust database connections was a hurdle. We solved this by implementing
NullPoolsettings to ensure connections are closed immediately after a request. - Upload Permutations: We spent significant time balancing the security of server-side image processing against the speed and convenience of client-signed Cloudinary uploads.
- UX vs. Moderation: Designing a flow that allows for "frictionless" posting while building in the hooks for future spam prevention and rate-limiting required careful state management.
Accomplishments that we're proud of
- Complete Lifecycle Flow: Successfully implementing a robust "Request-to-Buy" logic that reliably transitions database states.
- Clean Separation of Concerns: Building a distinct modular backend that is ready to be consumed by a future mobile app without requiring code changes.
- Production Readiness: Even at the MVP stage, we implemented Alembic migrations and environment-aware configurations, ensuring the app is ready for a real-world campus rollout.
What we learned
- Deployment is a Feature: We learned that production-like considerations—such as database pooling, CDN usage, and CORS-safe configurations—are just as vital as the core business logic.
- Contract First Development: Investing early in the backend-frontend "contract" (API design) allowed our team to work in parallel without constant blockers.
- The Power of Serverless: Building with Vercel taught us how to design Python applications that are truly stateless and scalable.
What's next for TigerPop
- Notifications: Integrating SendGrid or Resend to move beyond database "intent" to real-time email/SMS alerts for sellers.
- Identity Verification: Implementing campus NetID/CAS integration to ensure that only verified students can participate in the marketplace.
- Rate-Limiting: Adding middleware to protect critical endpoints (uploads and requests) from automated spam.
- AI Enrichment: Utilizing computer vision to provide condition estimates and price suggestions based on uploaded listing photos.
Built With:
- Backend: Python, Flask, SQLAlchemy, Alembic, PostgreSQL, Cloudinary
- Frontend: React, TypeScript, Tailwind CSS, React-Router
- Deployment: Vercel, Python Serverless Functions
Built With
- alembic
- cloudinary
- flask
- postgresql
- python
- react
- sqlalchemy
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.