asu-course-explorer

command module
v0.0.0-...-46327af Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2025 License: GPL-3.0 Imports: 13 Imported by: 0

README

ASU Course Explorer 🔱

A high-performance API for accessing the ASU Course Catalog, built with Go.

About The Project

Arizona State University doesn't provide an openly available API to access their course catalog. Currently, students must navigate through the university's website to find course information, which is often buried across multiple webpages.

ASU Course Explorer solves this problem by providing a clean, fast API interface to access ASU course data programmatically.

This project started as a fun side project, and a heavily modified, even faster production version now powers the backend for Courseer!

Built With

  • Golang - Programming Language
  • Rod - Driver for DevTools Protocol
  • Gin - Web Framework
  • Redis - In-Memory Data Structure Store (for caching)

Getting Started

Clone the repository and make sure Go is installed before running the following commands:

cd asu-course-explorer/

# Install dependencies
go mod download

# Set up environment variables (create .env file with REDIS_ENDPOINT)
cp .env.example .env  # Edit with your Redis endpoint

# Run the server
go run .

The server will start on port 8080 by default.

API Endpoints

Classes
  • GET /api/classes - Fetches a list of all classes
  • GET /api/classes/{classId} - Fetches information about a specific class (5-digit class ID)
  • GET /api/classes/course/{courseId} - Fetches all classes for a specific course (format: 3-letter subject + 3-digit number, e.g., "CSE110")
Response Format

Each class object includes:

  • Course code and title
  • Class number and instructor
  • Meeting days, times, and location
  • Available seats and units
  • Syllabus link (if available)
  • General Studies designations

Features

  • Redis Caching: 30-minute cache TTL for improved performance
  • Web Scraping: Real-time data from ASU's course catalog
  • RESTful API: Clean, predictable endpoints
  • Error Handling: Robust error responses and validation

Roadmap

See the open issues for planned features:

  • Add specific class endpoint
  • Add Redis caching
  • Add semesters endpoint
  • Add professors endpoint
  • Add course descriptions endpoint
  • Add Docker support
  • Add rate limiting

Contributing

Contributions are welcome! If you have suggestions for improvements, please fork the repo and create a pull request, or open an issue with the "enhancement" tag.

  1. Fork the Project
  2. Create your 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

License

Distributed under the GPL-3.0 License. See LICENSE for more information.

Support

If you like what you see and want to use a powerful iteration of this program to track your classes at ASU, please support and use Courseer.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL