better keyboard better gui simplekeyboard

This commit is contained in:
Raika Furude 2025-11-20 11:18:33 -05:00
parent ad267720ed
commit 08d48abffc
11 changed files with 240 additions and 428 deletions

View File

@ -10,7 +10,8 @@
"dependencies": { "dependencies": {
"lucide-react": "^0.546.0", "lucide-react": "^0.546.0",
"react": "^19.1.1", "react": "^19.1.1",
"react-dom": "^19.1.1" "react-dom": "^19.1.1",
"react-simple-keyboard": "^3.8.137"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.36.0", "@eslint/js": "^9.36.0",
@ -2498,7 +2499,6 @@
"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"jiti": "lib/jiti-cli.mjs" "jiti": "lib/jiti-cli.mjs"
} }
@ -2600,7 +2600,6 @@
"integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==",
"dev": true, "dev": true,
"license": "MPL-2.0", "license": "MPL-2.0",
"peer": true,
"dependencies": { "dependencies": {
"detect-libc": "^2.0.3" "detect-libc": "^2.0.3"
}, },
@ -3130,6 +3129,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
"integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"scheduler": "^0.27.0" "scheduler": "^0.27.0"
}, },
@ -3147,6 +3147,16 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/react-simple-keyboard": {
"version": "3.8.137",
"resolved": "https://registry.npmjs.org/react-simple-keyboard/-/react-simple-keyboard-3.8.137.tgz",
"integrity": "sha512-3U/qY3/7fAgBQu+M7zsLgBOCl7sad0My1fEiMmRHgDGxqy3CVmRV/q67sRjXQWX51NxxkzySJpWqmEeXvSpXzg==",
"license": "MIT",
"peerDependencies": {
"react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/resolve-from": { "node_modules/resolve-from": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",

View File

@ -12,7 +12,8 @@
"dependencies": { "dependencies": {
"lucide-react": "^0.546.0", "lucide-react": "^0.546.0",
"react": "^19.1.1", "react": "^19.1.1",
"react-dom": "^19.1.1" "react-dom": "^19.1.1",
"react-simple-keyboard": "^3.8.137"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.36.0", "@eslint/js": "^9.36.0",

View File

@ -1,5 +1,7 @@
import React, { useState } from 'react'; import React, { useState, useRef } from 'react';
import { AlertCircle, CheckCircle, Clock, User } from 'lucide-react'; import { AlertCircle, CheckCircle, Clock, User } from 'lucide-react';
import Keyboard from "react-simple-keyboard";
import "react-simple-keyboard/build/css/index.css";
const API_BASE = 'http://localhost:8000'; const API_BASE = 'http://localhost:8000';
@ -17,6 +19,8 @@ function App() {
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [showKeyboard, setShowKeyboard] = useState(false); const [showKeyboard, setShowKeyboard] = useState(false);
const [activeField, setActiveField] = useState(null); const [activeField, setActiveField] = useState(null);
const [layoutName, setLayoutName] = useState("default");
const keyboard = useRef();
const symptoms = [ const symptoms = [
'Chest Pain', 'Difficulty Breathing', 'Severe Headache', 'Chest Pain', 'Difficulty Breathing', 'Severe Headache',
@ -33,38 +37,31 @@ function App() {
})); }));
}; };
const handleKeyPress = (key) => { const onKeyboardChange = (input) => {
if (!activeField) return; if (activeField) {
setFormData(prev => ({
...prev,
[activeField]: input
}));
}
};
if (key === 'BACKSPACE') { const onKeyPress = (button) => {
setFormData(prev => ({ if (button === "{shift}" || button === "{lock}") {
...prev, setLayoutName(layoutName === "default" ? "shift" : "default");
[activeField]: prev[activeField].slice(0, -1) }
})); if (button === "{close}") {
} else if (key === 'SPACE') {
setFormData(prev => ({
...prev,
[activeField]: prev[activeField] + ' '
}));
} else if (key === 'CLEAR') {
setFormData(prev => ({
...prev,
[activeField]: ''
}));
} else if (key === 'DONE') {
setShowKeyboard(false); setShowKeyboard(false);
setActiveField(null); setActiveField(null);
} else {
setFormData(prev => ({
...prev,
[activeField]: prev[activeField] + key
}));
} }
}; };
const handleInputFocus = (fieldName) => { const handleInputFocus = (fieldName) => {
setActiveField(fieldName); setActiveField(fieldName);
setShowKeyboard(true); setShowKeyboard(true);
if (keyboard.current) {
keyboard.current.setInput(formData[fieldName]);
}
}; };
const handleSubmit = async () => { const handleSubmit = async () => {
@ -72,8 +69,6 @@ function App() {
setError(null); setError(null);
try { try {
console.log('Submitting check-in data:', formData);
const response = await fetch(`${API_BASE}/api/checkin`, { const response = await fetch(`${API_BASE}/api/checkin`, {
method: 'POST', method: 'POST',
headers: { headers: {
@ -87,7 +82,6 @@ function App() {
} }
const data = await response.json(); const data = await response.json();
console.log('Check-in successful:', data);
setAssignedBand({ setAssignedBand({
patientId: data.patient_id, patientId: data.patient_id,
@ -98,9 +92,8 @@ function App() {
setStep('complete'); setStep('complete');
setShowKeyboard(false); setShowKeyboard(false);
} catch (error) { } catch (error) {
console.error('Check-in failed:', error);
setError(error.message); setError(error.message);
alert(`Failed to check in: ${error.message}\n\nMake sure the backend is running at ${API_BASE}`); alert(`Failed to check in: ${error.message}`);
} finally { } finally {
setIsSubmitting(false); setIsSubmitting(false);
} }
@ -147,7 +140,7 @@ function App() {
if (step === 'form') { if (step === 'form') {
return ( return (
<div className={`min-h-screen bg-gradient-to-br from-blue-50 to-blue-100 p-4 ${showKeyboard ? 'pb-96' : ''}`}> <div className={`min-h-screen bg-gradient-to-br from-blue-50 to-blue-100 p-4 transition-all ${showKeyboard ? 'pb-[450px]' : ''}`}>
<div className="max-w-3xl mx-auto pt-8"> <div className="max-w-3xl mx-auto pt-8">
<div className="bg-white rounded-2xl shadow-2xl p-8"> <div className="bg-white rounded-2xl shadow-2xl p-8">
<h2 className="text-3xl font-bold text-gray-800 mb-6">Patient Information</h2> <h2 className="text-3xl font-bold text-gray-800 mb-6">Patient Information</h2>
@ -171,8 +164,8 @@ function App() {
type="text" type="text"
value={formData.firstName} value={formData.firstName}
onFocus={() => handleInputFocus('firstName')} onFocus={() => handleInputFocus('firstName')}
readOnly onChange={(e) => setFormData({...formData, firstName: e.target.value})}
className="w-full px-6 py-4 border-2 border-gray-300 rounded-lg focus:border-blue-500 focus:outline-none text-xl font-semibold cursor-pointer bg-white" className="w-full px-6 py-4 border-2 border-gray-300 rounded-lg focus:border-blue-500 focus:outline-none text-xl font-semibold cursor-pointer"
placeholder="Tap to type" placeholder="Tap to type"
/> />
</div> </div>
@ -184,8 +177,8 @@ function App() {
type="text" type="text"
value={formData.lastName} value={formData.lastName}
onFocus={() => handleInputFocus('lastName')} onFocus={() => handleInputFocus('lastName')}
readOnly onChange={(e) => setFormData({...formData, lastName: e.target.value})}
className="w-full px-6 py-4 border-2 border-gray-300 rounded-lg focus:border-blue-500 focus:outline-none text-xl font-semibold cursor-pointer bg-white" className="w-full px-6 py-4 border-2 border-gray-300 rounded-lg focus:border-blue-500 focus:outline-none text-xl font-semibold cursor-pointer"
placeholder="Tap to type" placeholder="Tap to type"
/> />
</div> </div>
@ -272,71 +265,71 @@ function App() {
</div> </div>
</div> </div>
{/* On-Screen Keyboard - ONLY ONE DECLARATION */} {/* react-simple-keyboard */}
{showKeyboard && ( {showKeyboard && (
<div className="fixed bottom-0 left-0 right-0 bg-gradient-to-t from-gray-900 to-gray-800 border-t-4 border-blue-500 shadow-2xl p-6 z-50"> <div className="fixed bottom-0 left-0 right-0 bg-white border-t-4 border-blue-500 shadow-2xl p-6 z-50">
<div className="max-w-5xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="flex justify-between items-center mb-4"> <div className="flex justify-between items-center mb-4">
<div className="text-white"> <div>
<p className="text-sm opacity-75">Currently typing:</p> <p className="text-sm text-gray-600">Currently typing:</p>
<p className="font-bold text-xl"> <p className="font-bold text-2xl text-gray-800">
{activeField === 'firstName' ? 'First Name' : 'Last Name'} {activeField === 'firstName' ? 'First Name' : 'Last Name'}
</p> </p>
</div> </div>
<div className="bg-gray-700 px-6 py-3 rounded-lg"> <button
<p className="text-white font-mono text-2xl min-w-[200px]"> onClick={() => {
{formData[activeField] || '_'} setShowKeyboard(false);
</p> setActiveField(null);
</div> }}
className="bg-red-500 text-white px-6 py-3 rounded-lg text-xl font-bold hover:bg-red-600 active:scale-95"
>
Close
</button>
</div> </div>
<div className="space-y-3"> <div className="bg-gray-100 p-4 rounded-lg mb-4">
{[ <p className="text-gray-600 text-sm mb-1">Preview:</p>
['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'], <p className="text-2xl font-mono font-bold text-gray-800">
['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'], {formData[activeField] || '(empty)'}
['Z', 'X', 'C', 'V', 'B', 'N', 'M', 'BACKSPACE'], </p>
['SPACE', 'CLEAR', 'DONE']
].map((row, rowIndex) => (
<div key={rowIndex} className="flex gap-2 justify-center">
{row.map((key) => {
const isDone = key === 'DONE';
const isBackspace = key === 'BACKSPACE';
const isSpace = key === 'SPACE';
const isClear = key === 'CLEAR';
return (
<button
key={key}
onClick={() => handleKeyPress(key)}
className={`
font-bold rounded-xl transition-all active:scale-95 shadow-lg
${isDone
? 'bg-green-600 text-white hover:bg-green-700 px-12 py-5 text-xl'
: isBackspace
? 'bg-red-600 text-white hover:bg-red-700 px-8 py-5 text-xl'
: isSpace
? 'bg-gray-600 text-white hover:bg-gray-700 px-32 py-5'
: isClear
? 'bg-orange-600 text-white hover:bg-orange-700 px-8 py-5'
: 'bg-blue-600 text-white hover:bg-blue-700 min-w-[60px] py-5 text-2xl'
}
`}
>
{key === 'BACKSPACE' ? '⌫ Delete' :
key === 'SPACE' ? '_____ Space _____' :
key === 'CLEAR' ? '✕ Clear' :
key === 'DONE' ? '✓ Done' :
key}
</button>
);
})}
</div>
))}
</div> </div>
<p className="text-center text-gray-400 text-sm mt-4"> <Keyboard
Tap any key to type Tap Done when finished keyboardRef={r => (keyboard.current = r)}
</p> layoutName={layoutName}
onChange={onKeyboardChange}
onKeyPress={onKeyPress}
theme="hg-theme-default hg-layout-default vitallink-keyboard"
display={{
'{bksp}': '⌫ backspace',
'{enter}': 'enter',
'{shift}': '⬆ shift',
'{lock}': 'caps',
'{tab}': 'tab',
'{space}': 'space',
'{close}': '✓ Done'
}}
buttonTheme={[
{
class: "hg-close-button",
buttons: "{close}"
}
]}
layout={{
default: [
"Q W E R T Y U I O P {bksp}",
"A S D F G H J K L",
"{shift} Z X C V B N M {shift}",
"{space} {close}"
],
shift: [
"Q W E R T Y U I O P {bksp}",
"A S D F G H J K L",
"{shift} Z X C V B N M {shift}",
"{space} {close}"
]
}}
/>
</div> </div>
</div> </div>
)} )}

View File

@ -0,0 +1,4 @@
399212
399230
399237
399271

View File

@ -1,4 +1,4 @@
INFO: Started server process [397260] INFO: Started server process [399212]
INFO: Waiting for application startup. INFO: Waiting for application startup.
INFO: Application startup complete. INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
@ -8,333 +8,132 @@ VitalLink Backend API Started
API Documentation: http://localhost:8000/docs API Documentation: http://localhost:8000/docs
WebSocket Endpoint: ws://localhost:8000/ws WebSocket Endpoint: ws://localhost:8000/ws
================================================================================ ================================================================================
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33856 - "GET / HTTP/1.1" 200 OK INFO: 127.0.0.1:33060 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:33860 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33064 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33080 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33862 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33876 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33096 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33890 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33106 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:41124 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56820 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56824 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:41134 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56830 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:41150 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56846 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:41160 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:41168 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56848 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:41182 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39396 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:43086 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:43096 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:43104 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:39402 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39406 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39416 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:43120 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39430 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:43122 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:43132 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39444 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40832 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:53028 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40836 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:53034 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40846 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:53040 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:53044 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40862 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:53052 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40868 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:53068 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:54392 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50366 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50374 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:54408 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50380 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:54412 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50388 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:54416 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:54430 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50404 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50418 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:54438 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56676 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56126 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56136 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56688 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:56142 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:56692 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56708 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56146 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56714 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56152 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56730 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56160 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:34360 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:46986 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:34376 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:46992 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:34388 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:47006 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:34402 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:47022 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:34414 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:47036 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:34426 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:47048 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60124 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56736 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60136 - "POST /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:56748 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60138 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56760 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60150 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56770 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60160 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56784 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60164 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:56786 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK INFO: 127.0.0.1:33054 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48466 - "GET /api/queue HTTP/1.1" 200 OK INFO: 127.0.0.1:51668 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48476 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48486 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:48492 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48494 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48496 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56678 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:56686 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56702 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56710 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:56718 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:56726 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52844 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:52856 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52868 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:52882 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52884 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52900 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:55840 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55856 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55870 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55878 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:55882 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55892 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45720 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:45736 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45744 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45746 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:45762 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45778 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42570 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42586 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42600 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42610 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42624 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42636 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44008 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44016 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44030 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:44038 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44046 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44060 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:52928 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52932 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52934 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52946 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:52950 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:52964 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50824 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:50832 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50842 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50854 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50858 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:50870 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:46916 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:46924 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:46926 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:46928 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:46940 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:46942 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:36684 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:36690 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:36694 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:36700 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:36716 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:36724 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42742 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42746 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42762 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42778 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42780 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42790 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54288 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33850 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54302 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54312 - "GET /api/queue HTTP/1.1" 200 OK
INFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
INFO: Finished server process [397260]

View File

@ -0,0 +1 @@
399212

View File

@ -3,7 +3,7 @@
> vite > vite
VITE v7.1.10 ready in 220 ms VITE v7.1.10 ready in 222 ms
➜ Local: http://localhost:5173/ ➜ Local: http://localhost:5173/
➜ Network: use --host to expose ➜ Network: use --host to expose

View File

@ -0,0 +1 @@
399237

View File

@ -2,9 +2,10 @@
> kiosk@0.0.0 dev > kiosk@0.0.0 dev
> vite > vite
11:17:05 AM [vite] (client) Re-optimizing dependencies because lockfile has changed
Port 5173 is in use, trying another one... Port 5173 is in use, trying another one...
VITE v7.1.10 ready in 228 ms VITE v7.1.10 ready in 258 ms
➜ Local: http://localhost:5174/ ➜ Local: http://localhost:5174/
➜ Network: use --host to expose ➜ Network: use --host to expose

1
vitallink/logs/kiosk.pid Normal file
View File

@ -0,0 +1 @@
399271

View File

@ -0,0 +1 @@
399230