A cross-platform mobile application that combines the best of Reddit and Instagram, tailored specifically for university communities. HallPass enables students to connect, discuss courses, join clubs, rate professors, and engage with their campus community in a private, university-specific environment.
- University feed with course, club, and campus-wide threads
- Sort by popularity, controversy, or recency using ML-assisted ranking
- Create discussions with tags and optional course/club/professor context
- Dedicated notifications view for:
- Incoming follow requests (accept/decline)
- Trending discussions in your courses and organizations
- Browse and search university courses
- Course detail tabs for discussions, private discussions, professors, and members
- Private course discussions for enrolled students only
- Professor profiles with ratings and review flow
- "Request Add Professor" flow directly from course pages
- Discover campus organizations and clubs
- Organization detail pages with discussions and membership context
- Club rating dimensions: engagement, community, events, overall
- 1:1 and group chats
- Message requests (accept or delete) before opening a conversation
- Conversation controls: mute/unmute, hide for yourself, or delete
- Chat settings with:
- Rename chat
- Change group icon image
- Add or remove participants
- Shared media and link history with search
- Message tab unread badge support
- Search users, courses, clubs, and professors
- Jump directly to detail pages and discussion contexts
- Profile system with follow/unfollow and private-account request handling
- User card with university branding, ranking, and activity context
- Light, dark, and auto theme modes
- University color integration across views
- Mobile-first card-based UI built with Expo + React Native
- Framework: React Native with Expo
- Language: TypeScript
- Navigation: React Navigation (Bottom Tabs + Stack)
- Backend: Firebase (Authentication, Firestore)
- Image Storage: AWS S3 (free tier: 5GB storage, 20K GET requests/month)
- State Management: React Context API
- ML Integration: TensorFlow.js (ready for custom models)
- UI Components: React Native Paper, Custom Components
- Multi-step form for initial setup
- University selection with logos
- Course and club selection
- Optional first action prompt
- Create discussions with title, content, tags
- Associate with courses, professors, or clubs
- Voting system (A for upvote, F for downvote)
- Threaded comments and replies
- ML-powered ranking and sorting
- Only visible to enrolled students
- Set during course enrollment or quarter start
- Separate discussion space for course-specific topics
- When users submit courses/professors/clubs
- Multiple submissions with similar names trigger review
- Threshold-based automatic addition (no duplicates)
- Local admin UI (
npm run catalog:ui) for catalog operations - Config-driven catalog scraping (
scripts/scrape-catalog.mjs) with:- Section toggles (universities, courses, organizations, professors)
- Optional merge mode to preserve existing local catalog data
- Dry-run mode for safe validation
- Firestore push utility (
scripts/catalog-push.mjs) that fills missing fields without overwriting existing non-empty data
- Vertical card design
- University colors and logo
- User stats (followers, following, ranking)
- Courses and clubs display
- Share functionality
{
id: string;
email: string;
name: string;
username?: string;
profileImage?: string;
university: string; // University ID
courses: string[]; // Course IDs
clubs: string[]; // Club IDs
followers: string[]; // User IDs
following: string[]; // User IDs
discussionRanking: number;
isPrivate: boolean;
createdAt: Date;
updatedAt: Date;
}{
id: string;
userId: string;
title: string;
content: string;
images?: string[];
tags: string[];
courseId?: string;
professorId?: string;
clubId?: string;
organizationId?: string;
upvotes: string[]; // User IDs
downvotes: string[]; // User IDs
comments: Comment[];
score: number;
controversy: number;
createdAt: Date;
updatedAt: Date;
isPrivate?: boolean; // For course sessions
enrolledUsers?: string[]; // For course sessions
}{
id: string;
code: string;
name: string;
description?: string;
universityId: string;
professors: string[]; // Professor IDs
createdAt: Date;
}{
id: string;
name: string;
email?: string;
courses: string[]; // Course IDs
averageRating: {
hardness: number;
coursework: number;
communication: number;
enjoyment: number;
};
}{
id: string;
name: string;
description?: string;
image?: string;
universityId: string;
members: string[]; // User IDs
averageRating: {
engagement: number;
community: number;
events: number;
overall: number;
};
createdAt: Date;
}The app includes integration points for ML models in src/services/mlService.ts. Currently, it uses heuristic-based ranking, but you can replace it with:
- TensorFlow.js (Client-side)
- Backend ML Service (API-based)
- Firebase Cloud Functions
- Discussion Ranking: Combines votes, comments, time decay, and user ranking
- Controversy Score: Calculates based on upvote/downvote ratio
- User Ranking: Based on posts, votes, comments, and followers
- Duplicate Detection: Text similarity for courses/professors/clubs
- Personalized Recommendations: Based on user interests, courses, and clubs
hallpass/
βββ src/
β βββ components/ # Reusable components
β βββ config/ # Configuration files
β βββ context/ # React Context providers
β βββ navigation/ # Navigation setup
β βββ screens/ # Screen components
β βββ services/ # Business logic services
β βββ types/ # TypeScript type definitions
β βββ App.tsx # Main app component
βββ assets/ # Images, fonts, etc.
βββ app.json # Expo configuration
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript configuration
βββ README.md # This file
βββ SETUP.md # Setup instructions
See SETUP.md for complete setup and build instructions.
- Push notifications for messages and mentions
- Advanced search with filters
- Analytics and insights
- Admin panel for university management
- Integration with university systems
- Advanced ML models for content moderation
- Video support for discussions
This project is licensed under the MIT License.
- Inspired by Reddit, Instagram, and YikYak
- Built with React Native and Expo
- Powered by Firebase and AWS






