Purdue Workspaces is a CRUD mobile application developed using Javascript and React Native to allow Purdue students to form workspaces, or study groups, across campus for the course they would like.
Ever since I had joined Purdue and its subreddit on Reddit, I had noticed how, around the time of midterms or finals, students would post on Reddit asking for others who want to study the same subject to join their 'GroupMe chat'. There was no effective platform that would enable people who wanted to study a given subject to study with other strangers. Not to mention, many people who would have otherwise been interested in joining the study group would not know about the GroupMe if they do not use Reddit often. To overcome this problem and provide a seamless way of forming workspaces across campus whenever one feels like, I created this app. Now, others who want to join this workspace can do so within a few touchstrokes of their phone.
-
React Native: An open-source mobile application framework to build cross-platform software by Facebook.
-
Firebase: A mobile application development platform by Google.
a) Firestore: A flexible, no-SQL database to maintain persistent storage of mobile application data.
-
Google Places API: A service API that requests and provides information about geographic locations
a) Google Autocomplete: Returns JSON objects of place predictions as user types into the search bar
-
Purdue API: A REST-ful API that provides Purdue course catalog information in JSON format and allows SQL-esque queries
-
Native Base: A cross-platform UI resource
Run the following steps on command line:
-
Install React Native CLI:
npm install --g react-native-cli -
Clone this repo:
git clone https://github.com/aniketg17/PurdueWorkspaces.git -
Change directory into the repo and install the necessary dependencies:
cd [Project folder name] && npm install -
Install podfiles:
cd ios && pod install && cd ..
-
Change directory into the repo:
cd [Project folder name] -
Run the emulator:
react-native run-iosfor iOS andreact-native run-androidfor Android -
Wait for your simulator to open.
- As mentioned before, Firebase's Firestore is used to store data regarding the sessions. To maintain consistency in the database, whenever a timestamp for joining or creating a new session is recorded, to be safe, the time is converted into EST (Eastern Standard Time).
- All the locations that are rendered on
purdueLocations.jsare biased to be in and around Purdue University. Purdue APIgets updated often and reflects the current course catalog always. In those terms, the application is robust and will always include all of the given semester's courses and subjects.- The ideal way to delete sessions in the database is to delete the sessions when the time is past the sessions' end time. To do this, most likely a server or script that runs all the time is needed, which would cost money. To avoid this, the delete operation runs when a user tries to fetch sessions of a particular course. Only the workspace sessions that are active or yet to be active will be visible and the rest are deleted automatically.
The first gif demonstrates the workspace creation process:
The second gif shows how a user can join an existing workspace. In this case, 2 people are already in the initially created workspace (the host and then a sample attendee):
Further improvements can be made to this project, of course.
- Given more time, I would probably want to add a user authentication system to avoid the problem of fake/artificially-inflated attendee counts.
- Furthermore, as an additional feature, which rests upon the aforementioned authentication system, is a robust messaging system. With that, there will be no need at all to potentially have to share contact information. At that point, this app will certainly become fully self-sufficient.

