Stworzenie programu do obsługi stołówki szkolnej od podstaw

Cześć,

Bardzo prosiłbym o waszą pomoc.
Potrzebuję określić założenia funkcjonowania, rodzaju oprogramowania, wykorzystywanej bazy danych i sposobu funkcjonowania programu do obsługi stołówki szkolnej.

Cel:

  1. Możliwość wykupu dowolnego posiłku w roku szkolnym przez ucznia lub rodzica (online lub w okienku w szkole),
  2. Autoryzacja ucznia na stołówce na podstawie legitymacji elektronicznej,
  3. Możliwość odwołania posiłku dzień wcześniej (online lub w okienku),
  4. Generowanie raportów - ilość zjedzonych posiłków ze względu na rodzaj, datę itp.
  5. Przypomnienie o zaległych opłatach na maila, telefon rodziców, informacja do intendenta,
  6. Informacja o nie “zjedzonym” posiłku przez ucznia do intendenta oraz mail do rodziców,
  7. Automatycznie tworzona kopia zapasowa.

Na stołówce byłby komputer (może raspberry pi?) z jakąś dystrybucją linux-a i z czytnikiem elektronicznej legitymacji oraz tak samo u osoby przyjmującej płatności w okienku.

Proszę o podpowiedzi z jakich języków programowania najlepiej skorzystać, oprogramowania i baz danych, które będą gromadziły informację o użytkownikach biorąc pod uwagę szybkość ich działania (ok. 300 użytkowników), licencje (darmowe najlepsze), bezpieczeństwo przechowywanych danych itp?

Czy znacie może jakieś komercyjne programy które spełniają opisane powyżej cele?

Każda podpowiedź co do sposobu w jaki ta aplikacja miała by działać, będzie pomocna.

Pozdrawiam serdecznie.

Czemu nie ściągniesz instrukcji do jakiegoś gotowego rozwiązania i popatrzysz na funcjonalności/wymagania/typ bazy danych? Google: Obsługa stołówki program

Nie liczyłbym na pomoc bo pytanie można porówna do pytania o to jak zbudować samochód, jakich materiałów użyć do budowy karoserii, jaki silnik wykorzystać, spalinowy, disel, może wankla.

Takie rzeczy to już sam powinieneś wiedzieć bo kto jak nie osoba która w pewnym sensie jest zleceniodawcą ma to wiedzieć. Nawet gdybyś poszedł do firmy zajmującej się wytwarzaniem oprogramowania to niewiele by Ci pomogli.

Najlepiej taki w którym umiesz programować i umiesz zrealizować zadanie. Bazy danych to jakakolwiek, nawet słaby MySQL się nada na tak malutką bazę.
Co do bezpieczeństwa to jest tyle czynników i zasad, że starczyłoby na kilka książek.

Jeżeli ma działać w sieci to baza pewnie sql, a strona/aplikacja java/php.

Już wcześniej wpadłem na taki pomysł:P
Większość tego typu programów zajmuje się obsługą magazynu i standardów HACAP i choć jest to bardzo ważne, to nie o to mi chodzi.
Jednak znalazłem 3 interesujące programy (z czytnikami i kartami do identyfikacji) i jeżeli nie uda się ze stworzeniem własnego rozwiązania, to zasugeruję wdrożenie któregoś ze znalezionych.
Te programy korzystają głównie z MS SQL, Firebird-a więc faktycznie jest to dla mnie podpowiedz i chyba będę drążył ten temat.

Może faktycznie źle zadaję pytania i powinienem przyjść tu z czymś bardziej konkretnym?
Chodzi mi głownie o to żeby dobrze się przygotować przed rozmową z firmą która takie oprogramowanie miałaby dla nas stworzyć.
Z przeróżnych rozmów dowiedziałem się np. że dobrym rozwiązaniem jest stosowanie jako bazy danych firebid-a (korzystne licencjonowanie), poczytam teraz o tym i postaram się przyszykować jakieś argumenty na spotkanie z kontrahentem.

Tylko mam wrażenie, że do MariaDB (czyli opensource’owym rozwinięciem MySQL z niepewną sytuacją licencyjną) będzie po prostu łatwiej dodać funkcjonalności i zintegrować całość. Ale tak jak @Fizyda napisał, wszystko jedno na jakiej bazie będzie to pracować, całą funkcjonalność można byłoby pewnie postawić w całości na tym Raspberry Pi i też by działało.

Jeśli miałbyś rozmawiać z firmą, zadaj im niewygodne pytanie o zgodność z RODO (skoro są tam dane odnośnie uczniów, dane kontaktowe rodziców itd.), bo niestety wiele “garażowych” firm uznaje, że “jakoś to będzie” i lecą po kosztach - a potem uczniowe dla draki włamią się na RPi, wyciągną sobie dane, zrobi się afera i to będzie Wasz problem :slight_smile:

RODO nam teraz spędza sen z powiek :stuck_out_tongue: ale masz rację. Tą kwestię musimy podnieść, tym bardziej że wiele z “gotowych” programów nie ma w sobie (jeszcze?) możliwości “wydruku”, przesłania w formacie pdf itp. danych osobowych przetwarzanych osób, na ich życzenie a jest to jeden z wymogów RODO.

Zależy dla kogo, dla google na pewno. A korzystne to dopóki licencjonowanie się nie zmieni, a ponieważ działa to jak bardziej usługa to może się zmienić w każdej chwili. Poza tym nie wiem czy w Twoim przypadku będziesz mógł trzymać dane gdzieś na zewnętrznych serwerach. Zresztą nie lepiej trzymać dane lokalnie? Raz że bezpieczniej, dwa nawet jak internet padnie nie padnie aplikacja w szkole, jedynie nie będzie się dało odwołać posiłku przez przeglądarkę.

No to musisz wiedzieć jakie chcesz funkcjonalności w aplikacji, a to już raczej masz za sobą. Ważne jest też ogarnąć temat RODO, jak wspomniał @hindus. Dobrze by było jeszcze jakbyś wiedział jaką chcesz architekturę tego całego systemu.
Ponieważ to ma być w zasadzie funkcjonalność lokalna a nie sieciowa to bym to postawił na jakimś serwerku w szkole, bazę schować za jakimś serwerem REST, na czytniku zaimplementować klienta do komunikacji z serwerem, w okienku aplikacja też komunikująca się z serwerem REST. Natomiast jeśli chodzi o zewnętrzną stronę to postawić to na normalnym hostingu, może być zrobione nawet w php i np Symfony (bardzo szybko można ogarnąć temat backendu), tylko tutaj front powinien komunikować się z serwerem REST w szkole przy pomocy własnego serwera REST (własny backend) który to z kolei będzie sprawdzał czy serwer szkolny jest dostępny, jeśli nie to wyświetli informację, że obecnie aplikacja nie działa, przepraszamy, a jeśli dostępny to próbuje nawiązać połączenie i wykonać odpowiednie akcje i zwraca informacje o ich powodzeniu lub niepowodzeniu. Dlaczego tak, a to dlatego, żeby nie ujawniać w kliencie czyli na stronie www informacji o działaniu serwera szkolnego oraz o tym gdzie się znajduje (pod jakim adresem).

Ważne jest też, aby uwierzytelnianie było na poziomie tego szkolnego serwera REST i nawet Raspberry ze stołówki miało swój jakiś klucz/identyfikator do komunikacji. Pani w okienku równie dobrze może korzystać z aplikacji webowej - tylko zamiast łączyć się z tym dla rodziców udostępnionym w sieci to niech ma jakiś lokalny www z tą funkcjonalnością. Natomiast publiczny w sieci powinien mieć tą funkcjonalność zdezaktywowaną.
Efekt będzie taki, że zamiast tworzyć serwer w szkole, aplikacje na raspberry, aplikację dla pani w okienku, aplikację (serwer i html) dla rodziców, wy starczy stworzyć serwer w szkole, apke na raspeberry i aplikację webową, ale zainstalowaną w 2 różnych miejscach z ograniczonymi funkcjonalnościami. Można tworzyć ją jako jedną, a w sieci lokalnej zostawić tylko funkcje dla Pani z okienka, a w webie tylko funkcje dla rodziców.

Wielkie dzięki za waszą pomoc. Szczególnie tobie Fizyda.
Wszystko to wezmę pod uwagę gdy będzie trzeba dokonać wyboru programu lub zlecić stworzenie autorskiego, dopasowanego do nas.

Na razie mam rozeznanie co do cen odnalezionych w sieci programów i dowiedziałem się że legitymacje elektroniczne nie mają jeszcze wyszczególnionej specyfikacji technicznej.
W związku z tym, najpewniej wstrzymamy się z decyzjami do czasu gdy będą one znane i będziemy mogli je wdrożyć.

Pozdrawiam serdecznie.