Skip to content
Abdul Malik edited this page Mar 28, 2021 · 6 revisions

( Wiki under construction ⚠️ )

Introduction

OU Notes is an application to [Upload, Download, Upvote, Downvote, Report] Documents.

Each document may contain Notes, Previous Question Papers, Syllabus and links to helpful resources.

These documents are further organized into subjects offered by my university πŸ“˜πŸ‘¨β€πŸŽ“

Why my university ?

Well.. let's take an example of a subject called Database Management Systems. Your university might call it Management Database Systems or some other university might call it System Databases , in fact IT (Information Technology) students from my university have the exact same subject named Database Systems .

So you get it, there's a bunch of names so to decrease this complexity we zeroed in on only one university for now.

Do we intend to expand to other universities?

Ofcourse ! this is the whole reason we are open-source. Let's all get together and make an application for every university on the planet ! Can't wait to see your contribution.

Page Contents

Pre-Requisites ( i.e what you need to know to contribute )

Flutter

This one is obvious.

Stacked Architecture

This is the architecture we used to build the application.

Don't panic if you haven't heard this, just go through this playlist on YouTube and you're good to go

JavaScript ( optional )

The Firebase Cloud Functions part of the application uses JavaScript.

Components of the application

OU Notes Component Diagram

Firebase Database

All the data of the application is stored in the Firebase Database. The database design is what you see in the image here.

Firebase Iteration

Now the real database design looks like this

firebase structure db

The top-level collections

  • Notes
  • Question Papers
  • Syllabus
  • Links

All are used to store temporary documents. So replace these collections with the temp collection you see in the DB design diagram above, this was a last minute decision.

What are temporary documents ?

We'll get back to this later, but when a user uploads a document it is considered a temporary document and as soon as the document is verified by the admins it becomes a verified document

Firebase Storage

There's nothing much to say here. When a user uploads a document, the actual file is uploaded to the Firebase Storage and all the meta-data related to the file ( name, subject, uploader etc.) are stored in the Firebase Database. Pretty obvious.

Google Drive Storage

Once the admins verify the document and its state changes to a verified document, the admins upload it to Google Drive.

Google Drive OU Notes

Firebase Cloud Functions

The textbook definition is :

Cloud Functions for Firebase is a serverless framework that lets you automatically run backend code in response to events triggered by Firebase features

This basically means we can run a function on one of Google's servers whenever an event is triggered. This event in our case is an admin uploading a document of a particular subject.

When this event is triggered, Google gives us access to the information of the document changed in the database. Now, we can use this to determine its subject and accordingly retrieve data about which semesters and branches this subject is present. Based on this data we send out a notification to all the users in that particular semester and branch. For example Programming in C++ is a subject for Semester 1 and CSE Branch students, so the notification would only received by those students.

Download Links

Setup and Configuration

coming soon.. ( i only have 2 hands you see )