Queue management system backend.
- or -
Post a project like this$$
- Posted:
- Proposals: 3
- Remote
- #671615
- Expired
Description
Experience Level: Intermediate
Estimated project duration: More than 6 months
General information for the business: Queue Management solutions
Description of requirements/functionality: This is a queue management system (like the ones that operate on banks).
The concept is simple, clients can (instead of waiting in a line) request queue tickets through their mobile device, or through our website.
The server will be running on small mini pc in each bank branch we put it, and will be able to issue tickets to both remote clients and local (physically) clients through a button device. There will be some realtime functionality, but I believe what I'm looking for here is a secure API.
The project is made of 3 parts:
1) The client (wether that is through a mobile app, or website)
2) User management server - that keeps track of the user database (payments etc) and talks with our mobile app. (Probably a Rest server)
3) Queue management server that runs on mini pc on each bank.
Now, ABOUT (3):
Informative:
- The code will run on a raspberry pi or some other similar mini pc
- There will be a button device (hardware) that runs code when pressed. (This will be created by me - I'm just saying it here for informative reasons)
Functionality I want implemented:
Queue management system that:
- Starts from 0 each day and keeps incrementing with each client that requests a ticket (lets call that number the current ticket number or CTN):
-- A ticket can be issued to each client that requests it (wether that be through a mobile application or through one of the button devices).
-- If a ticket is requested remotely, we make sure that the user management server (2) allows us to proceed in issuing this ticket (has the user payed?)
- It keeps realtime connection with clients providing them with the CTN (whenever the CTN changes on the backend, the clients gets the new CTN instantly).
- Calculates the average waiting time and also notifies the clients instantly when that average waiting time (AWT) changes.
- Allows a certain ammount of tickets to be held in the servers custidy and not be given away as normal tickets (VIP tickets)
- Allows a remote client to cancel his ticket (in case he changes his mind)
- Keeps some basic analytics like:
-- how many users today?
-- how many of them through mobile app?
-- how many of them through the hardware device locally (button device)?
-- how many of them left without using their ticket?
-- how much (average) time did it take for a user to get bored and leave without using his ticket.
and submits this data to our user management server (2) at the end of the day.
Things to keep in mind:
- Each user must be able to get 1 and ONLY 1 ticket before it expires (then he can get another if he wants to).
--Thus we must check our user management server (2) on wether the current user has requested another ticket before issuying this one.
- Security is an issue, we don't want users getting tickets remotely from our api for free.
- The backend will be talking with:
--our user management server (2)
--many mobile app clients
--one local hardware device (button device) - which may be the same device the queue management server is running on
--a website (which must also be able to display the CTN, AWT, and request a ticket)
-in the future sms or calls might be a way to get tickets as well.
Scalability is a must.
I prefer node.js but I'm not sure this is the best tool for this job.
Also, I'm open to suggestions of how this could work in a better way, or perhaps something I might be missing here. If theres a better scenario I'm all ears.
Specific technologies required: node.js
Extra notes:
Description of requirements/functionality: This is a queue management system (like the ones that operate on banks).
The concept is simple, clients can (instead of waiting in a line) request queue tickets through their mobile device, or through our website.
The server will be running on small mini pc in each bank branch we put it, and will be able to issue tickets to both remote clients and local (physically) clients through a button device. There will be some realtime functionality, but I believe what I'm looking for here is a secure API.
The project is made of 3 parts:
1) The client (wether that is through a mobile app, or website)
2) User management server - that keeps track of the user database (payments etc) and talks with our mobile app. (Probably a Rest server)
3) Queue management server that runs on mini pc on each bank.
Now, ABOUT (3):
Informative:
- The code will run on a raspberry pi or some other similar mini pc
- There will be a button device (hardware) that runs code when pressed. (This will be created by me - I'm just saying it here for informative reasons)
Functionality I want implemented:
Queue management system that:
- Starts from 0 each day and keeps incrementing with each client that requests a ticket (lets call that number the current ticket number or CTN):
-- A ticket can be issued to each client that requests it (wether that be through a mobile application or through one of the button devices).
-- If a ticket is requested remotely, we make sure that the user management server (2) allows us to proceed in issuing this ticket (has the user payed?)
- It keeps realtime connection with clients providing them with the CTN (whenever the CTN changes on the backend, the clients gets the new CTN instantly).
- Calculates the average waiting time and also notifies the clients instantly when that average waiting time (AWT) changes.
- Allows a certain ammount of tickets to be held in the servers custidy and not be given away as normal tickets (VIP tickets)
- Allows a remote client to cancel his ticket (in case he changes his mind)
- Keeps some basic analytics like:
-- how many users today?
-- how many of them through mobile app?
-- how many of them through the hardware device locally (button device)?
-- how many of them left without using their ticket?
-- how much (average) time did it take for a user to get bored and leave without using his ticket.
and submits this data to our user management server (2) at the end of the day.
Things to keep in mind:
- Each user must be able to get 1 and ONLY 1 ticket before it expires (then he can get another if he wants to).
--Thus we must check our user management server (2) on wether the current user has requested another ticket before issuying this one.
- Security is an issue, we don't want users getting tickets remotely from our api for free.
- The backend will be talking with:
--our user management server (2)
--many mobile app clients
--one local hardware device (button device) - which may be the same device the queue management server is running on
--a website (which must also be able to display the CTN, AWT, and request a ticket)
-in the future sms or calls might be a way to get tickets as well.
Scalability is a must.
I prefer node.js but I'm not sure this is the best tool for this job.
Also, I'm open to suggestions of how this could work in a better way, or perhaps something I might be missing here. If theres a better scenario I'm all ears.
Specific technologies required: node.js
Extra notes:
Giannhs K.
0% (0)Projects Completed
-
Freelancers worked with
-
Projects awarded
0%
Last project
13 Dec 2024
Greece
New Proposal
Login to your account and send a proposal now to get this project.
Log inClarification Board Ask a Question
-
There are no clarification messages.
We collect cookies to enable the proper functioning and security of our website, and to enhance your experience. By clicking on 'Accept All Cookies', you consent to the use of these cookies. You can change your 'Cookies Settings' at any time. For more information, please read ourCookie Policy
Cookie Settings
Accept All Cookies