๐ JPMC Code for Good Hackathon 2025 | ๐ Columbus, Ohio
Built for Modern States Education Alliance
A comprehensive, full-stack web application that empowers students to discover colleges accepting CLEP credits based on their exam scores and location preferences. Developed during the JPMC Code for Good hackathon in Columbus, Ohio to address the critical challenge of CLEP credit policy transparency in higher education.
Built by Team 16 at the JPMC Code for Good Hackathon 2025 in Columbus, Ohio
Members: Haruto Suzuki โข Naveen Kamath โข Elizabeth Woo โข Baseer Sharief โข Leonardo Medina โข Karan Tandra โข Aakash Kalmady
Mentors: Mr. Ahmir Robinson โข Ms. Lydiasheen Rhymond โข Mr. Parshva Shah
The Problem: Students lack clear, accessible information about which colleges accept their CLEP exam scores, making it difficult to maximize their transfer credits and reduce tuition costs. Additionally, institutions struggle to keep their CLEP acceptance policies up-to-date and accessible to prospective students.
The Solution: A scalable, data-driven dashboard that aggregates verified CLEP acceptance policies from over 2,900 institutions, enabling:
- Students to search colleges by CLEP exam scores and location, visualize institutions on an interactive map, and access real-time, verified CLEP policy data
- Institutions to easily update and manage their CLEP acceptance policies, including which exams they accept, minimum required scores, corresponding course credits, and course equivalencies through an intuitive dashboard interface
- Administrators to moderate institution requests, approve new entries, and maintain data quality across the platform
Impact: Helps students make informed decisions about college transfers, potentially saving thousands of dollars in tuition by maximizing CLEP credit acceptance. Empowers institutions to maintain accurate, up-to-date policy information that directly benefits student decision-making.
- Location-based filtering: Search by state (in-state/out-of-state preferences)
- CLEP score matching: Intelligent algorithm matches student scores with institution requirements
- Multi-criteria filtering: Filter by cost, acceptance rate, and credit limits
- Real-time search: Instant results with debounced input handling
- Leaflet integration: Interactive map with college markers
- Geolocation support: Uses browser geolocation API for user location
- Route planning: Visual routing between selected colleges or from user location
- State-focused views: Filter and focus on specific states
- Custom markers: Color-coded markers for different locations
- Role-based access: Three distinct user types (Learners, Universities, Admins)
- University Dashboard: Institutions can manage their CLEP scoring policies
- Admin Dashboard: Centralized management of institution requests and system statistics
- Authentication flow: Embedded login with context-aware routing
- Self-Service Policy Updates: Institutions can independently update their CLEP acceptance policies through a dedicated dashboard
- CLEP Policy Management: Add, edit, and delete CLEP exam policies with intuitive forms
- Flexible Scoring System: Support for multiple credit tiers per exam (e.g., Physics 65 = 3 credits for lecture only, Physics 70 = 4 credits for lecture + lab)
- Course Equivalency Mapping: Institutions can specify which CLEP exams correspond to which courses and credit amounts
- Threshold Score Configuration: Set minimum required scores for each CLEP exam to earn credits
- Institution Requests: Universities not yet in the system can request to be added
- Inline Editing: Real-time updates with optimistic UI for immediate feedback
- Policy History: Track when policies were last updated for data freshness validation
- Review system: Students can provide feedback on CLEP policy accuracy
- Time-based validation: Policies flagged if not updated within a year
- Crowdsourced verification: Aggregate review scores for policy reliability
- Admin moderation: Approval workflow for institution requests
- Dark mode support: System-wide theme switching with localStorage persistence
- Responsive design: Mobile-first approach with breakpoint optimization
- Material-UI components: Consistent design system with custom theming
- Tailwind CSS: Utility-first styling for rapid development
- Smooth animations: Framer Motion for polished interactions
frontend/
โโโ src/
โ โโโ components/ # Reusable UI components
โ โ โโโ collegeCards.tsx # College display cards
โ โ โโโ filterFrame.tsx # Advanced filtering UI
โ โ โโโ Map.tsx # Interactive map component
โ โ โโโ UniversityDashboard.tsx # University management
โ โ โโโ AdminDashboard.tsx # Admin interface
โ โ โโโ CLEPScoringManager.tsx # CLEP policy editor
โ โโโ containers/ # Page-level containers
โ โ โโโ CollegeContainer.tsx # Main college listing
โ โโโ contexts/ # React context providers
โ โ โโโ ThemeContext.tsx # Global theme management
โ โโโ App.tsx # Main application router
Design Patterns:
- Component Composition: Modular, reusable components
- Context API: Global state management for theme
- Custom Hooks: Encapsulated logic (e.g.,
useThemeMode) - Type Safety: Full TypeScript implementation
backend/
โโโ routes/ # API route handlers
โ โโโ institutions.py # Institution CRUD operations
โ โโโ clep_policies.py # CLEP policy management
โ โโโ clep_exams.py # CLEP exam definitions
โ โโโ reviews.py # Review system endpoints
โโโ config/ # Configuration
โ โโโ supabase.py # Database client initialization
โโโ server.py # Flask application entry point
API Design:
- RESTful endpoints: Standard HTTP methods (GET, POST, PUT, DELETE)
- Blueprint architecture: Modular route organization
- Error handling: Comprehensive error responses with status codes
- Data validation: Type checking and required field validation
Institutions
GET /api/institutions- Get all institutionsGET /api/institutions_all- Get institutions with CLEP policiesPOST /api/institutions- Create new institutionPUT /api/institutions/<uni_id>- Update institutionDELETE /api/institutions/<uni_id>- Delete institution
CLEP Policies
GET /api/clep_policies- Get all CLEP policiesPOST /api/clep_policies- Create new CLEP policyPUT /api/clep_policies/<uuid>- Update CLEP policyDELETE /api/clep_policies/<uuid>- Delete CLEP policyPOST /api/clep_policies/filter- Filter policies by student criteria
CLEP Exams
GET /api/clep_exams- Get all CLEP examsPOST /api/clep_exams- Create new CLEP examPUT /api/clep_exams- Update CLEP examDELETE /api/clep_exams- Delete CLEP exam
Reviews
GET /api/reviews- Get all reviewsPOST /api/reviews- Create new reviewPUT /api/reviews/<review_id>- Update reviewDELETE /api/reviews/<review_id>- Delete review
- Intelligent matching: Matches student CLEP scores with institution requirements
- Multi-criteria filtering: Combines location, cost, acceptance rate, and credit limits
- Time-based validation: Flags policies not updated within a year
- Review aggregation: Incorporates user reviews for policy reliability
- Supabase integration: Real-time database updates with PostgreSQL
- Optimistic UI updates: Immediate feedback with backend synchronization
- Error handling: Comprehensive error handling with user-friendly messages
- Data validation: Type checking and required field validation on both client and server
- TypeScript: Full type safety throughout the application
- Context API: Global state management for theme and user preferences
- Custom hooks: Reusable logic encapsulation
- Component composition: Modular, maintainable component structure
- Blueprint organization: Modular route handlers for maintainability
- RESTful API design: Standard HTTP methods and status codes
- Database abstraction: Supabase client for database operations
- Environment configuration: Secure environment variable management
- Mobile View Friendly: Enhanced responsive design and mobile-optimized UI for seamless experience on smartphones and tablets
- Google Maps API Integration: Replace Leaflet with Google Maps API for enhanced map features, street view, and better routing capabilities
- AI Agent/Chatbot: Intelligent chatbot for learners and admins to answer questions about CLEP policies, provide recommendations, and assist with navigation
- Modern States Education Alliance for the opportunity to solve a real-world problem
- JPMC Code for Good for organizing the hackathon
- Supabase for providing the backend infrastructure
- All open-source contributors whose libraries made this project possible
- Node.js (v18 or higher) and npm
- Python (v3.8 or higher) and pip
- Supabase account (Sign up here)
-
Clone the repository
git clone <repository-url> cd Team-16
-
Create
.envfile Create a.envfile in the root directory with the following variables:SUPABASE_URL=your_supabase_project_url SUPABASE_KEY=your_supabase_anon_key
Getting Supabase credentials:
- Go to Supabase Dashboard
- Create a new project or select an existing one
- Navigate to Project Settings โ API
- Copy the
URLandanon publickey - Paste them into your
.envfile
โ ๏ธ Security Note: Never commit your.envfile to version control. Ensure.envis listed in.gitignore.
-
Navigate to backend directory
cd backend -
Create virtual environment (recommended)
python3 -m venv venv
-
Activate virtual environment
- macOS/Linux:
source venv/bin/activate - Windows:
venv\Scripts\activate
- macOS/Linux:
-
Install dependencies
pip install -r requirements.txt
-
Set up database
- Log in to your Supabase dashboard
- Navigate to SQL Editor
- Run the SQL script from
backend/create_table.sqlto create the required tables
-
Start the Flask server
python server.py
The backend will run on
http://localhost:5000
-
Navigate to frontend directory
cd frontend -
Install dependencies
npm install
-
Start development server
npm run dev
The frontend will run on
http://localhost:5173(or the port shown in your terminal)
-
Start the backend (Terminal 1)
cd backend source venv/bin/activate # On macOS/Linux python server.py
-
Start the frontend (Terminal 2)
cd frontend npm run dev -
Open your browser Navigate to
http://localhost:5173
Made with โค๏ธ for Modern States Education Alliance
The code ("Code") in this repository was created solely by the student teams during a coding competition hosted by JPMorgan Chase Bank, N.A. ("JPMC"). JPMC did not create or contribute to the development of the Code. This Code is provided AS IS and JPMC makes no warranty of any kind, express or implied, as to the Code, including but not limited to, merchantability, satisfactory quality, non-infringement, title or fitness for a particular purpose or use.
