Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
662c350
Update Getting-Started.md
Yogeb-tech Sep 3, 2026
9be53f5
Update Project-Architecture.md
Yogeb-tech Sep 3, 2026
aea701f
Update mermaid.js diagram in Project-Architecture.md
Yogeb-tech Sep 3, 2026
b64be30
Finalize Docs for Project-Architecture.md
Yogeb-tech Sep 4, 2026
2ae7476
Update Project-Structure.md
Yogeb-tech Sep 4, 2026
1bd3bec
Update How-to-Contribute.md
Yogeb-tech Sep 4, 2026
f94d457
Update Project-Architecture.md
Yogeb-tech Sep 4, 2026
e84316c
final polish, first draft ready
Yogeb-tech Sep 4, 2026
e27985d
remove em dashes from Guides.md
Yogeb-tech Sep 5, 2026
e3f74b7
Upade Project-Architecture.md
Yogeb-tech Sep 5, 2026
111cfdf
Update Project-Architecture.md
Yogeb-tech Sep 5, 2026
1a1d70d
Update README.md
Yogeb-tech Sep 5, 2026
108e08b
Update Docker-Guide.md
Yogeb-tech Sep 5, 2026
3ff5334
Update Troubleshooting.md
Yogeb-tech Sep 5, 2026
80cd2cd
Requested changes to How-to-Contribute.md
Yogeb-tech Sep 7, 2026
c0f2a65
Requested Changes in Project-Architecture.md
Yogeb-tech Sep 7, 2026
99379a2
Requested changes in Project-Structure.md
Yogeb-tech Sep 7, 2026
b953531
Requested changes in Docker-Guide.md
Yogeb-tech Sep 7, 2026
cd35a75
Requested changes on Guides.md
Yogeb-tech Sep 7, 2026
ecaae21
Requested changes in Project-Architecture.md
Yogeb-tech Sep 7, 2026
897509b
Add AI policy mention
Yogeb-tech Sep 7, 2026
7cc3002
Update AI mention on How-to-Contribute.md
Yogeb-tech Sep 7, 2026
bb84086
update mermaid diagram in Project-Architecture.md
Yogeb-tech Sep 7, 2026
0ff37fc
Address requested changes
Yogeb-tech Sep 8, 2026
0a37658
Update Project-Architecture.md
Yogeb-tech Sep 8, 2026
18ed838
Add ssh and more specifics to getting-started.md
justinschwerdtfeger Sep 9, 2026
5ae9368
Add more libraries to Proejct-Architecture
justinschwerdtfeger Sep 9, 2026
77620f9
Slight rephrase in Automation section in Project-Architecture.md
Yogeb-tech Sep 10, 2026
156e7eb
Minor adjustments to achieve simple language in Project-Architecture.md
Yogeb-tech Sep 10, 2026
e0b8a1c
Added go references to Project-Architecture.md
Yogeb-tech Sep 10, 2026
67b9ff4
minor change
Yogeb-tech Sep 10, 2026
95dab35
Project-Architecture.md rewrite; more simple language + no bullet points
Yogeb-tech Sep 10, 2026
a782c93
Made tweaks to Project-Architecture.md
justinschwerdtfeger Sep 10, 2026
8640481
Fix various types and word tweaks
justinschwerdtfeger Sep 10, 2026
392f482
Add sidebar, remove bad pages, and make minor tweaks
justinschwerdtfeger Sep 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 54 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ _A CLI toolchain to scrape, parse, validate, and upload UTD university data to t

Project maintained by [Nebula Labs](https://about.utdnebula.com).

> 📚 **Developer Wiki**: If you are interested in developing this project, head over to the [**Developer Wiki**](docs/Home.md)!
> **Developer Wiki**: If you are interested in developing this project, head over to the [**Developer Wiki**](docs/Home.md)!

---

## Quick Navigation

- [Developer Wiki](docs/Home.md)
- [Getting Started Guide](docs/getting-started.md)
- [Pipeline Architecture (Scraper vs Parser vs Uploader vs Runner)](docs/architecture.md)
- [Project Structure & Codebase Map](docs/project-structure.md)
- [Docker & Container Guide](docs/docker-guide.md)
- [Contributing Guide](docs/contributing.md)
- [Troubleshooting & FAQ](docs/troubleshooting.md)
- [Getting Started Guide](/docs/Getting-Started.md)
- [Pipeline Architecture (Scraper -> Parser -> Uploader)](/docs/Project-Architecture.md)
- [Project Structure & Codebase Map](/docs/Project-Structure.md)
- [Docker & Container Guide](/docs/Docker-Guide.md)
- [Contributing Guide](/docs/How-to-Contribute.md)
- [Troubleshooting & FAQ](/docs/Troubleshooting.md)
- [Discord Community](https://discord.utdnebula.com)

---
Expand Down Expand Up @@ -50,71 +50,71 @@ The `api-tools` command line interface supports three main modes: **scraping**,

### Global Flags

| Flag | Default | Description |
|---|---|---|
| `-i <dir>` | `./data` | Input directory to read data from |
| `-o <dir>` | `./data` | Output directory to write scraped/parsed data to |
| `-l <dir>` | `./logs` | Directory to write timestamped log files to |
| `--verbose` | `false` | Enables verbose debug logging with file names and microsecond timestamps |
| `--headless`| `false` | Runs ChromeDP browser automation in background headless mode |
| Flag | Default | Description |
| ------------ | -------- | ------------------------------------------------------------------------ |
| `-i <dir>` | `./data` | Input directory to read data from |
| `-o <dir>` | `./data` | Output directory to write scraped/parsed data to |
| `-l <dir>` | `./logs` | Directory to write timestamped log files to |
| `--verbose` | `false` | Enables verbose debug logging with file names and microsecond timestamps |
| `--headless` | `false` | Runs ChromeDP browser automation in background headless mode |

---

### 1. Scraping Mode (`--scrape`)
### Scraping Mode (`--scrape`)

Scrapes raw data from UTD sources and saves it to `./data` (or the directory specified by `-o`).

| Command | Description |
|---|---|
| Command | Description |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `./api-tools --scrape --coursebook --term 24F` | Scrapes CourseBook data for Fall 2024.<br>• `--resume`: Resume from last completed course prefix.<br>• `--startprefix <prefix>`: Begin at a specific course prefix (e.g. `cp_cs`). |
| `./api-tools --scrape --evals --term 24F` | Scrapes CourseBook course evaluation data for the specified term. |
| `./api-tools --scrape --profiles` | Scrapes faculty and professor directory profiles. |
| `./api-tools --scrape --astra` | Scrapes Astra schedule and room reservation data. |
| `./api-tools --scrape --mazevo` | Scrapes Mazevo event reservation data via API. |
| `./api-tools --scrape --cometCalendar` | Scrapes public UTD Comet Calendar events. |
| `./api-tools --scrape --map` | Scrapes UTD campus map building and parking coordinates. |
| `./api-tools --scrape --degrees` | Scrapes academic degrees and catalog majors. |
| `./api-tools --scrape --discounts` | Scrapes student discount program listings. |
| `./api-tools --scrape --academicCalendars` | Scrapes academic calendar PDF documents. |
| `./api-tools --scrape --budgets` | Scrapes university budget reports. |
| `./api-tools --scrape --evals --term 24F` | Scrapes CourseBook course evaluation data for the specified term. |
| `./api-tools --scrape --profiles` | Scrapes faculty and professor directory profiles. |
| `./api-tools --scrape --astra` | Scrapes Astra schedule and room reservation data. |
| `./api-tools --scrape --mazevo` | Scrapes Mazevo event reservation data via API. |
| `./api-tools --scrape --cometCalendar` | Scrapes public UTD Comet Calendar events. |
| `./api-tools --scrape --map` | Scrapes UTD campus map building and parking coordinates. |
| `./api-tools --scrape --degrees` | Scrapes academic degrees and catalog majors. |
| `./api-tools --scrape --discounts` | Scrapes student discount program listings. |
| `./api-tools --scrape --academicCalendars` | Scrapes academic calendar PDF documents. |
| `./api-tools --scrape --budgets` | Scrapes university budget reports. |

---

### 2. Parsing Mode (`-parse`)
### Parsing Mode (`-parse`)

Reads raw files from `./data` (or `-i`), normalizes records against `static-data/`, validates data models, and outputs structured schemas.

| Command | Description |
|---|---|
| `./api-tools -parse` | Runs full coursebook parsing pipeline across all scraped prefixes. |
| `./api-tools -parse -gradesDir <path>` | Specifies custom path for grade distribution CSVs (default: `./static-data/grades`). |
| `./api-tools -parse -astra` | Parses scraped Astra scheduling data. |
| `./api-tools -parse -mazevo` | Parses scraped Mazevo event data. |
| `./api-tools -parse -cometCalendar` | Parses scraped Comet Calendar events. |
| `./api-tools -parse -map` | Parses campus map data. |
| `./api-tools -parse -degrees` | Parses degree plans from HTML. |
| `./api-tools -parse -discounts` | Parses student discount listings from HTML. |
| `./api-tools -parse -academicCalendars` | Parses academic calendar dates from PDFs. |
| `./api-tools -parse -budgets` | Parses budget reports from PDFs (use `-useBackupBudgets` to include `static-data/budgets`). |
| `./api-tools -parse -skipv` | Skips post-parse schema validation (**use with caution**). |
| Command | Description |
| --------------------------------------- | ------------------------------------------------------------------------------------------- |
| `./api-tools -parse` | Runs full coursebook parsing pipeline across all scraped prefixes. |
| `./api-tools -parse -gradesDir <path>` | Specifies custom path for grade distribution CSVs (default: `./static-data/grades`). |
| `./api-tools -parse -astra` | Parses scraped Astra scheduling data. |
| `./api-tools -parse -mazevo` | Parses scraped Mazevo event data. |
| `./api-tools -parse -cometCalendar` | Parses scraped Comet Calendar events. |
| `./api-tools -parse -map` | Parses campus map data. |
| `./api-tools -parse -degrees` | Parses degree plans from HTML. |
| `./api-tools -parse -discounts` | Parses student discount listings from HTML. |
| `./api-tools -parse -academicCalendars` | Parses academic calendar dates from PDFs. |
| `./api-tools -parse -budgets` | Parses budget reports from PDFs (use `-useBackupBudgets` to include `static-data/budgets`). |
| `./api-tools -parse -skipv` | Skips post-parse schema validation (**use with caution**). |

---

### 3. Upload Mode (`-upload`)
### Upload Mode (`-upload`)

Pushes validated data to the MongoDB database specified in `MONGODB_URI`.

| Command | Description |
|---|---|
| `./api-tools -upload` | Uploads parsed coursebook data (merges into existing records by default). |
| `./api-tools -upload -replace` | Overwrites/replaces existing records instead of merging. |
| `./api-tools -upload -static` | Uploads static aggregations only. |
| `./api-tools -upload -events` | Uploads Astra, Mazevo, and Comet Calendar event datasets. |
| `./api-tools -upload -map` | Uploads campus map locations. |
| `./api-tools -upload -degrees` | Uploads degree plans. |
| `./api-tools -upload -discounts` | Uploads discount programs. |
| `./api-tools -upload -academicCalendars` | Uploads academic calendar dates. |
| `./api-tools -upload -budgets` | Uploads budget data. |
| Command | Description |
| ---------------------------------------- | ------------------------------------------------------------------------- |
| `./api-tools -upload` | Uploads parsed coursebook data (merges into existing records by default). |
| `./api-tools -upload -replace` | Overwrites/replaces existing records instead of merging. |
| `./api-tools -upload -static` | Uploads static aggregations only. |
| `./api-tools -upload -events` | Uploads Astra, Mazevo, and Comet Calendar event datasets. |
| `./api-tools -upload -map` | Uploads campus map locations. |
| `./api-tools -upload -degrees` | Uploads degree plans. |
| `./api-tools -upload -discounts` | Uploads discount programs. |
| `./api-tools -upload -academicCalendars` | Uploads academic calendar dates. |
| `./api-tools -upload -budgets` | Uploads budget data. |

---

Expand All @@ -136,7 +136,7 @@ docker run --rm -e ENVIRONMENT=local -e RUNNER_SCRIPT_NAME=weekly.sh my-runner:l
docker run --rm -e ENVIRONMENT=local -e RUNNER_SCRIPT_NAME=monthly.sh my-runner:local
```

For more details on Docker execution and cloud configuration, see the [Docker Guide](docs/docker-guide.md).
For more details on Docker execution and cloud configuration, see the [Docker Guide](/docs/Docker-Guide.md).

---

Expand Down
90 changes: 0 additions & 90 deletions docs/Docker-Guide.md

This file was deleted.

35 changes: 28 additions & 7 deletions docs/Getting-Started.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,44 @@ This guide walks you through setting up your local development environment, conf

Ensure you have the following installed:

- Git
- Git - For version control
- If you've never used git, need a refresher, or need help setting it up, check out [Nebula's Git Workshop](https://github.com/UTDNebula/git-workshop).
- Go
- Go - For building and running
- You can install from the [Go website](https://go.dev/dl/), or from [Homebrew](https://brew.sh/) or another package manager for automatic updates
- **Make** *(Linux/macOS)* — Pre-installed on macOS (via `xcode-select --install`) and most Linux distributions (`build-essential`)
- **Google Chrome** or **Chromium** — Required for headless browser scraping
- **Docker** *(Optional)* — For running containerized runners locally
- Make _(Linux/macOS)_ - For build automation
- Pre-installed on macOS (via `xcode-select --install`) and most Linux distributions (`build-essential`)
- Google Chrome or Chromium - For headless browser scraping
- Docker _(Optional)_ - For running containerized runners locally

**Make** is a build automation tool. Feel free to check out [`Makefile`](../Makefile) to see exactly what's being run.

If you're using Windows, instead of using `make`, you can also use our [`build.bat`](../build.bat) file. When you see any command starting with `make`, you can instead use `.\build.bat`. For example instead of `make setup`, you can run `.\build.bat setup`.
If you're using Windows, instead of using `make`, you can also use our [`build.bat`](../build.bat) file. When you see any command starting with `make`, you can instead use `.\build.bat`.
For example instead of `make setup`, you can run `.\build.bat setup`.

## Local Setup

### Clone the Repository

Clone the repository with `git clone` and `cd` into the project directory or open it in your code editor

**HTTPS:**

```bash
git clone https://github.com/UTDNebula/api-tools.git
cd api-tools
```

or

**SSH:**

```bash
git clone git@github.com:UTDNebula/api-tools.git
cd api-tools
```

Now open the cloned project in your code editor!

### Install Development Tooling

Install the Go static analysis and formatting tools (`staticcheck` and `goimports`):
Expand Down Expand Up @@ -60,7 +80,8 @@ If you installed **Go** with [**Homebrew**](https://brew.sh/), you need to add G

### Configure Environment Variables

Make a file called `.env` at the root of the project, and copy the contents of `.env.template` into it. Some tools in `api-tools` require certain environment variables, which you can fill in `.env`. If you're not sure what to put, ask for help.
Make a file called `.env` at the root of the project, and copy the contents of `.env.template` into it. Some tools in `api-tools` require certain environment variables, which you can fill in `.env`
If you're not sure what to put, please try contacting one of our members through discord.

### Run Code Verification & Formatting

Expand Down
Loading
Loading