Tuesday, 21 December 2021

PWA App for Your PHP Website

 

In the modern-day website development, PWA is an essential need for all the websites we are making. Customers will always ask us to give provision for installing  the website as an icon in the particular customers mobile screen. So they can directly visit site clicking on an icon. This article's main aim is to get you through developing a simple app to install icon on customers mobile screen for easy navigation to your site. Advanced features like push applications wont be explained in this article.


Steps to Create PWA

Files Needed

1) manifest.json
2) script.js
3) service-worker.js
4) offline.html
5) Icons Folder with logos in different sizes

Note: Website should have SSL installed and should be sever in https://, that's mandatory requirement


Step-1

In your website header file, you have to include manifest json file and script js file.

<link rel="manifest" href="manifest.json">
 <script src="script.js" defer></script>


Step-2

Create  manifest.json file with following content

{
  "short_name": "AppDisplay Short Name",
  "name": "App Name- App Tagline",
  "description": "App-Description",
  "icons": [
    {
      "src": "https://sitename.com/icons/icon-48x48.png",
      "sizes": "48x48",
      "type": "image/png"
    },
    {
      "src": "https://sitename.com/icons/icon-72x72.png",
      "sizes": "72x72",
      "type": "image/png"
    },
    {
      "src": "https://sitename.com/icons/icon-96x96.png",
      "sizes": "96x96",
      "type": "image/png"
    },
    {
      "src": "https://sitename.com/icons/icon-144x144.png",
      "sizes": "144x144",
      "type": "image/png"
    },
    {
      "src": "https://sitename.com/icons/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "https://sitename.com/icons/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ],
  "start_url": "/",
  "background_color": "#f2f4f7",
  "display": "standalone",
  "scope": "/",
  "theme_color": "#f2f4f7"
}

For source of icons we have to create icons of different sizes in the icons folder same like defined in manifest file.


Step-3

Create script.js file with following content

const divInstall = document.getElementById('installContainer');
const butInstall = document.getElementById('butInstall');

/* Put code here */



/* Only register a service worker if it's supported */
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js');
}

/**
 * Warn the page must be served over HTTPS
 * The `beforeinstallprompt` event won't fire if the page is served over HTTP.
 * Installability requires a service worker with a fetch event handler, and
 * if the page isn't served over HTTPS, the service worker won't load.
 */
if (window.location.protocol === 'http:') {
  const requireHTTPS = document.getElementById('requireHTTPS');
  const link = requireHTTPS.querySelector('a');
  link.href = window.location.href.replace('http://', 'https://');
  requireHTTPS.classList.remove('hidden');
}

Step-4

Create service-worker.js file with following content

const CACHE_NAME = 'offline';
const OFFLINE_URL = 'offline.html';

self.addEventListener('install', function(event) {
  console.log('[ServiceWorker] Install');
  
  event.waitUntil((async () => {
    const cache = await caches.open(CACHE_NAME);
    // Setting {cache: 'reload'} in the new request will ensure that the response
    // isn't fulfilled from the HTTP cache; i.e., it will be from the network.
    await cache.add(new Request(OFFLINE_URL, {cache: 'reload'}));
  })());
  
  self.skipWaiting();
});

self.addEventListener('activate', (event) => {
  console.log('[ServiceWorker] Activate');
  event.waitUntil((async () => {
    // Enable navigation preload if it's supported.
    // See https://developers.google.com/web/updates/2017/02/navigation-preload
    if ('navigationPreload' in self.registration) {
      await self.registration.navigationPreload.enable();
    }
  })());

  // Tell the active service worker to take control of the page immediately.
  self.clients.claim();
});

self.addEventListener('fetch', function(event) {
  // console.log('[Service Worker] Fetch', event.request.url);
  if (event.request.mode === 'navigate') {
    event.respondWith((async () => {
      try {
        const preloadResponse = await event.preloadResponse;
        if (preloadResponse) {
          return preloadResponse;
        }

        const networkResponse = await fetch(event.request);
        return networkResponse;
      } catch (error) {
        console.log('[Service Worker] Fetch failed; returning offline page instead.', error);

        const cache = await caches.open(CACHE_NAME);
        const cachedResponse = await cache.match(OFFLINE_URL);
        return cachedResponse;
      }
    })());
  }
});

Step-5

Create offline.html file so that this content will be displayed when there is no internet connection. Put following content in the file.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Offline</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="theme-color" content="#3f51b5">
    <link rel="manifest" href="/manifest.json">
    <style>
      body {
        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
        -webkit-font-smoothing: antialiased;
      }
      img {
        display: block;
        margin-left: auto;
        margin-right: auto;
      }
      h1, div {
        text-align: center;
      }
    </style>
  </head>
  <body>
    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAEsCAYAAACG+vy+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRUM3NTFERjAzN0QxMUUxQUI5QkU5Q0VENTBFMjc2QSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxRUM3NTFFMDAzN0QxMUUxQUI5QkU5Q0VENTBFMjc2QSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFFQzc1MUREMDM3RDExRTFBQjlCRTlDRUQ1MEUyNzZBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFFQzc1MURFMDM3RDExRTFBQjlCRTlDRUQ1MEUyNzZBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hI3m0wAAiuJJREFUeNrsfQmA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">
    <h1>Offline</h1>
  </body>
</html>

Step-6

Create a folder called icons and upload icons with various sizes as defined in manifest file. your folder will be looking like this:-

Now when customer visit your site , they will be asked to add your app to their home screen. Then that icon will be seen just like the other app icon.




Wednesday, 15 December 2021

Restaurant POS Management System

 Simple POS software for managing small restaurants and cafeterias.It has all basic features available for running your small enterprise. It can be set up on any computers, tablets or pads, which users can use with ease.  


The features include:-


  • Store management
  • Ware House Management
  • Menu Management
  • Manage Stocks
  • Waiter Management
  • Customer Management
  • Supplier Management
  • Expense Management
  • POS Sales
  • Invoice and Receipt Management
  • Settings management
  • User management
  • Advanced Reports
Watch the demo below:-


Apartment Management System in PHP

 Apartment Management System is one of the best bedspace and partition management software available in the market. Nowadays people are using excel for managing their accounts, which is very time consuming. What we are offering is a system, where you can generate all rents and manage it in a single click. You just have to login and you will know the statistcs of rent paid, rent dues, utility bills amount, staff salary payment.etc.. Our Main Features include:-

  • Monthly Rent Calculation in a single click
  • Bedspace and partition allocation
  • Maintaining Expenses and utility Bills
  • Staff management and Payroll
  • Reports and statistics on due bills, paid bills or rent
  • Tenants doc management and history 
  • Reminders on due bills and rents
You can watch the demo below:-


Tenant Management System in PHP

 Tenant Management system is one of the best bedpace and partition management software available in the market. Nowadays people are using excel for managing their accounts, which is very time consuming. What we are offering is a system, where you can generate all rents and manage it in a single click. You just have to login and you will know the statistcs of rent paid, rent dues, utility bills amount, staff salary payment.etc.. Our Main Features include:-


  • Monthly Rent Calculation in a single click
  • Bedspace and partition allocation
  • Maintaining Expenses and utility Bills
  • Staff management and Payroll
  • Reports and statistics on due bills, paid bills or rent
  • Tenants doc management and history 
  • Reminders on due bills and rents

You can watch demo here:-


School Management System in PHP

 Our School management System is one of the top School management softwares out in the market. It has features dealing with managing of Frontoffice, backoffice, students classes,teachers management, Library management, Timetable schedules, Email and SMS notification,Store management, Vehicle management.etc..

Our main features includes:-

  • Front Office Administration
  • Visitor Book Logs
  • Phone Calls and postal Disptach Logs
  • Students and Admission procedures management
  • Guardian reports, Notifications and reminders
  • Fees collection & management
  • Income and Expense Tracking
  • Attendance management
  • Examination schedule and reports
  • Class Timetable generation, assigning of class teachers
  • Maintain sections,classes and study structures
  • Notice board, Emails and SMS notification
  • Download centre for students syllabus and study materials
  • Student and teachers login
  • Home work evaluation
  • Library Management
  • Inventory and school store management
  • School buses transport management( Assign vehicles and routes)
  • Studemnt's Hostel facility Management
  • Generate students Certificate and ID Card
  • Reports Generation on students, guardians,Fees, incomes, expenses.etc..
  • Managing userroles, sms and email settings
You can see a demo below:-



Pharmacy Management System in PHP

Pharmacy Management system is a simple software for managing pharmacies. With this, we can sell medicines with POS function available. Also we can manage medicine inventory, manage income, expenses,sales.etc. Lets look into the important features of this:-


  • Medicine Inventory Management
  • Recording purchases of medicines and stocks
  • Maintaining Client records
  • POS for medicine sales
  • Generating and Printing Invoices
  • Expenses management
  • Full sales, purchases,income reporting
  • Managing Staff Records

Below is demo for  one of the pharmacy management system we have:-




Another demo for Pharmacy management with POS function can be seen below.


Hospital Management System in PHP

 Our Hospital management system is equipped with all facilities which a hospital needed in his everyday run. Front office management, IN and OUT patient management,pharmacy management, pathology and radiologydepartments management, staff payrolls, stores and inventory mangement.etc.. we offer low cost solutions for your clinic or hospital, which you can manage all your records in a single system. we have reminders and notification systems inside our CRM, which will keep your customers track on the appointment due dates. 

Our Main Features includes:-

  • Front office management
  • OPD-out patient management
  • IPD-In patient management
  • Pharmacy management, Generating pharamcy bills
  • Pathology,Radiology Test allocation and result generation
  • Operation theatre Management
  • Blood bank management
  • TPA management
  • Income & Expense management
  • Ambulance Management
  • HR Management (Staff payroll & Leaves )
  • Reminders and notifications system
  • Reports of transaction,medicines,opd,ipd,payroll.etc.. almost everything
You can watch the demo of software below:-


Office Management Software in PHP

Office Management system is a combination of HR management and accounts management in a single system. This type of facility is rare in the software market, where you will get a software with both modules in a much lower price. The best thing is you can manage your accounts sales and purchases, inventories, employee management in a single system. Even you can configure your SMTP email in this system. This system is developed in codeigniter. You can edit and manage code as per clients requirement using the source code. Below are the main features of the software. 

  • Sales Management
  • Generating Invoices
  • Processing Shipping Orders
  • Delivery Order Management
  • Quotation Preparation
  • Purchase Management
  • Receiving Products in stocks confirmation
  • Customer and vendor management
  • Products and Inventory Management
  • Asset Management and Depreciation
  • Accounts Transactions, Deposits, Payables, recivables, Income & Expense Management
  • Chart of Accounts
  • Employee Management
  • Employee Salary Management and payslip Generation
  • Leave application Management
  • Employee login Facility
  • Employee Recognition awards
  • Attendance management
  • Notices and Email alerts
  • Employee document management
  • Multi Language support
  • SMTP email configuration and mail setup


 Below you can watch a demo of the above software. Please feel free to send your enquiries or doubts using the contact form on left side.


 

Thursday, 17 June 2021

Integrating Discord Signin in PHP website

 Discord is one of the top gaming social networking site available now. For some sites, it is required to integrate Discord Signin . So am explaining in this post how to do the same.

1) Create an App in Discord Developers Area

Visit: https://discord.com/developers/ by login and create an app.


Click on link New Application.

2. Credentials Update


In this screen, they will ask you for name of app, description,logo.etc.. Also you have to give the endpoint website URL, terms link,services link.etc... Also you will get the Application ID and secret from this screen. Copy it and keep it as we are using it in our script.

3)Creating OAuth Id's


Here they will ask you to provide the redirect URL after login with discord. Also you have to select the scopes which u needed after login in. The discord API will pass you all the required parameters based on the scope.


5)Configure BOT


Here add bot and you will get a token.Save it for our App.

6) Download Integrating Script from Github.

You have to download the following github code  in my repo. https://github.com/litto/Discord-Signin

Now based on this script I am explaining what to configure and how to achieve it..

5)Updating Credentials in the Script.

In the root folder, you can find the config file which you need to edit and update your credentials.Its code will be like this:-

<?php

# CLIENT ID

# https://i.imgur.com/GHI2ts5.png (screenshot)

$client_id = "#CLIENTID";


# CLIENT SECRET

# https://i.imgur.com/r5dYANR.png (screenshot)

$secret_id = "#SECRETID";


# SCOPES SEPARATED BY SPACE

# example: identify email guilds connections  

$scopes = "email";


# REDIRECT URL

# example: https://mydomain.com/includes/login.php

# example: https://mydomain.com/test/includes/login.php

$redirect_url = "http://sitename.com/login.php";


# IMPORTANT READ THIS:

# - Set the `$bot_token` to your bot token if you want to use guilds.join scope to add a member to your server

# - Check login.php for more detailed info on this.

# - Leave it as it is if you do not want to use 'guilds.join' scope.


# https://i.imgur.com/2tlOI4t.png (screenshot)

$bot_token = "#BOTTOKEN";

Update all the keys, scopes which we already configured in the Discord developer screen.

6) Now place includes folder in the root of your application. Set redirect URL to the login script in the includes folder.

7) Now run the index file, after signing you can see the details fetched from discord app.These details you can use according to your convinience.


Setting Up Google OAuth Content Screen For Creating API Credentials

 Google will only allow you to create API credentials only after setting up OAuth content screen. This is necessary for creating Google signing also. So Iam explaining here how to do that step by step.

1) Click on Configure Consent Screen


2) Selecting the  Usertype 



3)Giving App Information

Give Appname,Support Email and Applogo.


You have to give application home page url, privacy policy url and terms conditions URL.


Add the authorised domains for using this app. Also fill up the developer email address .Then click on Save and Continue.

4) Define Scopes of the App


Click on Add Scope link


Here select checkboxes for email and profile. For this permission, you no need of any approval from the google. Click Continue.

5) Define Test Users


Here you can add all gmail users who can test this app. you can add around 100 users for this.
Then click on continue.

6) Summary Screen



This is the last stage where summary of your app will be shown. This means your process completed successfully.. Now you can create API credentials for the apps.