Giter Site home page Giter Site logo

sridharcool0005 / online-school-management-app-angular-firebase Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amitxshukla/online-school-management-app-angular-firebase

0.0 1.0 0.0 877 KB

Angular 9.0 Firebase App - Online School , Student Management App

TypeScript 34.39% HTML 64.70% CSS 0.73% JavaScript 0.18%

online-school-management-app-angular-firebase's Introduction

Online School Management App

This repository is updated to Angular 9.0

Tools: 

front-end: Angular 9.0.0
back-end: Google Firestore / Firebase
Pro Version: AI, Machine Learning Algorithm supported Advance features

Objective

  1. Manage Small, Medium, Large Schools / Colleges online for free
  2. Role based Online App access for Student, Parents, Teacher and School Management
  3. Instant password/role reset for all users
  4. Complete Online School Management App for storing Students Records, Grades, Fee, Attendance, Staff and a lot more.
  5. Live School - Student/Parent Notifications (Marks, Fees, Online Homework posting etc)
  6. Paperless Online App based Education features
  7. Social Authentication
  8. Online and/or Offline (delayed capture) App
  9. One App for multiple platforms (iOS, Android, Desktop, Cloud etc.)
  10. Store and Access millions of records instantly
  11. Paperless and Mobile on-premise/private cloud App deployement
  12. Instant access to ALL historical records at anytime
  13. iOS/Android app (notification enabled) / Advance Custom features (Pro version only)
  14. Unlimited Storage (only limited to server/database hosting)
send an email to [email protected] for Pro version enquiries.

Let's get started :-



Before we start, Please make sure you have latest version of node js installed.
Let's head out to https://nodejs.org/en/ and grab latest nodejs.
Once you have nodejs installed, open command prompt/terminal window.
$ node -v // make sure, this command comes back with a node version
$ npm -v // make sure, this command comes back with a npm version

How to Install NodeJS on Windows, Mac, Linux & ChromeOS

# First run
$ sudo apt-get update
# and then if needed
$ sudo apt-get install curl gnupg -y
# or nodejs version 11
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt-get install -y nodejs

Install Angular CLI

$ npm install -g @angular/cli
$ ng -v // make sure, this command comes back with a npm version

$ mkdir app
$ cd app
$ mkdir client
$ ng new SMA
$ cd SMS
$ ng serve


Setup Google Firestore / Firebase Database & Role / Rules

// SMS App Rules START
match /SMS_ROLES/{document} {
allow read, write: if false;
}
match /SMS_USERS/{document} {
allow create: if exists(/databases/$(database)/documents/SMS_ROLES/$(request.resource.data.secretKey))
&& get(/databases/$(database)/documents/SMS_ROLES/$(request.resource.data.secretKey)).data.role == request.resource.data.role;
allow update: if exists(/databases/$(database)/documents/SMS_ROLES/$(request.resource.data.secretKey))
&& get(/databases/$(database)/documents/SMS_ROLES/$(request.resource.data.secretKey)).data.role == request.resource.data.role
&& isDocOwner();
allow read: if isSignedIn() && isDocOwner();
}
match /SMS_CONFIG_ENROLL_CD/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_CONFIG_FEE_CD/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_CONFIG_MARKS_CD/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_STUDENTS/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_STUDENTS/{document}/notifications/{doc} {
allow read: if isSignedIn();
}
match /SMS_FEE/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_MARKS/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_EMPLOYEE/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff();
}
match /SMS_SALARY/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff();
}
match /SMS_SALARY_CD/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff();
}
match /SMS_VOUCHER/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff();
}
match /SMS_EXPENSES/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff();
}
match /SMS_ASSIGNMENT/{document} {
allow read, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
allow write: if true;
}
match /SMS_CLASSES/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_HOMEWORK/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
match /SMS_TUTORIALS/{document} {
allow read, write, delete: if isSMSAdmin() || isSMSStaff() || isSMSTeacher();
}
function isSMSAdmin() {
return get(/databases/$(database)/documents/SMS_USERS/$(request.auth.uid)).data.role == 'admin';
}
function isSMSStaff() {
return get(/databases/$(database)/documents/SMS_USERS/$(request.auth.uid)).data.role == 'staff';
}
function isSMSParent() {
return get(/databases/$(database)/documents/SMS_USERS/$(request.auth.uid)).data.role == 'parent';
}
function isSMSTeacher() {
return get(/databases/$(database)/documents/SMS_USERS/$(request.auth.uid)).data.role == 'teacher';
}
function isSMSStudent() {
return get(/databases/$(database)/documents/SMS_USERS/$(request.auth.uid)).data.role == 'student';
}
function isDocOwner(){
// assuming document has a field author which is uid
// Only the authenticated user who authored the document can read or write
return request.auth.uid == resource.data.author;
// This above read query will fail
// The query fails even if the current user actually is the author of every story document.
// The reason for this behavior is that when Cloud Firestore applies your security rules,
// it evaluates the query against its potential result set,
// not against the actual properties of documents in your database.
// If a query could potentially include documents that violate your security rules,
// the query will fail.
// on your client app, make sure to include following
// .where("author", "==", this.afAuth.auth.currentUser.uid)
}
function isSignedIn() {
// check if user is signed in
return request.auth.uid != null;
}
// SMS App Rules END

online-school-management-app-angular-firebase's People

Contributors

amitxshukla avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.