Nebula Planner is a degree planning tool for UTD students.
- Drag-and-drop interface for planning coursework by semester for any degree plan
- Real-time degree validation and prerequisite validation
- Export to file to share your custom plan with someone else
Contributions are welcome! Join the Discord and request access to the Planner dev team.
This project requires Node v16+ and NPM installation. It also requires local environment variables since it uses Neon (hosted PostgresDB service), a SMTP server, and Discord as authentication provider.
Pre-requisites
To be able to start development on Planner make sure that you have the following pre-requisites installed:
Installation and configuration
- Clone repository and install web dependencies:
git clone https://github.com/UTDNebula/planner.git
cd planner
npm install
-
Copy
.env.example file
to.env
:Copy the contents of the
.env.example
file at the root of the repo to a new file called.env
. -
Setting up Neon:
Neon is a hosting service for PostgreSQL.
-
Install the Neon CLI.
-
Run
neonctl auth
and follow the on-screen prompts to login or create an account. -
Run
neonctl projects create --name planner-dev
to create a Neon project for Planner. -
Copy the string listed under 'Connection Uri' (ex:
postgres://my-user:my-password@my-project-id.us-east-2.aws.neon.tech/neondb
) and update theDATABASE_URL
andDIRECT_DATABASE_URL
variables in your .env file, as shown below.# Prisma DATABASE_URL="<your connection uri here>" DIRECT_DATABASE_URL="<your connection uri here>"
-
-
Apply database migrations:
npx prisma migrate dev
-
Request
PLATFORM_DATABASE_URL
from someone on the team. -
Set
NEXTAUTH_URL
tohttp://localhost:3000
andNEXTAUTH_SECRET=abc123
-
Setting up an auth provider. You need at least one of these to log in. We recommend you only add Discord for convenience.
Discord
-
Paste "http://localhost:3000/api/auth/callback/discord" into input
-
Copy and paste your secret and clientID (also on the OAuth2 page) into your
.env
:# Next Auth Discord Provider DISCORD_CLIENT_ID=<discord-client-id-goes-here> DISCORD_CLIENT_SECRET=<discord-secret-goes-here>
Nodemailer
-
Copy the host, port, user, and pass values.
-
Run and configure validator
cd validator python3.11 -m venv venv # Create virtual environment source venv/bin/activate # Use virtual enviornment pip install -r requirements.txt # Install dependencies flask --app api run
Add the validator to
.env
:# DEGREE VALIDATOR NEXT_PUBLIC_VALIDATOR=http://127.0.0.1:5000
-
Setup pre-commit hooks:
npm run prepare
-
Generate
Prisma
client and run web server:npm run prisma:generate npm run dev
Not sure where to start? Join the Discord to get help.
For more formal inquiries, send us a message at core-maintainers@utdnebula.com with "[nebula-planner]" in the title.