Skip to content

pattonle/StudyHall

Repository files navigation

πŸ“š StudyHall

Connect. Collaborate. Succeed.

A modern study group finder that brings students togetherβ€”anytime, anywhere.

React Native Expo Flask MongoDB Python TypeScript

Features β€’ Quick Start β€’ Architecture β€’ Documentation β€’ Contributing


🎯 Why StudyHall?

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.


✨ Features

πŸ“± Mobile-First Experience

  • Native iOS & Android apps built with Expo
  • Intuitive, beautiful UI with dark mode support
  • Real-time updates and notifications
  • Offline mode for viewing saved sessions

πŸš€ Powerful Backend

  • RESTful API built with Flask
  • MongoDB for fast, scalable data storage
  • Canvas LMS integration ready
  • Secure authentication & authorization

🎨 Smart Features

  • Filter by course, date, and location
  • Join/leave study sessions with one tap
  • Set participant limits and RSVP tracking
  • Interactive maps for in-person meetings

πŸ”§ Developer Friendly

  • TypeScript for type safety
  • Clean architecture & modular code
  • Comprehensive API documentation
  • Easy local development setup

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     πŸ“± 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             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Project Structure

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

πŸš€ Quick Start

Prerequisites

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

⚑ 5-Minute Setup

Step 1: Clone & Install

# Clone the repository
git clone https://github.com/pattonle/StudyHall.git
cd StudyHall

Step 2: Backend Setup 🐍

# 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

Step 3: Frontend Setup πŸ“±

# New terminal - navigate to frontend
cd studyHall

# Install dependencies
npm install

# Start Expo dev server
npx expo start

Step 4: Launch the App πŸŽ‰

Choose 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 localhost with your machine's IP address in studyHall/.env:

EXPO_PUBLIC_API_URL=http://192.168.1.100:5000

🎨 Features in Action

Creating a Study Session

// 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"
});

Backend API Endpoints

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

πŸ”§ Development

Environment Variables

Backend (backend/.env)

# 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

Frontend (studyHall/.env)

# Backend API URL
EXPO_PUBLIC_API_URL=http://localhost:5000

Running Tests

# Backend tests
cd backend
python -m pytest

# Frontend tests (if configured)
cd studyHall
npm test

Debugging

# 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

πŸ“– Documentation

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

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Ideas for Contributions

  • 🎨 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

πŸ› οΈ Tech Stack

Frontend

Expo React Native TypeScript React Navigation

Backend

Python Flask MongoDB PyMongo

Tools & Services

VS Code Git Canvas LMS


πŸ“Š Roadmap

  • 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

πŸ“„ License

This project is part of a hackathon and is available for educational purposes.


πŸ™ Acknowledgments

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

🌟 Star this repo if you find it helpful!

Report Bug β€’ Request Feature β€’ View Demo

Made with πŸŽ“ by the StudyHall Team

About

This is the repository for the Study Hall project for the HACK OHI/O 2025 Hackathon.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •