All Projects → AmitXShukla → Online School Management App Angular Firebase

AmitXShukla / Online School Management App Angular Firebase

Angular 11.0 Firebase App - Online School , Student Management App

Projects that are alternatives of or similar to Online School Management App Angular Firebase

mangosta-android
MongooseIM client for Android
Stars: ✭ 31 (-74.17%)
Mutual labels:  mobile-app, android-app
Magicprint Ecommerce App Android
E-Commerce App Source Code for Android with Material Design Pattern Using Firebase and MySQL with Android Lottie Animations just like Flipkart, Myntra and Amazon :)
Stars: ✭ 331 (+175.83%)
Mutual labels:  android-app, firebase
Android-daily-read-tips
log for articles and info in android for every developer
Stars: ✭ 13 (-89.17%)
Mutual labels:  mobile-app, android-app
Evabs
An open source Android application that is intentionally vulnerable so as to act as a learning platform for Android application security beginners.
Stars: ✭ 173 (+44.17%)
Mutual labels:  android-app, mobile-app
Eh Redux
A E-Hentai reader written in Flutter.
Stars: ✭ 67 (-44.17%)
Mutual labels:  android-app, mobile-app
xkcdViewer
A beautiful xkcd viewer app written with Flutter
Stars: ✭ 60 (-50%)
Mutual labels:  mobile-app, android-app
Aawazein
A News Application 🗞️ built under 24 hours ⏰. It is built 🚧 with React Native ⚛️. 🚀 and 3 cups of Chai ☕
Stars: ✭ 28 (-76.67%)
Mutual labels:  mobile-app, android-app
Ionic Starter Template
Reinventing the wheel, again! Sorry Ionic Team... but there are many newbies learning on Youtube!
Stars: ✭ 208 (+73.33%)
Mutual labels:  android-app, mobile-app
Gas Oil Mixture Mobile
Mobile app for calculation of gasoline/oil ratio for 2 stroke engines built with React Native.
Stars: ✭ 61 (-49.17%)
Mutual labels:  android-app, mobile-app
Android Notes
Android开发核心知识点笔记(不断更新中🔥)
Stars: ✭ 737 (+514.17%)
Mutual labels:  mobile-app, source-code
Firebasecrud
Rich UI and animation flutter app backed by firebase
Stars: ✭ 121 (+0.83%)
Mutual labels:  android-app, firebase
Mvvm Reddit
A companion project for our blog post on better Android software development using MVVM with RxJava.
Stars: ✭ 106 (-11.67%)
Mutual labels:  android-app, mobile-app
Ionic-ElastiChat-with-Images
Ionic Magic Chat with Angular Elastic, Autolinker.js and more!
Stars: ✭ 66 (-45%)
Mutual labels:  mobile-app, android-app
Threema Android
Threema App for Android.
Stars: ✭ 478 (+298.33%)
Mutual labels:  android-app, mobile-app
Searchitem
小搜搜——商品条形码/二维码搜索APP
Stars: ✭ 96 (-20%)
Mutual labels:  android-app, firebase
Laqul
A complete starter kit that allows you create amazing apps that look native thanks to the Quasar Framework. Powered by an API developed in Laravel Framework using the easy GraphQL queries language. And ready to use the Google Firebase features.
Stars: ✭ 110 (-8.33%)
Mutual labels:  mobile-app, firebase
Anypicker
jQuery Picker Library for Android, iOS & Windows Phone. eg Date Picker, Time Picker, DateTime Picker, Custom Select etc
Stars: ✭ 114 (-5%)
Mutual labels:  android-app
Canner Firebase Cms
🔥 Content management for Firebase Realtime Database with SSR supported with NextJS, for blog, ecommerce, mobile apps and even chatbot! This project is based on Canner CMS
Stars: ✭ 118 (-1.67%)
Mutual labels:  firebase
Fcmsharp
Firebase Cloud Messaging (FCM) with .NET
Stars: ✭ 115 (-4.17%)
Mutual labels:  firebase
Hify
Social network powered by firebase
Stars: ✭ 115 (-4.17%)
Mutual labels:  firebase
- If you like this project, please consider giving it a star (*) and follow me at GitHub & YouTube.

Online School Management App

Please watch Video Tutorials for complete installation and code review!

This repository is updated to Angular 11.0.0

Please don't forget to upgrade your Angular CLI to V11 and update tsconfig.json as well.

Tools: 

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

send an email to [email protected] for Pro version enquiries.

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)

Let's get started :-

// Before we start, Please make sure you have latest version of node js installed.
// 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
// for nodejs version 14
$ curl -sL https://deb.nodesource.com/setup_14.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
$ cd client
$ ng new SMA
$ cd SMS
$ ng serve

Setup Google Firestore / Firebase Database & Role / Rules

service cloud.firestore {
  match /databases/{database}/documents {
// 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
}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].