{"id":23914492,"url":"https://github.com/ra101/entry-management-software","last_synced_at":"2025-04-16T02:03:40.490Z","repository":{"id":43268040,"uuid":"225177356","full_name":"ra101/Entry-Management-Software","owner":"ra101","description":"An entry management application built using electron(node.js) and firebase [also nodemailer and nexmo]","archived":false,"fork":false,"pushed_at":"2022-03-11T05:52:53.000Z","size":1719,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-16T02:03:27.326Z","etag":null,"topics":["dotenv","electron","electron-app","electron-application","electron-rebuild","electron-reload","electronjs","entry-management-system","firebase","firebase-database","javascript","nexmo","nexmo-ap","nexmo-sms","node","node-js","nodejs","nodemailer","nodemailer-transport","summergeeks"],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ra101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-01T14:45:04.000Z","updated_at":"2024-06-30T01:03:26.000Z","dependencies_parsed_at":"2022-09-23T02:50:36.407Z","dependency_job_id":null,"html_url":"https://github.com/ra101/Entry-Management-Software","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra101%2FEntry-Management-Software","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra101%2FEntry-Management-Software/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra101%2FEntry-Management-Software/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra101%2FEntry-Management-Software/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ra101","download_url":"https://codeload.github.com/ra101/Entry-Management-Software/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249183103,"owners_count":21226140,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotenv","electron","electron-app","electron-application","electron-rebuild","electron-reload","electronjs","entry-management-system","firebase","firebase-database","javascript","nexmo","nexmo-ap","nexmo-sms","node","node-js","nodejs","nodemailer","nodemailer-transport","summergeeks"],"created_at":"2025-01-05T10:14:24.410Z","updated_at":"2025-04-16T02:03:40.448Z","avatar_url":"https://github.com/ra101.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Screenshots/welcome.png\"\u003e\n\u003c/p\u003e\n\n\n\n![Made with Electron](https://img.shields.io/badge/Made%20with-Electron-004475?style=for-the-badge\u0026logo=electron) [![Issues](https://img.shields.io/github/issues/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/issues) [![Forks](https://img.shields.io/github/forks/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/network/members) [![Stars](https://img.shields.io/github/stars/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/stargazers) ![Maintained](https://img.shields.io/maintenance/yes/2019?style=for-the-badge\u0026logo=github)  ![Open Source](https://img.shields.io/badge/Open%20Source-gray?style=for-the-badge\u0026logo=open-source-initiative) [![Telegram](https://img.shields.io/badge/Telegram-Chat-informational?style=for-the-badge\u0026logo=telegram)](https://telegram.me/ra_101)\n\n\n# :desktop_computer: Download\n\n[![Release](https://img.shields.io/github/release/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/releases)\n\nTo make the above installation working Goto [dotenv](#dotenv)\n\n\n\n## :card_index_dividers: Index\n\n- [Download](#desktop_computer-download)\n- [About](#briefcase-about)\n  - [Database](#ledger-database)\n  - [Workflow](#chart_with_upwards_trend-workflow)\n- [Development](#gear-development)\n  - [Installation](#floppy_disk-installation)\n  - [Build](#package-build)\n- [File Structure](#open_file_folder-file-structure)\n- [Credit/Acknowledgment](#star2-creditacknowledgment)\n- [License](#scroll-license)\n\n## :briefcase: About\n\nIt is an \u003cb\u003eEntry Management \u003ci\u003eCross-Platform\u003c/i\u003e Software\u003c/b\u003e built using Electron (a Node.js framework)  and Firebase (for database), This app includes Email (Nodemailer Module) and SMS (Nexmo API) automation.\n\n\n### :ledger: Database\n\nThere are 2 collections: Host and Visits, which have entries as given below...\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Screenshots/firebase.png\"\u003e\n\u003c/p\u003e\n\n\n\n### :chart_with_upwards_trend: Workflow\n\nThere are 2 categories \u003cb\u003eHost\u003c/b\u003e and \u003cb\u003eVisitor\u003c/b\u003e and 2 Constraint that Each Host can be visited by only one visitor and host can cannot leave until visitor leaves.\n\nHost collection in database has an entry called **\"Session\"** which can take either *true, false* or *\"invalid\"*\n\nSo, initially there are 4 button:\n\n- Add Host \u003ci\u003e(always active)\u003c/i\u003e\n- Remove Host \u003ci\u003e(active iff any of host.session is found 'false')\u003c/i\u003e\n- Check-In *(active iff any of host.session is found 'false')*\n- Check-Out *(active iff any of host.session is found 'true')*\n\n\n\n\n#### :heavy_plus_sign: Add Host\n\n\u003cp align='center'\u003e\n    \u003cimg src='./Screenshots/add-host.png'\u003e\t\n\u003c/p\u003e\n\n\n\nA form that stores Name,Email, Phone No and Address(abc) given by host ontu firebase, along with these entries, Time-in, time-out and session are also added where, time-in is timestamp of form submition, time-out is default to -1 and session is set to false.\n\n\n\n#### :heavy_minus_sign: Remove Host \n\n\u003cp align='center'\u003e\n    \u003cimg src='./Screenshots/remove-host.png'\u003e\t\n\u003c/p\u003e\n\n\n\nSelect the host to be removed, and click the button, all this button does is add update time-out of host to current timestamp and set session to \"invalid\". (that means host no longer available).\n\nThis makes Data remain in database and yet not included in visiting process\n\n\n\n#### :arrow_up:\tCheck-In\n\n\u003cp align='center'\u003e\n    \u003cimg src='./Screenshots/check-in.png'\u003e\t\n\u003c/p\u003e\n\n\n\nDropdown box appends all hosts with `session===false`.\n\nA form that stores Name,Email, Phone No and Host ID(abc) given by visitor ontu firebase, along with these entries, Time-in and time-out are also added where, time-in is timestamp of form submition and time-out is default to -1.\n\nIt also update the Host(ID).session to 'true'. (making host accupied)\n\nAfter this Email and a SMS is sent to Host using selected ID, stating the details of visitor.\n\n\n\n#### :arrow_down:\tCheck-Out\n\n\u003cp align='center'\u003e\n    \u003cimg src='./Screenshots/check-out.png'\u003e\t\n\u003c/p\u003e\n\n\n\nDropdown box appends all visitors with `time-out===-1`.\n\nSelect the visitor to check out, and click the button, all this button does is update time-out of visitor to current timestamp and set session of host id it is associated with, to false. (that means host is no longer accupied).\n\nAfter this Email and a SMS is sent to Visitor, stating the details of zer visit.\n\n\n\n## :gear: Development\n\n### :floppy_disk: Installation\n\n\nIf you just want to do a simple test run of the application, you can  first\n\n- Clone the repository\n\n```bash\n$ git clone https://github.com/ra101/Entry-Management-Software.git\n```\n\n- Install dependencies by using the following commands.\n\n```bash\n$ cd Entry-Management-Software\n$ sudo npm install\n```\n\n- Obtain API Key \u0026 API Secret from [Nexmo](https://www.nexmo.com/)\n\n- Create an app in Firebase and obtain its Credentials from [Firebase](https://firebase.google.com/)\n\n  \n##### dotenv\n- Create a `.env` file in root directory and assign the following environment variables\n  `NOTE: don't version control your .env file, make sure .env is added in .gitignore file`\n\n```bash\n$ touch .env #assuming you are in root directory of app\n$ echo \"EMAIL=\u003cYour/Admin's Email Id\u003e\" \u003e\u003e .env\n$ echo \"PASS=\u003cYour/Admin's Email Password\u003e\" \u003e\u003e .env\n$ echo \"FBKEY=\u003cFirebase Key\u003e\" \u003e\u003e .env\n$ echo \"AUTHDOMAIN=\u003cFirebase Authdomain\u003e\" \u003e\u003e .env\n$ echo \"DATABASEURL=\u003cFirebase databaseURL\u003e\" \u003e\u003e .env\n$ echo \"PROJECTID=\u003cFirebase ProjectID\u003e\" \u003e\u003e .env\n$ echo \"STORAGEBUCKET=\u003cFirebase Storage Bucket\u003e\" \u003e\u003e .env\n$ echo \"MESSAGINGSENDERID=\u003cFirebase Messaging SenderID\u003e\" \u003e\u003e .env\n$ echo \"APPID=\u003cFirebase AppID\u003e\" \u003e\u003e .env\n$ echo \"NXKEY=\u003cNexmo API key\u003e\" \u003e\u003e .env\n$ echo \"NXSECRET=\u003cNexmo API Secret\u003e\" \u003e\u003e .env\n\n```\n\n\n- Firestore uses gRPC. This works in all types of Electron envs but you may see this error at first: “**Failed to load gRPC binary module because it was not installed for the current system”** . there is devDependencies to resolve that i.e. electron-rebuild, more on that in this [Article](https://medium.com/firebase-developers/using-firebase-in-electron-tips-and-tricks-24ac5b44bf5a).\n\n```bash\n$ npm install --save-dev electron-rebuild\n```\n\nThen, whenever you install a new npm package, rerun electron-rebuild:\n```bash\n$ npm run rebuild\n```\n\n- Finally run the application using \n\n```bash\n$ node start\n```\n\n\n### :package: Build\n\nInstall electron-builder as  devDep and run dist:\n```bash\n$ npm install --save-dev electron-builder\n$ npm run dist\n```\n\nThis will Create a \"dist\" named folder containing unpacked (folder with multiple files) and Installer (executable). These will show an error, as there is no .env file. To resolve this add .env in installed folder (in case of Installer) or .env directly to uppacked folder\n\n\n## :open_file_folder: File Structure\n\n- Add a file structure here with the basic details about files, below is an example.\n\n```bash\n.Entry-Management-Software\n├── .gitignore\n├── add.html\n├── app.html\n|\n├───images\n│   ├── host.png\n│   └── visitor.png\n|\n├── in.html\n├── index.js\n├── LICENSE\n├── min.html\n├── out.html\n├── package-lock.json\n├── package.json\n├── README.md\n│\n├───scripts\n│   ├── app.js\n│   ├── display.js\n│   ├── form.js\n│   └── messaging.js\n│\n└───stylesheet\n    ├── app.css\n    └── form.css\n\n3 directories, 19 files\n```\n\n\n\n## :star2: Credit/Acknowledgment\n\n[![Contributors](https://img.shields.io/github/contributors/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/graphs/contributors)\n\n## :scroll: License\n\n[![License](https://img.shields.io/github/license/ra101/Entry-Management-Software?style=for-the-badge)](https://github.com/ra101/Entry-Management-Software/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fra101%2Fentry-management-software","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fra101%2Fentry-management-software","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fra101%2Fentry-management-software/lists"}