Skip to content

UniPath.io is a full-stack web application that allows users to create, plan, and share their class schedules for their entire degree program.

License

Notifications You must be signed in to change notification settings

UMLCloudComputing/UniPath.io

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

Plan, Create, and Share Your Academic Journey!

View Demo Β· Report Bug Β· Request Feature

WARNING: This project is currently under development and is not yet ready for production use. Please check back later for updates. Expected completion date: May 2024.

πŸ“˜ About

Developed by students from the Cloud Computing Club at UMass Lowell, UniPath.io is an innovative web application designed to revolutionize the way college students plan and visualize their academic journey.

πŸš€ Features

View contents
  • πŸ’Ž Degree Path Planning

    • Craft a detailed degree plan by entering courses and their prerequisites.
    • Define your academic goals and structure your semesters ahead.
    • Input and manage degree requirements to ensure all academic goals are met.
  • πŸ“Š Visual Progress Tracking & Analysis

    • Get a clear visual representation of your academic journey with color-coded progress indicators.
    • Define and visualize prerequisites and co-requisites to understand course sequences.
    • Our system analyzes your plan to confirm the validity of your course sequence.
  • πŸ‘₯ Collaborative Planning & Community Engagement

    • Share your degree pathway with peers and advisors for collaborative planning and feedback.
    • Compare your academic plan with others to explore different pathways and find the best fit for your educational aspirations.
    • Engage with a community of students navigating their own academic paths, share insights, and gain inspiration.

πŸ’» Getting Started

View contents

⚠️ Prerequisites

  • Node.js and NPM or Docker for running the application.
  • AWS account for AWS Amplify.

πŸ”½ Installation

  1. Clone the repository:

    git clone https://github.com/UMLCloudComputing/UniPath.io.git
  2. Navigate to the project directory:

    cd UniPath.io
  3. Install NPM packages:

    npm install

πŸ› οΈ Setup AWS Amplify CLI

First, install the AWS Amplify CLI globally:

npm install -g @aws-amplify/cli

Configure Amplify Profile

  • Make a new profile:

    npx ampx configure profile

    Hit Enter.

    Note: If there's already a profile, then use:

    npx ampx configure profile --name [insert name of profile you want here]

    It should automatically switch.

Add Secrets

  1. Navigate to Amplify Console for Secrets: For Cloud Computing Club members, go to the Amplify console (All apps > UniPath.io > Secret management) and copy the values for below. For others, you will need to generate your own client ID and secret with your google account.

  2. Configure Google Client ID:

    npx ampx secret set GOOGLE_CLIENT_ID
    [your_client_id_here]

    Replace [your_client_id_here] from the client ID above, then paste in the value. Hit enter.

  3. Configure Google Client Secret:

    npx ampx secret set GOOGLE_CLIENT_SECRET
    [your_client_secret_here]

    Replace [your_client_secret_here] from the client secret secret, then paste in the value. Hit enter.

▢️ Running the Application

To run the application locally, you need to run the Amplify sandbox command to create the backend cloud resources and the npm run dev command for the frontend. You will need to keep both commands running in two separate terminals.

Start the Amplify sandbox command. This will provision the AWS backend resources. Keep this command running in the background.

npx ampx sandbox

Open a new terminal and start the frontend application:

npm run dev

Visit http://localhost:3000 to view UniPath.io in your browser.

πŸ”„ Updating the Project

When developing for UniPath.io, it is important to keep the project up to date with the latest changes. To update the project and pull the latest changes from GitHub, follow these steps:

  1. Navigate to the project directory:

    cd UniPath.io
  2. Pull the latest changes from the GitHub repository. It is important to pull the latest changes before creating a new feature branch.

    git pull
  3. Install NPM packages. This will update the project with the latest dependencies:

    npm install

That's it! You're all set to start developing with the latest version of UniPath.io.

πŸ— Built With

View contents
  • Front End

    • React JS
    • Next JS
    • MUI
  • Back End

    • AWS Amplify
    • AWS DynamoDB
    • AWS Lambda
  • Other Tools/Technologies:

    • git
    • Docker
    • Infastructure as Code

πŸ“ Project Goals and Technologies

View contents
  • Project Management: Apply agile methodologies such as Scrum and Kanban to enhance collaboration and efficiency.

    Scrum Kanban

  • Cloud Computing: Gain in-depth knowledge of AWS services and cloud-native solutions.

    AWS Cloud Native

  • DevOps: Master continuous integration, continuous deployment, and infrastructure as code.

    CI/CD Infrastructure as Code

  • Software Engineering (SWE): Embrace best practices, design patterns, and modern development techniques, including version control with Git.

    Best Practices Design Patterns Git

  • Frontend Web Development: Develop dynamic and responsive web applications using JavaScript and modern frameworks.

    JavaScript React

πŸ—ΊοΈ Roadmap

For the latest updates and progress, see our project boards:

πŸ‘¨β€πŸ’» Contributing

Contributions are what make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Creating a New Branch and Making a Pull Request

Follow these steps to contribute to the project with a new feature or bug fix:

Step 1: Create a New Branch

Before starting your work, ensure you're on the main branch and that it's up to date.

git checkout main
git pull origin main

Create a new branch for your feature or bug fix. Follow a naming convention like feature/<feature-name> or bugfix/<bug-name>.

git checkout -b feature/my-new-feature
# or
git checkout -b bugfix/my-bug-fix

Step 2: Make Your Changes

Implement your feature or fix the bug in your branch. Commit your changes using clear, concise, and conventional commit messages following the guidelines at conventionalcommits.org.

git add .
git commit -m "feat: add my new feature"
# or
git commit -m "fix: correct a bug"

Optionally, if you assigned yourself an issue, you can automatically create and link a branch using the GitHub UI. Click on the "Create a branch" button and select the option to create a new branch for the issue.

Step 3: Push Your Changes

Push your changes to the repository.

git push origin feature/my-new-feature
# or
git push origin bugfix/my-bug-fix

Style Guide

  • Use clear, concise, and conventional commit messages.
  • Follow the best software development practices and write clean, maintainable code.
  • For ReactJS, follow this style guide: https://dev.to/abrahamlawson/react-style-guide-24pp. Except use indendantation of 4 spaces instead of 2.

Step 4: Create a Pull Request

Go to the GitHub repository page and click on the "Pull request" button. Select your branch and provide a detailed description of your changes. Explain why your changes should be merged into the main branch.

Step 5: Review and Merge

Wait for the project maintainers to review your pull request. They may request changes. Once your pull request is approved, a project maintainer will merge it into the main branch.

Thank you for your contribution!

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.

βœ‰οΈ Contact

πŸŽ‰ Acknowledgments

Many thanks to the UMass Lowell Cloud Computing Club members, our faculty advisor Dr. Johannes Weis, and the UMass Lowell Computer Science Department for their support and guidance.

Contributors

About

UniPath.io is a full-stack web application that allows users to create, plan, and share their class schedules for their entire degree program.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published