Skip to content

Architecture

Erik Connerty edited this page Oct 17, 2022 · 75 revisions

Frameworks, Libraries, APIs, etc

Language:

  • JavaScript

Framework:

  • React-Native: React native is the ideal choice for our applications development because of its cross-platforming capabilities. It allows for rapid development on both android and iOS.

Libraries:

  • React Navigation - React navigation allows for navigation through the react application. This will allow us to transition between screens and much more.
  • React Native Firebase - We use this in order to connect to the firebase API.

Database API's:

We are going to use firebase's firestore for storing and managing our data, and firebase authentication for our user's accounts.

Release

 We will be using the npm package manager and will use the react native cli and android studio to build an apk.

Model/Schema

Database overview

Screenshot 2022-10-16 204349

This is our database schema. We will be using the the Firebase Firestore to store user data. Detailed in this image are the Documents that will be present in our database. You can see that we will have Users, DMs, Events, Groups, and Posts. These data structures will contain all relevant information for the app, to be displayed to the user.

Users

   name: String
   bio: String
   major: String
   firstLogin: boolean
   profilePic: Image
   DMs: DM[]

DMs

   sender: Users
   recipient: Users
   message: String
   date: Date

Events

   title: String
   description: String
   date: Date
   upvoteCount: int
   picture: Image

Groups

  title: String
  users: Users[]
  DMs: DM[]

Posts

  body: String
  date: Date
  upvoteCount: int
  replies: Replies[]
  creator: Users

Replies

  body: String
  date: Date
  creator: Users

Models

Screenshot 2022-10-16 205439

This is our top down view of Campus Connect. We have detailed all of the potential screens that can be shown within the app, as well as a general navigation schema. At the top, we have our Firebase server, which will store all user data and provide authentication services. From there our app begins.

First is the LoginPage, which will have all of the necessary screens to welcome the user, log them in, or allow them to register. This page will validate the current user against the firebase server and then pass this state onto the rest of the app. Depending on whether it is the User's first login, this page will either redirect to the RegistrationPage or to the HomePage.

After completing registration and logging in, the user will be brought to the HomePage. This page will provide the general navigational layer for the rest of the app. Using React Native's Drawer Navigator, we will have a single homepage that has links to various other pages that provide different functionality throughout our app. From here, you can view the PostsPage, the DMs Page, the GroupsPage, or the EventsPage. All of these sub-pages will be displayed within the framework of the HomePage, using the Drawer Navigator. From this page, there will also be an option to view the BioPage, which will offer the ability to change profile pic, edit bio, and change any other relevant user information. All of the subpages of the HomePage will contain the necessary data structures to display the data of their respective pages. For instance, the EventsPage will have a list of events to be displayed to the user.

Group Member Contributions

Erik

Erik, Tim, Neekon

Coby

Groups Page

Chase

Chase

Neekon

Firebase Integration

Coby, Erik

Potential iOS Integration

Tim, Coby