The CARPI Course Planner allows you to plan future semesters with ease. Complete with a course catalog for quickly finding historical and current courses, a toolbox for holding your desired courses, and a planner to organize courses into your long-term plan.
- Responsive desktop + mobile experience
- Explore the RPI course catalog with search and filters
- Filter courses by subject, attributes, and semester availability
- Drag and drop courses into semester blocks
- Add, edit, and remove semester blocks
- Manage credit selection per course
- Persistent planner data in browser local storage
- Import and export planner data as JSON
These instructions will help you get a copy of the project's frontend up and running on your local machine for development and testing.
To run this project, you need Node.js and npm installed on your machine. We currently pin tool versions in the package.json engines field:
- Node.js:
~24.14.0 - npm:
~11.12.0
We highly recommend using Node Version Manager (nvm) to easily switch between Node versions. Verify your environment with:
node -v
npm -vIf you plan to use Docker, ensure you have Docker Desktop installed.
- Clone the repository and navigate into the project directory:
git clone https://github.com/Project-CARPI/site.git
cd site- Use the correct Node version. If you have
nvminstalled, simply run the following command to read the.nvmrcfile and use Node v24.14:
nvm use- Install the dependencies and start the development server:
npm install
npm run devBy default, Vite serves the app on localhost (usually http://localhost:5173).
If you prefer an isolated containerized environment, you can use our Docker Compose setup.
- Clone the repository and navigate into the project directory:
git clone https://github.com/Project-CARPI/site.git
cd site- Build the image and spin up the container:
docker compose up --buildTo run the container in detached mode (in the background), append the -d flag:
docker compose up -dThe app will now be accessible at http://localhost:5173 (or the port specified in your docker compose configuration).
To stop the container, run:
docker compose downnpm run dev: Start the Vite development server.npm run build: Type-check and create a production build.npm run preview: Preview the production build locally.npm run lint: Run ESLint to check for code issues.npm run prettier:check: Check code formatting.npm run prettier:write: Auto-format files with Prettier.
The frontend uses Axios, which is configured in src/lib/axios.ts with the following base URL:
http://carpi.cs.rpi.edu:8000/api/v1/
If you are running a local backend (source code located here), update the Axios baseURL in src/lib/axios.ts to point to your local server.
src/
components/ # Shared UI components
core/workspace/ # Planner workspace context, reducers, and persistence utils
features/
catalog/ # Catalog search, filters, and result rendering
dnd/ # Drag-and-drop wiring
planner/ # Planner UI and semester/course interactions
toolbox/ # Global toolbox controls
lib/ # Shared helpers, API client, types, hooks, stores
pages/ # Route-level pages (Home, Catalog, Planner)
When you are ready to deploy the site to production, run the build command. This compiles the TypeScript files and bundles the project using Vite:
npm run buildThe optimized, production-ready files are generated in the dist/ folder. You can locally preview the production build by running:
npm run preview- React 18 + TypeScript
- Vite 6
- Tailwind CSS 4
- ESLint + Prettier
- Radix UI
- Zustand
- @dnd-kit
- Framer Motion
- Zod
- Docker
Please reach out to one of the current developers for information on how to get started with contributing to the project.
This project is licensed under the MIT License. See LICENSE for details.