Skip to content

sandboxnu/searchneu

Repository files navigation

                              ▄▄
                              ██
▄█▀▀▀ ▄█▀█▄  ▀▀█▄ ████▄ ▄████ ████▄ ████▄ ▄█▀█▄ ██ ██
▀███▄ ██▄█▀ ▄█▀██ ██ ▀▀ ██    ██ ██ ██ ██ ██▄█▀ ██ ██
▄▄▄█▀ ▀█▄▄▄ ▀█▄██ ██    ▀████ ██ ██ ██ ██ ▀█▄▄▄ ▀██▀█

searchneu | docs | sandbox

🚀 about

SearchNEU is the premier course information platform for Northeastern University.

project structure

The SearchNEU codebase is organized in a monorepo structure

searchneu/
├─ apps/
│  ├─ searchneu/    the main application
│  └─ docs/         documentation site
├─ packages/
│  ├─ db/           database schema
│  ├─ scraper/      scraper scripts and logic
│  └─ tsconfig/     combined typescript configuration
├─ compose.yaml     docker compose spec
├─ package.json
├─ turbo.json
├─ pnpm-lock.yaml
├─ pnpm-workspace.yaml
├─ LICENSE
└─ README.md

The Turborepo build system is used in order to manage packages and applications across the monorepo with the pnpm package management system.

technology

SearchNEU is a TypeScript monorepo built on Turborepo and pnpm workspaces, running on Node (see engines in package.json).

Web app (apps/searchneu)

Data layer (packages/db)

  • Drizzle ORM against PostgreSQL
  • Neon serverless Postgres in production; a Docker Postgres instance behind a Neon proxy for local development
  • Zod for validating external and untrusted data

Tooling

  • TypeScript everywhere, with shared configs in packages/tsconfig
  • ESLint (flat config from packages/eslint-config) and Prettier with prettier-plugin-tailwindcss
  • Docs built with Fumadocs

quickstart

Make sure Docker is installed and running, then:

pnpm install   # install dependencies (pnpm is the package manager)
turbo setup    # creates .env files, starts the database, runs migrations
turbo dev      # start the dev servers (app on http://localhost:3000)

Apart from pnpm install, every workflow runs through turbo. turbo setup is idempotent - re-run it any time (e.g. after restarting Docker).

Course catalog data is not seeded automatically (it requires a live Banner scrape). The app runs fine against an empty database; to populate courses:

turbo cli -- generate --terms=all        # scrape Banner -> cache
turbo cli -- tools seed-config --seed     # write static config
turbo cli -- upload --terms=all           # load into the database

For app-specific details, see the README in each application under apps/.

BEATS

Alt

About

the one stop shop for course information at northeastern university

Resources

License

Stars

Watchers

Forks

Contributors

Languages