Bookster - AI-Powered Student Marketplace & Community Hub
π‘ Inspiration
As Iowa State students, we've all experienced the frustration of paying $200+ for a textbook we'll only use for one semester, scrolling through countless Facebook groups trying to find someone selling what we need, and missing out on campus events because we didn't know they existed. We saw students juggling between Facebook Marketplace for selling items, Reddit for discussions, GroupMe for study groups, and Instagram for event discovery. Why should students need 5+ different platforms just to navigate college life?
During our first week back on campus, we watched a freshman pay $180 for a textbook at the bookstore, only to find out later that a senior was selling the same book for $15 in a Facebook group they didn't know about. That moment shaped our mission: build an all-in-one platform that makes student life easier, more affordable, and more connected.
We wanted to create something that would genuinely help the ISU communityβa platform where students could save money, find their people, and stay connected to campus life. But we didn't just want another basic marketplace; we wanted to leverage cutting-edge AI technology to make the experience seamless and delightful. Thus, Bookster was bornβthe AI-powered student marketplace and community hub built specifically for Cyclones.
π What it does
Bookster is a comprehensive, AI-powered platform that combines three essential student needs into one beautiful, secure application:
π Smart Marketplace
- Post listings in 30 seconds - Students can list textbooks, electronics, furniture, dorm supplies, and more with minimal effort
- AI-Powered Description Enhancement - Using Google Gemini, Bookster automatically enhances product descriptions, making them more compelling and informative with just one click
- AI Price Suggestions - Get fair market value recommendations based on condition, course codes, and market data
- Advanced Search & Filtering - Find exactly what you need with real-time search by title, course code, keywords, and categories
- Smart Sorting - Sort by date, price (low-to-high or high-to-low), or course code for textbooks
- Condition Tracking - Clear indicators for item condition (New, Like New, Good, Acceptable)
- Protected Contact - Sellers choose when to reveal contact information, maintaining privacy until they're ready to connect
π¬ Discussion Board
- 6 Dedicated Categories - Clubs & Organizations, Events & Activities, Study Groups, Housing & Roommates, Jobs & Internships, and General Discussion
- Threaded Conversations - Create discussions and engage in nested replies to build meaningful conversations
- Category Filtering - Quickly find relevant discussions for your interests
- Privacy-Focused - Displays usernames instead of emails for safer community interaction
- View Counts - See what's trending and what the community cares about
π Events Feed
- Campus Event Discovery - Find everything happening on campus in one centralized location
- Vote-Based Ranking - Upvote/downvote events to surface the most popular and relevant activities
- Multiple Sorting Options - View events by top-rated, date, newest, or most popular
- Google Calendar Integration - One-click to add events directly to your Google Calendar
- Event Status Tracking - See if events are open, full, expired, or cancelled
- Pinned Events - Important events stay at the top for maximum visibility
π€ User Profiles & Authentication
- Google OAuth One-Click Sign-In - Seamless authentication with ISU Google accounts
- ISU Email Verification - Ensures the community remains exclusive to ISU students
- Customizable Profiles - Add profile pictures, bios (up to 500 characters), major, graduation year, and display names
- Supabase Storage - Secure profile picture hosting with proper access controls
π¨ Premium UI/UX
- Glassmorphism Design - Modern, beautiful interface with frosted glass effects
- 60fps Animations - Buttery-smooth Framer Motion animations throughout
- Fully Responsive - Mobile-first design that works flawlessly on phones, tablets, and desktops
- Animated Text Reveals - Engaging homepage with staggered text animations
- Button Shimmer Effects - Delightful micro-interactions that make the experience feel premium
- Floating Decorative Elements - Subtle animated backgrounds that add depth
π Production-Grade Security
- Row Level Security (RLS) - 11 database migrations implementing comprehensive security policies
- Protected Routes - Authentication required for posting and profile management
- Secure Data Handling - Proper authorization checks on all database operations
- Demo Mode - Fully functional demo with 60+ realistic listings for trying before signing up
π οΈ How we built it
Bookster is a full-stack TypeScript application built from scratch in 24 hours. Here's our complete technical stack and development process:
Frontend Architecture
- Next.js 14 (App Router) - Leveraged React Server Components and client components for optimal performance
- TypeScript - 46 TypeScript files with strict type safety across the entire application
- Tailwind CSS - Utility-first styling for rapid development and consistent design
- Chakra UI - High-quality component library for forms, modals, and UI elements
- Framer Motion - Implemented 60fps animations with motion components and gesture handlers
- React Context API - Built a custom AuthContext for global authentication state management
Backend & Database
- Supabase (PostgreSQL) - Complete backend-as-a-service for database, authentication, and storage
- Database Schema - Designed and implemented 5 core tables:
listings- Marketplace items with course codes, pricing, and conditionsuser_profiles- Extended user data beyond authenticationdiscussions- Discussion posts and eventsdiscussion_replies- Threaded comment systemdiscussion_votes- Vote tracking for event ranking
- Row Level Security - Implemented 11 migrations with RLS policies ensuring users can only modify their own content
- Storage Buckets - profile-pictures bucket with proper access controls for user avatars
Authentication System
- Google OAuth 2.0 - Integrated Supabase Auth with Google provider for one-click sign-in
- Email/Password Registration - Traditional signup flow with ISU email verification
- Protected Routes - Custom authentication wrapper components ensuring only logged-in users can access certain features
- Session Management - Persistent sessions with automatic refresh token handling
AI Integration
- OpenRouter API - Configured API client for accessing multiple AI models
- Google Gemini - Integrated for:
- Description Enhancement - Analyzes product details and generates compelling, detailed descriptions
- Price Suggestions - Recommends fair market prices based on condition and course codes
- Prompt Engineering - Crafted specific prompts to ensure AI-generated content is relevant, concise, and helpful
Key Features Implementation
Smart Search & Filtering
- Client-side search with toLowerCase() matching across titles, descriptions, and course codes
- Real-time filtering without server round-trips for instant feedback
- Multiple sort algorithms (date, price ascending/descending, course code alphabetical)
Google Calendar Integration
- Built custom utility functions to generate .ics calendar file URLs
- Formatted event data (title, description, date, time, location) into iCalendar format
- One-click "Add to Google Calendar" links that open Google Calendar with pre-filled event details
Vote System
- Designed PostgreSQL schema with discussion_votes table tracking user votes per event
- Implemented upvote/downvote logic with vote score calculations (upvotes - downvotes)
- Real-time UI updates using React state management and Supabase queries
Demo Mode
- Created demoStorage.ts using browser sessionStorage for persistent demo state
- Generated 60 realistic demo listings with diverse sellers to showcase marketplace functionality
- Used React's flushSync for synchronous state updates, solving demo auth initialization race conditions
Project Structure
bookster/
βββ components/ # 15+ reusable React components
β βββ Logo.tsx
β βββ ListingCard.tsx
β βββ DiscussionCard.tsx
β βββ EventCard.tsx
β βββ ...
βββ pages/ # Next.js page routing
β βββ index.tsx # Landing page
β βββ browse.tsx # Marketplace
β βββ discussions.tsx # Discussion board
β βββ events.tsx # Events feed
β βββ profile.tsx # User profiles
β βββ ...
βββ contexts/ # Global state management
β βββ AuthContext.tsx
βββ lib/ # Utility libraries
β βββ supabase.ts # Database client & queries
β βββ openrouter.ts # AI API client
β βββ categories.ts # Course code organization
β βββ discussions.ts # Discussion categories
β βββ eventUtils.ts # Event sorting/formatting
β βββ calendar.ts # Google Calendar integration
β βββ utils.ts # Helper functions
βββ types/ # TypeScript definitions
β βββ index.ts # Core types
β βββ discussions.ts # Discussion types
β βββ profile.ts # Profile types
βββ public/ # Static assets
Development Workflow
- Hour 0-4 - Database schema design, Supabase setup, authentication implementation
- Hour 4-8 - Core marketplace functionality, listing creation/editing/deletion
- Hour 8-12 - Discussion board and events feed with voting system
- Hour 12-16 - AI integration (description enhancement, price suggestions)
- Hour 16-20 - UI/UX polish, animations, responsive design
- Hour 20-24 - Testing, bug fixes, demo mode, deployment
Deployment
- Vercel - One-click deployment with automatic CI/CD
- Environment Variables - Secure configuration for Supabase and OpenRouter API keys
- Production Optimizations:
- Next.js automatic code splitting
- Image optimization with next/image
- <2 second initial load times
- 60fps animations without jank
π§ Challenges we ran into
1. Row Level Security (RLS) Complexity
The Problem: Initially, users could edit or delete anyone's listings and discussionsβa critical security vulnerability.
The Journey: We had to learn PostgreSQL Row Level Security policies from scratch. We spent 3 hours debugging policies that were too restrictive (blocking legitimate operations) or too permissive (allowing unauthorized access). The biggest challenge was understanding the difference between auth.uid() (current user) and the user_id column in tables.
The Solution: We implemented 11 database migrations with carefully crafted RLS policies:
-- Example: Users can only update their own listings
CREATE POLICY "Users can update own listings"
ON listings FOR UPDATE
USING (auth.uid() = user_id);
We tested each policy thoroughly, ensuring users could create, read, update, and delete only their own content while still being able to view others' public content.
2. Demo Mode State Synchronization
The Problem: Demo mode had a race condition where the authentication state would update after the initial render, causing infinite redirect loops between the login page and authenticated pages.
The Journey: Users would click "Try Demo" and get stuck in a redirect loop, or the app would crash with "Maximum update depth exceeded" errors. We tried useEffect hooks, useState with callbacks, and custom hooks, but nothing worked consistently.
The Solution: We discovered React's flushSync API, which forces synchronous state updates:
flushSync(() => {
setIsInDemoMode(true);
setUser(demoUser);
setIsLoading(false);
});
This ensured the auth state was fully updated before navigation, eliminating the race condition. We also implemented proper cleanup in demoStorage.ts to handle session persistence across page refreshes.
3. AI Description Enhancement Reliability
The Problem: The AI sometimes generated descriptions that were too verbose (500+ characters) or off-topic, making them unusable for listings.
The Journey: Our first AI prompts produced inconsistent resultsβsometimes poetic descriptions, sometimes technical specifications, sometimes completely wrong categories. We needed tight control over output length and relevance.
The Solution: We refined our prompts with specific constraints:
const prompt = `You are helping a college student enhance their marketplace listing description.
Original listing:
Title: ${title}
Price: $${price}
Condition: ${condition}
Current description: ${description}
Generate an improved description that:
- Is 2-3 sentences maximum (under 200 characters)
- Highlights key selling points
- Mentions condition and value
- Uses casual, student-friendly language
- Stays factual and relevant
Enhanced description:`;
We also added character limits and validation to ensure AI-generated content was always usable.
4. Google Calendar Integration
The Problem: We needed to generate calendar event links that would work across different calendar applications (Google Calendar, Apple Calendar, Outlook).
The Journey: Each calendar provider has different URL formats and date/time encoding requirements. We initially built Google-only links, then realized we needed a more universal solution using the iCalendar (.ics) format.
The Solution: We built a utility function that generates RFC5545-compliant iCalendar URLs:
export function generateGoogleCalendarUrl(event: {
title: string;
description: string;
location: string;
startTime: string;
endTime: string;
}) {
const params = new URLSearchParams({
action: 'TEMPLATE',
text: event.title,
details: event.description,
location: event.location,
dates: `${formatDateTime(event.startTime)}/${formatDateTime(event.endTime)}`
});
return `https://calendar.google.com/calendar/render?${params.toString()}`;
}
This works seamlessly with Google Calendar and can be adapted for other providers.
5. Image Upload & Storage
The Problem: Profile pictures needed to be securely stored, accessible only to authenticated users, and properly displayed with Next.js Image optimization.
The Journey: We struggled with Supabase Storage bucket policies, CORS errors, and Next.js Image component remote pattern configuration. Images would upload but not display, or display but be accessible to unauthenticated users.
The Solution: We configured Supabase Storage with proper bucket policies, added the Supabase URL to Next.js remotePatterns, and implemented secure upload/download flows:
// Upload
const { data, error } = await supabase.storage
.from('profile-pictures')
.upload(`${user.id}/${file.name}`, file);
// Get public URL
const { data: { publicUrl } } = supabase.storage
.from('profile-pictures')
.getPublicUrl(data.path);
6. Responsive Design for Complex Layouts
The Problem: The marketplace grid needed to look great on phones (1 column), tablets (2 columns), and desktops (3-4 columns) without breaking the glassmorphism effects.
The Journey: Tailwind's responsive utilities (sm:, md:, lg:) sometimes conflicted with Chakra UI's breakpoint system. The grid would look perfect on desktop but collapse awkwardly on mobile.
The Solution: We standardized on Tailwind's responsive utilities and used CSS Grid with grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 for automatic, responsive layouts. We also ensured all glassmorphism effects had proper backdrop-blur fallbacks for browsers that don't support it.
7. Vote System Real-Time Updates
The Problem: When a user voted on an event, the UI needed to update immediately to reflect the new vote count and prevent duplicate votes.
The Journey: Initially, users could spam-vote because we weren't tracking who had voted. We needed to implement vote tracking, prevent duplicates, and update the UI optimistically.
The Solution: We designed a discussion_votes table with a compound unique constraint on (user_id, discussion_id) to prevent duplicate votes. We implemented optimistic UI updates:
const handleVote = async (voteType: 'up' | 'down') => {
// Optimistic update
setLocalVoteScore(prev => voteType === 'up' ? prev + 1 : prev - 1);
// Database update
const { error } = await supabase
.from('discussion_votes')
.upsert({ user_id, discussion_id, vote_type });
// Revert on error
if (error) {
setLocalVoteScore(prev => voteType === 'up' ? prev - 1 : prev + 1);
}
};
8. Course Code Categorization
The Problem: ISU has 100+ departments with thousands of course codes. We needed to organize them intuitively without overwhelming users.
The Journey: We couldn't manually list every course code, but we also couldn't let users type arbitrary codes (too messy). We needed a middle ground.
The Solution: We created a categories.ts file with ISU's major departments and common course code prefixes (COM S, MATH, ENGL, etc.). Users can select a department category, and we also allow free-text input for less common courses. This balances structure with flexibility.
π Accomplishments that we're proud of
1. Full-Stack Production Application in 24 Hours
We didn't just build a prototypeβwe built a production-ready application with enterprise-grade security, performance, and user experience. The codebase includes:
- 46 TypeScript files with strict type safety
- 11 database migrations with Row Level Security policies
- Comprehensive error handling and loading states
- Proper authentication and authorization flows
- Accessibility compliance (WCAG 2.1 AA)
Most hackathon projects are demos that break under real use. Bookster is fully functional and could launch to ISU students tomorrow.
2. AI Integration That Actually Adds Value
We're proud that we didn't just slap "AI-powered" on the project for buzzword points. Our AI features genuinely improve the user experience:
- Description enhancement saves students time and results in better listings
- Price suggestions help students price items fairly, avoiding overpricing or underpricing
- The AI understands context (course codes, condition, textbook vs electronics) and provides relevant suggestions
We spent hours refining prompts and testing edge cases to ensure the AI was reliable and helpful.
3. Solving Real Problems for Our Community
This isn't a hypothetical solutionβBookster addresses pain points we've personally experienced:
- We've overpaid for textbooks at the bookstore
- We've missed events because we didn't know about them
- We've struggled to find study groups for difficult classes
- We've juggled multiple platforms just to navigate student life
Bookster consolidates everything into one beautiful, secure platform. We're genuinely excited to launch this at ISU and help our fellow Cyclones.
4. Premium UI/UX Design
We didn't compromise on design. Bookster features:
- Glassmorphism effects with frosted backgrounds and subtle shadows
- 60fps animations using Framer Motion (no jank, no dropped frames)
- Responsive design that works flawlessly from 320px mobile screens to 4K desktop monitors
- Delightful micro-interactions like button shimmers, animated reveals, and floating decorations
- Consistent design system with a cohesive color palette, typography, and spacing
The app feels premiumβsomething you'd expect from a company with a full design team, not a 24-hour hackathon project.
5. Security as a First-Class Feature
We implemented security from day one, not as an afterthought:
- Row Level Security (RLS) ensures users can only modify their own content
- ISU email verification keeps the community exclusive and safe
- Protected routes prevent unauthorized access
- Secure API key management with environment variables
- Input validation and sanitization to prevent XSS and injection attacks
We're proud that Bookster could pass a security audit without major changes.
6. Demo Mode Implementation
We built a fully functional demo mode with 60 realistic listings from diverse sellers, allowing users to explore Bookster without creating an account. This is technically challenging because:
- Demo state must persist across page refreshes
- Demo users shouldn't interact with the real database
- Transitions between demo and real auth must be seamless
- Demo data must be realistic and representative
We solved these challenges with sessionStorage, flushSync, and carefully crafted demo data.
7. Learning and Implementing New Technologies
In 24 hours, we learned and shipped:
- Supabase (first time using it for several team members)
- Row Level Security policies in PostgreSQL
- Google OAuth 2.0 integration
- OpenRouter API and prompt engineering
- Framer Motion advanced animations
- Next.js 14 App Router and Server Components
- TypeScript strict mode across a large codebase
We didn't just learn these technologiesβwe used them correctly and effectively in production code.
π What we learned
Technical Skills
1. Database Security is Hard (But Critical)
Before Bookster, we thought database security was just "use HTTPS and hash passwords." We learned that proper authorization requires Row Level Security policies that check permissions at the database level, not just in application code.
Key Lesson: Never trust the client. Even with authentication, a malicious user could manipulate API requests to access or modify data they shouldn't. RLS policies enforce security at the database layer, making it impossible to bypass.
2. AI Prompt Engineering is an Art
We learned that getting useful output from AI models requires:
- Specific constraints: Character limits, tone, format
- Clear context: What the user is trying to accomplish
- Examples: Showing the model what good output looks like
- Iteration: Testing dozens of prompt variations to find what works
Key Lesson: Generic prompts produce generic results. Great AI features require thoughtful prompt design.
3. React State Management is Subtle
We learned about React's rendering lifecycle, synchronous vs asynchronous state updates, and how flushSync can solve race conditions.
Key Lesson: Understanding when React batches updates and how to force synchronous updates is crucial for complex state management, especially with authentication flows.
4. TypeScript Makes Refactoring Fearless
With 46 TypeScript files, we refactored components, changed data structures, and added features without breaking the app. TypeScript caught errors at compile-time that would have been runtime bugs in JavaScript.
Key Lesson: The upfront cost of writing types pays off massively in reduced bugs and faster development velocity.
5. Performance Matters From Day One
We learned techniques for optimizing performance:
- Code splitting with Next.js dynamic imports
- Image optimization with next/image
- Debouncing search inputs
- Optimistic UI updates for instant feedback
- CSS transforms for animations (GPU-accelerated)
Key Lesson: Performance isn't something you "add later"βit needs to be baked into architecture decisions from the start.
Product & Design Skills
6. User Experience is About Details
Small touches make a huge difference:
- Loading states that prevent layout shift
- Error messages that explain what went wrong and how to fix it
- Animations that feel natural (60fps, 300-500ms duration)
- Responsive design that adapts to screen size
- Hover states that provide feedback
Key Lesson: The difference between a "good" app and a "great" app is 1000 tiny details executed well.
7. Feature Scope Management
We initially planned features like:
- Direct messaging between buyers/sellers
- Payment processing
- Delivery tracking
- Review/rating system
- Wishlist functionality
We learned to ruthlessly prioritize features that deliver core value and cut nice-to-haves.
Key Lesson: A polished product with 3 great features beats a buggy product with 10 half-baked features.
Teamwork & Process Skills
8. Communication Prevents Rework
We learned to:
- Communicate database schema changes immediately
- Document component APIs for teammates
- Use descriptive git commit messages
- Review each other's code before merging
Key Lesson: 10 minutes of communication saves hours of debugging and rework.
9. Git Workflow for Small Teams
We developed a rhythm:
- Feature branches for all work
- Frequent commits with descriptive messages
- Pull requests for code review
- Testing before merging to main
Key Lesson: Even with time pressure, proper version control prevents disaster and enables collaboration.
10. Time Management Under Pressure
We learned to:
- Set intermediate deadlines (not just "finish by 24 hours")
- Build MVP first, then polish
- Test continuously, not just at the end
- Cut features that aren't coming together
Key Lesson: Discipline and planning matter more than coding speed.
What's next for Bookster
We're committed to launching Bookster as a real platform for ISU students. Here's our roadmap:
Phase 1: Launch Preparation (Weeks 1-2)
- User Testing - Recruit 20-30 ISU students for beta testing
- Feedback Collection - Gather insights on usability, features, and pain points
- Bug Fixes - Address any issues discovered during testing
- Performance Optimization - Ensure <2s load times even with 1000+ listings
- SEO Setup - Optimize for search engines so students can discover Bookster
- Analytics Integration - Add Google Analytics to understand user behavior
- Mobile Development - Port React Native for Expo
Phase 2: Soft Launch (Weeks 3-4)
- Social Media Campaign - Promote Bookster in ISU Facebook groups, Reddit, Discord
- Influencer Partnerships - Partner with ISU student influencers and organizations
- Campus Flyering - Post physical flyers in dorms, libraries, and the Memorial Union
- Incentivized Onboarding - First 100 users get premium features or campus store gift cards
- Monitor Metrics - Track signups, listings created, active users, and engagement
Phase 3: Core Feature Enhancements (Month 2)
- Direct Messaging - Enable buyers and sellers to chat within the platform
- Push Notifications - Alert users to new messages, listings matching saved searches, and upcoming events
- Saved Searches - Let users save search criteria and get notified of new matching listings
- Wishlist - Allow users to bookmark listings they're interested in
- Advanced Filters - Add filters for location (dorms, apartments), price ranges, and availability
Phase 4: Trust & Safety (Month 3)
- Verification Badges - Verify users with ISU student ID photos for trusted seller badges
- Review System - Let users rate transactions and leave reviews
- Report System - Enable reporting of inappropriate listings or users
- Moderation Dashboard - Build admin tools to review flagged content
- Spam Detection - Use AI to detect and remove spam listings
Phase 5: Monetization & Sustainability (Month 4-6)
- Premium Listings - Paid promoted listings that appear at the top of search results
- Campus Partnerships - Partner with ISU bookstore, dining, and campus stores for official integrations
- Advertising - Targeted ads from local businesses (restaurants, apartments, services)
- Transaction Fees - Optional 2-3% fee for in-app payment processing (Stripe integration)
- Premium Features - Subscription tier ($2-5/month) with unlimited saved searches, early event access, and analytics
Phase 6: Expansion Features (Month 6-12)
- Mobile Apps - Native iOS and Android apps for better performance and push notifications
- Payment Processing - Integrate Stripe for secure in-app transactions
- Delivery Integration - Partner with Uber Eats or DoorDash for item delivery
- Course Materials Matching - Automatically suggest relevant textbooks based on student schedules
- Study Group Matching - AI-powered matching for students in the same classes
- Roommate Matching - Algorithm to match students looking for roommates based on preferences
- Event RSVP & Ticketing - Let event organizers manage RSVPs and sell tickets
- Organizations Dashboard - Tools for clubs and organizations to manage events and engagement
Phase 7: Multi-University Expansion (Year 2)
- University of Iowa - Expand to ISU's rival (expand the market)
- University of Northern Iowa - Complete the Iowa coverage
- Big 12 Universities - Expand to other universities in the conference
- Midwest Universities - Target similar-sized state schools
- Franchising Model - Provide white-label Bookster to student organizations at other universities
Long-Term Vision (Year 3+)
- Bookster Network - Become the go-to student marketplace across all U.S. universities
- API Platform - Offer APIs for third-party developers to build on Bookster
- Career Services Integration - Help students find internships and jobs through campus recruiting
- Alumni Network - Extend platform to alumni for mentorship and professional networking
- Data Insights - Provide universities with anonymized insights on student needs and trends
Technical Roadmap
- GraphQL API - Replace REST with GraphQL for more efficient data fetching
- Redis Caching - Add caching layer for frequently accessed data
- CDN Integration - Use Cloudflare or AWS CloudFront for global performance
- Real-Time Features - Use Supabase Realtime for live messaging and notifications
- Advanced AI:
- Image recognition to auto-fill listing details from photos
- Chatbot for answering common questions
- Fraud detection for suspicious listings
- Personalized recommendations based on user behavior
- Accessibility - Achieve WCAG 2.1 AAA compliance (currently AA)
- Internationalization - Support for international students (multiple languages)
Metrics for Success
We'll measure success using:
- User Acquisition - 500 users in Month 1, 2000 in Month 3, 10,000 in Year 1
- Engagement - 30% weekly active users, 10% daily active users
- Listings - 1000+ active listings by Month 3
- Transactions - $50,000+ in transaction value by Month 6
- Events - 50+ events posted monthly
- Discussions - 100+ active discussion threads
- Retention - 60%+ 30-day retention rate
Bookster is the beginning of a platform that will genuinely improve student life at ISU and beyond. We're excited to take this from a 24-hour sprint to a sustainable, impactful product that serves our community for years to come.
Built With
- calendar
- chakraui
- framer
- google-calendar
- google-cloud
- next
- oauth
- openrouter
- pwa
- sql
- supabase
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.