Skip to content

cfgcolumbus25/Team-18

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💻 Team-18 Platform: CLEP Data Explorer

Unified platform for exploring and managing CLEP college credit data with a single Django backend and React frontend.

🚀 Overview & Key Features

  • 🎓 Students browse CLEP exam credit policies by institution.
  • 🛠️ Admins securely manage schools, exams, and policies directly in MongoDB via token-protected endpoints.
  • 🔗 Unified architecture: all REST endpoints under /api/, served by one Django project.

⚙️ Tech Stack

Layer Technology Purpose
Backend Django 5.x REST API, auth, MongoDB integration
Frontend React (Vite + TypeScript) CLEP explorer UI
CLEP data store MongoDB Atlas Schools, exams, policies
Auth/session store SQLite Django auth & sessions
Configuration .env Secrets and environment variables

🗂️ Project Structure

Team-18/
├── backend/
│   ├── manage.py
│   ├── core/              # Django project settings, URLs, Mongo connection
│   ├── clep_backend/      # Public CLEP endpoints
│   ├── admin_backend/     # Token-protected admin endpoints
│   ├── utils/             # Helper scripts (Mongo check, admin workflow)
│   ├── data.csv           # CLEP seed data for import script
│   ├── requirements.txt
│   └── .env
├── frontend/              # React + Vite application
├── venv/                  # Python virtual environment (ignored)
└── README.md

⚡ Quick Start

1. Backend setup

cd backend
python3 -m venv ../venv            # skip if venv already exists
source ../venv/bin/activate
pip install -r requirements.txt

cp env.example .env                # update with your Mongo URI and credentials
python manage.py migrate
python manage.py createsuperuser   # creates staff account for /api/login/
python manage.py runserver         # http://127.0.0.1:8000/

2. Frontend setup

cd frontend
npm install
npm run dev                        # http://localhost:5173/

🌐 API Summary

All endpoints are namespaced under http://127.0.0.1:8000/api/.

Endpoint Method Description
/ping/ GET Health check – validates Django + MongoDB connectivity
/schools/ GET List schools with CLEP policy data (filters supported)
/schools/{id}/ GET Retrieve a single school by Mongo _id
/exams/ GET List CLEP exams stored in MongoDB
/exams/{id}/ GET Retrieve a single exam by Mongo _id
/login/ POST Admin login – returns auth token
/get/ GET Admin: read collections (collection, optional id)
/insert/ POST Admin: insert document (collection, data)
/update/ POST Admin: update document (collection, id, data)
/delete/ DELETE Admin: delete document (collection, id)

School filters

Combine any of the following query parameters:

  • state – two-letter state code
  • zip_code – postal code
  • exam_name – matches embedded CLEP policy exam field
  • min_cut_score – filters policies with cut_score >= value

Example:

curl "http://127.0.0.1:8000/api/schools/?state=FL&exam_name=College Algebra&min_cut_score=55"

🛠 Utilities

Script Location Description
test_mongodb_connection.py backend/utils/ Quick MongoDB connectivity test
quick_edit_test.py backend/utils/ Demonstrates admin login and CRUD workflow

Run helper scripts with the virtualenv active:

cd backend
source ../venv/bin/activate
python utils/quick_edit_test.py

🔐 Security & Deployment Notes

  • .env contains sensitive values (Mongo URI, admin credentials). Never commit actual secrets.
  • CORS_ALLOW_ALL_ORIGINS = True simplifies local dev; tighten allowed origins in production.
  • MongoDB stores CLEP data; SQLite only backs Django authentication and sessions.
  • Both APIs now share /api/, ensuring consistent integration with the frontend.

🤖 Use of AI

AI tooling was used as a learning and productivity aid to:

  • Explore best practices for Django ↔︎ MongoDB integration.
  • Iterate on API design and data flows quickly.
  • Improve code readability, structure, and documentation.

✨ Contributors

Team-18 — OSU Code for Good Columbus 2025

  • Shayan Manoharan – The Ohio State University
  • Rishi Movva – University of Delaware
  • Chase McCluskey – Ohio Northern University
  • Mohamed Jirac – The Ohio State University
  • Heidy Naranjo – Brandeis University
  • Nihar Xavier – University of Maryland
  • Spencer Smith – University of Michigan


    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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors