Skip to the content.

Rainbow Notes

Table of contents

Overview

The goal of Rainbow Notes is to provide students a place where they can meet or discuss with others who previously took a course. Those who have completed a course can post their notes for other students to see. This forms a community where future students can refer to for help as well. It incorporates various technologies such as:

It also provides code that implements design concepts including but not limited to the following:

Deployment

Our website was deployed through DigitalOcean and can be found here: Rainbow Notes

User Guide

This section provides a walkthrough of the Rainbow Notes user interface and its capabilities.

Landing Page

The landing page is presented to users when they visit the top-level URL of the site.

Sign In and Sign Up Pages

By clicking on the login button in the upper right corner then selecting sign in, you can go to the following page and login. You must be already registered with the system to use this option.

Alternatively, you can select sign up instead which will go to the following page where you can register as a new user.

Home Page

Once signed in, you will be redirected to a personalized home page which includes recommended notes based on your course interests. Additionally, you can also see and delete any notes that you have posted.

Courses Page

The courses page provides you with a list of courses and an option to add ones that aren’t included. The number of notes within a course is also listed next to each course name.

Individual Course Pages

By clicking on any course button, you will be redirected to a separate course page which lists all of the notes within that course.

Add Course Page

The add course page allows you to create courses which aren’t already listed. It verifies that the course doesn’t exist before creating one to prevent duplicates.

Notes Page

The notes page provides you with a list of all available notes and the ability to search by title. There is also an option to add notes as well.

Individual Note Pages

By clicking on the see more button, you will be redirected to a separate note page where you can view and rate each note.

Add Notes Page

The add notes page allows you to upload images of your course notes in addition to a title and description.

Profile Page

The profile pages prompts you for a first and last name, email, biography, and your courses interests. The profile page also allows for editing of your profile.

Sign Out Page

The sign out page is what you will see once you log out of your profile.

Developer Guide

This section provides information of interest to Meteor developers wishing to use this code base as a basis for their own development tasks.

Installation

First, install Meteor.

Second, visit the Rainbow Notes application github page, and click the Code button to create your own repository with a copy of the application. Alternatively, you can download the sources as a zip file or make a fork of the repo. However you do it, download a copy of the repo to your local computer.

Third, cd into the rainbow-notes/app directory and install libraries with:

$ meteor npm install

Fourth, run the system with:

$ meteor npm run start

> meteor-application-template-react@ start *path to the app directory*
> meteor --no-release-check --exclude-archs web.browser.legacy,web.cordova --settings ../config/settings.development.json

[[[[[ ~/Desktop/rainbow-notes/app ]]]]]       

=> Started proxy.                             
=> Started HMR server.                        
Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
=> Started MongoDB.                           
I20221213-19:46:20.580(-10)? Creating the default profiles
I20221213-19:46:20.606(-10)?   Defining profile admin@foo.com
I20221213-19:46:20.803(-10)?   Defining profile user@foo.com
I20221213-19:46:20.899(-10)?   Defining profile johnson@hawaii.edu
I20221213-19:46:21.003(-10)?   Defining profile henric@hawaii.edu
I20221213-19:46:21.102(-10)?   Defining profile cmoore@hawaii.edu
I20221213-19:46:21.197(-10)?   Defining profile achriste@hawaii.edu
I20221213-19:46:21.289(-10)?   Defining profile leighj@hawaii.edu
I20221213-19:46:21.386(-10)?   Defining profile sin8@hawaii.edu
I20221213-19:46:21.497(-10)? Creating default courses.
I20221213-19:46:21.498(-10)?   Adding: ICS 111
I20221213-19:46:21.628(-10)?   Adding: ICS 211
I20221213-19:46:21.631(-10)?   Adding: ICS 241
I20221213-19:46:21.634(-10)?   Adding: ICS 314
I20221213-19:46:21.642(-10)? Creating default notes.
I20221213-19:46:21.643(-10)?   Adding: Circuit Notes Week 4
I20221213-19:46:21.767(-10)?   Adding: Circuit Notes Week 5
I20221213-19:46:21.770(-10)?   Adding: Valence and Conduction Band Week 3
I20221213-19:46:21.774(-10)?   Adding: P type Vs N type
I20221213-19:46:21.778(-10)?   Adding: Zener Diode Circuit
I20221213-19:46:21.782(-10)? Loading courses from private/courses.json
I20221213-19:46:21.835(-10)? Loading notes from private/notes.json
I20221213-19:46:23.737(-10)? Monti APM: completed instrumenting the app
=> Started your app.

=> App running at: http://localhost:3000/

If all goes well, the application will appear at http://localhost:3000.

Initialization

The config directory is intended to hold settings files. The repository contains one file: config/settings.development.json.

This file contains default definitions for Profiles, Notes, and Courses and the relationships between them.

The settings.development.json file contains two fields called “loadNotesFile” and “loadCoursesFile”. When set to true, then the data in the files app/private/notes.json and app/private/courses.json will also be loaded. The code to do this illustrates how to initialize a system when the initial data exceeds the size limitations for the settings file.

Quality Assurance - ESLint

Rainbow Notes includes a .eslintrc.js file to define the coding style adhered to in this application. You can invoke ESLint from the command line which will show the following when there are no errors.

$ meteor npm run lint

> meteor-application-template-react@ lint *path to the app directory*
> eslint --quiet --ext .jsx --ext .js ./imports && eslint --quiet --ext .js ./tests

$

ESLint should run without generating any errors. It’s significantly easier to do development with ESLint integrated directly into your IDE (such as IntelliJ).

Continuous Integration

ci-badge

Rainbow Notes uses GitHub Actions to automatically run ESLint and TestCafe each time a commit is made to the default branch. You can see the results of all recent “workflows” at https://github.com/rainbow-notes/rainbow-notes/actions.

The workflow definition file is located at .github/workflows/ci.yml.

Development History

The development process for Rainbow Notes conformed to Issue Driven Project Management practices. In a nutshell:

The following sections document the development history of Rainbow Notes.

Milestone 1

The goal of Milestone 1 was to create a set of React page mockups. The pages which were implemented are as follows:

Milestone 1 was managed using Rainbow Notes GitHub Project Board M1.

Milestone 2

The goal of Milestone 2 was to improve the functionality and design of our application through the use of MongoDB. Improvements include:

Milestone 2 was managed using Rainbow Notes GitHub Project Board M2.

Milestone 3

The goal of Milestone 3 was to improve the functionality of profiles and personalization of the website for each user. Improvements include:

Milestone 3 was managed using Rainbow Notes GitHub Project Board M3.

Community Feedback

Rainbow Notes is an application designed for our community and so we’ve asked some members on what they liked as well as some improvements. Here are some of their thoughts:

Treyton L.

Jericho M.

Tammy N.

Tim P.

Jason K.

Further Enhancements

As a result of the community feedback and our own reflections, we realized that there are many improvements that can still be implemented. Some examples include:

Team Contract

The Team Contract can be accessed here.

Team

Rainbow Notes is designed, implemented, and maintained by Alex Bozyck, Marc Ivan Manalac, Linda Nguyen, AJ Patalinghog, and Joshua Aaron Subia.