Slack concept
Concept proces
Voordat ik het concept heb bedacht heb ik onderzoek gedaan naar o.a. bestaande tools en technieken voor een incheck systeem ook heb ik een survey verstuurd binnen Greenhouse om te pijlen wat werknemers vinden van een inchecksysteem en wat ze momenteel gebruiken om collega’s te zoeken. Binnen het concept heb ik een eerste database ontwerp en flow van de applicatie uitgewerkt. Met deze ontwerpen kan ik een proof of concept maken om mijn concept te testen.
Het concept
Het concept bestaat uit twee delen, een incheck systeem die gebruik maakt van de Slack-API en een zoekfunctie in de Slack-chat.
Binnen Greenhouse gaat een groot deel van de communicatie via Slack ook blijkt uit de survey dat momenteel 97% Slack gebruikt om collega's te vinden. Daarom heb ik ervoor gekozen om een login met de Slack-API te maken ook heeft het als voordeel dat de gegevens overeenkomen met die in de Slack applicatie. Ik wil het zoekproces integreren in de Slack applicatie zodat er voor de werknemers geen extra tool bij komt. Als eerste zal ik het incheck systeem omschrijven.
Incheck systeem
De werknemer checkt 's ochtends bij zijn gekozen bureau in door middel van het scannen van de NFC-chip met zijn/haar telefoon. Er verschijnt op een pop-up met een link naar de webapplicatie met een specifiek ID die gekoppeld is in de database aan een tafel nummer. Op deze pagina staat een aanmeld knop van de Slack-API. De werknemer meldt zich aan met zijn/haar Greenhouse Slack en zet vervolgens een status (available, busy, hidden) om aan te geven of hij/zij vandaag bezet is of juist beschikbaar. Na het inchecken kan de werknemer de applicatie weer sluiten.
Sticker met daarin een NFC-chip en een QR-code opdruk (één per bureau)
Telefoon (om chip te lezen of om de QR-code te scannen)
Webapplicatie (om de data naar de database te sturen)
Stappen
- Scan de NFC-chip of de QR-code met je telefoon
- De Pop-up opent een link
- Klik dan op “connect”
- Bevestig het getoonde tafelnummer door je aan te melden met je Office 365 account
- Kies een status en klik op “checkin”
- Sluit webapplicatie
Wanneer iemand anders al is ingecheckt krijg je een melding en de keuze om toch in te checken of te annuleren.
Privacy
Uit de survey blijkt dat er een aantal werknemers bezorgd zijn over hun privacy. Het Gaat voornamelijk over de volgende twee punten:
- Ik wil ook onzichtbaar kunnen zijn wanneer ik wil doorwerken.
- Mijn begintijd kan worden bijgehouden.
Deze twee punten kunnen makkelijk opgelost worden door een aantal gegevens niet op te slaan die niet van belang zijn. Punt 1 wordt opgelost door een status systeem te maken waarbij de werknemer zichzelf op available, busy en hidden kan zetten. Ook zal de inchecktijd niet worden opgeslagen, wel wordt er een expiry_date opgeslagen. Deze wordt gezet op de huidige incheck datum met de tijd van 23:00:00. De expiry_date heb ik nodig om te kijken of de incheck nog geldig is.
De volgende gegevens worden opgeslagen:
Databasetabellen:
Users tabel | Type |
id | int |
Name | var |
Slack_name | var |
Slack_id | var |
status | int |
Desks tabel | Type |
id | int |
desk_nr | var |
status | int |
user_id | int |
expiry_date | dateTime |
Aan het einde van de dag wordt de beschikbaarheid van de tafel aan de hand van de expiry_date aangepast naar 'beschikbaar'. De werknemer blijf nog wel gekoppeld aan deze tafel totdat deze wordt overschreven in de database, maar dit wordt niet meer in de front-end getoond.
Concepten deel 2
Slash commands in Slack
Zoals ik eerder in beschreef gebruikt 97% binnen Greenhouse Slack om collega’s te zoeken. Binnen Slack zijn er veel mogelijkheden om een passende Slackbot of slash command te maken die communiceert met de incheck applicatie. Ik wil gaan onderzoeken of het mogelijk is om een custom slash command te maken waarbij je de Slackbot vraagt waar een collega zich bevindt en hierop direct een antwoord krijgt. Dat zou er ongeveer als volgt uit zien:
Voorbeeld
“/find @JohnDoe”
Colleague Finder:
John Doe is op de 4de verdieping Zie plattegrond voor exacte locatie:
Hiermee zou je dus geen apart platform nodig hebben waar mensen hun collega's hoeven te zoeken.
Flow van de applicatie
De flow van de applicatie werkt dan als volgt:
Framework
Ik heb gekozen voor een PHP framework omdat PHP makkelijk kan communiceren met de database en makkelijk is om te hosten, Daarbij zouden alle concepten met dit platform kunnen werken.
Hieronder een keuzematrix voor PHP framework:
*MVC = Model, view, controller model
Framework |
Voorkennis (1-10) |
Sass |
Docs (1-5) |
Community (1-5) |
MVC* pattern |
templates/ plugins |
Php versie |
Laravel |
8 |
Ja |
5 |
5 |
Ja |
Ja |
7.1.3 |
Laravel homestead |
7 |
Ja |
4 |
4 |
Ja |
Ja |
5.6 |
Symfony |
4 |
Ja |
5 |
5 |
Ja |
Ja |
7 |
CodeIgniter |
3 |
? |
3 |
3 |
Ja |
Ja matig |
5.6+ |
CakePHP |
5 |
Ja |
5 |
5 |
Ja |
Ja |
5.6+ |
Slim |
3 |
? |
3 |
3 |
nee |
nee |
? |
FuelPHP |
2 |
? |
3 |
2 |
Ja |
ja |
5.4 |
Bron: