NotePal is a note-sharing application for UTD, created and maintained by the Theta Tau Alpha fraternity. Users can anonymously upload notes or other materials relevant to their classes by specifying class information (ex. CS 1336 w/ Professor X) and tag(s) that classify the information within the provided notes (ex. Product Rule). Users can also anonymously search for notes by class or tag.
Note uploads will be monitored using image-detection ML algorithms to protect the system from explicit or non-relevant images.
The front end is built using React.js, the APIs of the back-end are built using Node.js/Express.js and Flask, the ML model is built using PyTorch (Binary Classification Model using a pre-designed convolutional neural network that is trained on more than a million images from the ImageNet database^[1]^ called efficientnet_b0), the images are stored in a "bucket" architecture (similar to an AWS S3 bucket) on the Box. Image metada is organized in an SQL RDMS called MariaDB (community-developed, commercially supported fork of the MySQL^[2]^) Additionally, the certain static information is cached using the redis platform. The application servers are self-hosted and self-run.
This project is the idea of Ashar Alvany, developed and expanded on by the NotePal Team at Theta Tau Alpha (UTD Fraternity). The project's backend relies on an API developed by UTD's Nebula Labs. Finally, we are hoping to get the word out using UTD Mercury.
- Make sure git and node are installed
- Download the repo
mkdir NotePal git init git branch -m main git remote add origin https://github.com/ThejasKumar100/NotePal git pull origin main
- Go to the Box website and sign in with your UTD email. Create a folder named "NotePal". Open the folder. The folder ID can be found within the URL after the final forward slash. This ID will replace the existing number at back-end/server.js line 274.
- Go to the Box Developer Console and create a new custom app (purpose is other and any specification is okay, use User Authentication (OAuth 2.0)). Add your OAuth2.0 Credentials (under the Configuration tab) to the .secrets document. Generate a Developer Token (also under the Configuration tab), and paste it in back-end/server.js at line 66. This token needs to be regenerated every hour.
.
- Create a file called .secrets in the back-end folder consisting of MariaDB connection info, Box info, and API keys (request this file from the project lead).
- Run the back-end
cd back-end
npm install
node server.js
- Run the front-end
cd react-front-end
npm install
npm run dev
(For NotePal bugs, please contact thetatauutd@gmail.com)
- The "No search results" message always shows before the API loads the search results in
(For NotePal feature requests, please contact thetatauutd@gmail.com)
- (WIP) Machine Learning model to auto remove certain categories of non-relevant pictures
- Creating a systematic approach to commenting/reacting to posted notes
- Allow the uploading of PDF's (autoconversion on the backend?)