A modern study group finder that brings students togetherβanytime, anywhere.
Features β’ Quick Start β’ Architecture β’ Documentation β’ Contributing
Finding study partners shouldn't be hard. StudyHall makes it effortless to:
- π Discover study groups for your courses in seconds
- π Schedule sessions that fit everyone's calendar
- π Find locations on campus or online meeting rooms
- π₯ Connect with peers who share your academic goals
- π Improve grades through collaborative learning
Perfect for: College students, study groups, tutoring sessions, exam prep, and project collaboration.
|
|
|
|
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π± Mobile App (Expo) β
β React Native + TypeScript + Expo Router β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β REST API
β (HTTP/JSON)
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β π Flask Backend β
β Python + Flask + Flask-CORS β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β PyMongo
β
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β π MongoDB Database β
β Collections: users, events, courses β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
StudyHall/
βββ π± studyHall/ # Expo mobile app
β βββ app/ # Screens & navigation (Expo Router)
β βββ components/ # Reusable UI components
β βββ api/ # Backend API client
β βββ types/ # TypeScript type definitions
β βββ constants/ # Theme & configuration
β
βββ π backend/ # Flask API server
β βββ app.py # Main Flask application
β βββ models.py # MongoDB data models
β βββ mongo_client.py # Database connection
β βββ courseAccess.py # Canvas LMS integration
β βββ requirements.txt # Python dependencies
β
βββ π docs/ # Documentation
βββ QUICK_START.md # Get up and running fast
βββ INTEGRATION_SUMMARY.md
βββ DEBUGGING.md
Before you begin, ensure you have:
| Tool | Version | Purpose |
|---|---|---|
| Node.js | 16.x or higher | Frontend development |
| Python | 3.8+ | Backend API |
| MongoDB | 4.4+ | Database (local or Atlas) |
| Expo CLI | Latest | Mobile app tooling |
# Clone the repository
git clone https://github.com/pattonle/StudyHall.git
cd StudyHall# Navigate to backend
cd backend
# Create virtual environment
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# Install dependencies
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
# Configure environment
@"
MONGODB_URI=mongodb://localhost:27017/studyhall
MONGO_DB_NAME=studyhall
PORT=5000
"@ | Set-Content .env
# Start the server
python app.pyβ
Backend running at: http://localhost:5000
# New terminal - navigate to frontend
cd studyHall
# Install dependencies
npm install
# Start Expo dev server
npx expo startChoose your platform:
| Platform | Command | Notes |
|---|---|---|
| iOS Simulator | Press i in terminal |
Mac only |
| Android Emulator | Press a in terminal |
Requires Android Studio |
| Physical Device | Scan QR code | Install Expo Go app first |
| Web Browser | Press w in terminal |
For quick testing |
π‘ Pro Tip: For physical device testing, replace
localhostwith your machine's IP address instudyHall/.env:EXPO_PUBLIC_API_URL=http://192.168.1.100:5000
// Simple API call from the mobile app
const response = await api.createEvent({
name: "Calculus Final Review",
course_id: "MATH2568",
date: "2025-12-15T18:00:00Z",
location: "Thompson Library, Room 301",
max_participants: 8,
description: "Going over practice exams and problem sets"
});| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Health check |
GET |
/events |
List all study sessions |
POST |
/events |
Create a new session |
GET |
/events?course_id=MATH2568 |
Filter by course |
POST |
/events/<id>/signup |
Join a session |
POST |
/events/<id>/cancel |
Leave a session |
GET |
/users/<id> |
Get user profile |
POST |
/users |
Create/update user |
GET |
/courses/active |
List active courses |
# MongoDB connection (required)
MONGODB_URI=mongodb://localhost:27017/studyhall
# Database name (optional, default: studyhall)
MONGO_DB_NAME=studyhall
# Canvas API token (optional, for LMS integration)
API_TOKEN=your_canvas_token_here
# Flask server port (optional, default: 5000)
PORT=5000# Backend API URL
EXPO_PUBLIC_API_URL=http://localhost:5000# Backend tests
cd backend
python -m pytest
# Frontend tests (if configured)
cd studyHall
npm test# Check backend logs
cd backend
python app.py # Watch terminal output
# Clear Expo cache
cd studyHall
npx expo start -c
# Find process using port 5000 (if blocked)
netstat -ano | findstr :5000
taskkill /PID <PID> /F| Document | Description |
|---|---|
| QUICK_START.md | Detailed setup guide with troubleshooting |
| INTEGRATION_SUMMARY.md | Frontend-backend integration details |
| DEBUGGING.md | Common issues and solutions |
| backend/README.md | Backend API reference |
| studyHall/README.md | Frontend development guide |
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- π¨ UI/UX improvements and new themes
- π Enhanced authentication (OAuth, SSO)
- π Analytics dashboard for study patterns
- π Push notifications for upcoming sessions
- π Internationalization (i18n) support
- π³ Docker Compose setup for easy deployment
- β Automated tests and CI/CD pipelines
- Core API endpoints (events, users, courses)
- Mobile app with Expo Router
- MongoDB integration
- Canvas LMS OAuth integration
- Real-time updates with WebSockets
- Push notifications
- In-app messaging
- User profiles with avatars
- Rating & review system
- Analytics dashboard
- Docker deployment
- CI/CD pipeline
This project is part of a hackathon and is available for educational purposes.
Built with β€οΈ for students, by students.
Special thanks to:
- The Expo team for amazing mobile development tools
- MongoDB for scalable database solutions
- The open-source community for incredible libraries
Report Bug β’ Request Feature β’ View Demo
Made with π by the StudyHall Team