Skip to content

UTDNebula/planner

Repository files navigation

Nebula Planner

Nebula Planner is a degree planning tool for UTD students.

Features

  • 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

Contributing

Contributions are welcome! Join the Discord and request access to the Planner dev team.

Set-up

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
  1. Clone repository and install web dependencies:
git clone https://github.com/UTDNebula/planner.git
cd planner
npm install
  1. 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.

  2. Setting up Neon:

    Neon is a hosting service for PostgreSQL.

    1. Install the Neon CLI.

    2. Run neonctl auth and follow the on-screen prompts to login or create an account.

    3. Run neonctl projects create --name planner-dev to create a Neon project for Planner.

    4. 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 the DATABASE_URL and DIRECT_DATABASE_URL variables in your .env file, as shown below.

      # Prisma
      DATABASE_URL="<your connection uri here>"
      DIRECT_DATABASE_URL="<your connection uri here>"
  3. Apply database migrations:

    npx prisma migrate dev
  4. Request PLATFORM_DATABASE_URL from someone on the team.

  5. Set NEXTAUTH_URL to http://localhost:3000 and NEXTAUTH_SECRET=abc123

  6. Setting up an auth provider. You need at least one of these to log in. We recommend you only add Discord for convenience.

    Discord
    1. Go to Discord Developer Portal β€” My Applications

    2. Click on New Application

    3. Type "planner"

    4. Agree to their terms of service

    5. Click to create

    6. Click on OAuth2

    7. Click on reset the secret

    8. Click on "Yes, do it!" and copy the generated secret

    9. Click on "Add Redirect"

    10. Paste "http://localhost:3000/api/auth/callback/discord" into input

    11. Click on save changes at the bottom

    12. 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
    1. Go to Mailtrap: Email Delivery Platform

    2. Click on Sign up for free and create your account

    3. Click on Start Testing

    4. Click on Nodemailer

    5. Copy the host, port, user, and pass values.

  7. 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
  8. Setup pre-commit hooks:

    npm run prepare
  9. 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.

Internals

Contact

For more formal inquiries, send us a message at core-maintainers@utdnebula.com with "[nebula-planner]" in the title.