{"id":18496449,"url":"https://github.com/hmt/bangbib","last_synced_at":"2026-04-30T09:33:14.399Z","repository":{"id":41617356,"uuid":"238487777","full_name":"hmt/bangbib","owner":"hmt","description":"Bangbib ist ein Programm zur Verwaltung einer Lehrmittelbibliothek an Schulen","archived":false,"fork":false,"pushed_at":"2023-02-03T05:13:11.000Z","size":2297,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-14T04:32:37.796Z","etag":null,"topics":["bibliothek","electron","svelte","verwaltung"],"latest_commit_sha":null,"homepage":"","language":"Svelte","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/hmt.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-05T15:48:46.000Z","updated_at":"2023-03-14T22:29:32.000Z","dependencies_parsed_at":"2023-02-08T06:45:19.914Z","dependency_job_id":null,"html_url":"https://github.com/hmt/bangbib","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmt%2Fbangbib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmt%2Fbangbib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmt%2Fbangbib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmt%2Fbangbib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmt","download_url":"https://codeload.github.com/hmt/bangbib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254071436,"owners_count":22009791,"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":["bibliothek","electron","svelte","verwaltung"],"created_at":"2024-11-06T13:29:29.190Z","updated_at":"2026-04-30T09:33:09.357Z","avatar_url":"https://github.com/hmt.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bangbib\n\nBangbib ist eine einfach App zur Verwaltung einer Lehrmittelbibliothek an\nSchulen oder sonstigen Einrichtungen.\n\n## Eigenschaften\n\nBangbib bietet folgende Eigenschaften zur Verwaltung:\n\n- Scannerunterstützung zum Einlesen von Barcodes\n- Buchtitel können als Block importiert werden\n- Nutzer können als Liste ebenfalls im Block importiert werden\n- Nutzer können Angaben zu Lerngruppen und Klassen mitbringen\n- Medien können an einzelne Nutzer verliehen werden\n- Gruppenauseihe, wenn gleiche Medien an mehrere Nutzer im Block verliehen werden\n- Druckansichten für Gruppenausleihe, Einzelnutzer und säumige Nutzer\n\n### Hinweis zur Nutzung\n\nEs gibt momentan einen Installer für Windows, Mac und Linux.\n\nBangbib erstellt eine einfache SQLite-Datenbank im Einstellungsverzeichnis,\ndie auch mit anderen Programmen gelesen werden kann. Diese Datenbank kann man\nselbstverständlich auch sichern.\n\nNutzer, müssen immer vollständig importiert werden. Alle Nutzer in der\nDatenbank, die keine Medien geliehen haben, werden sonst gelöscht. Dies zum\nDatenschutz der Nutzer, die in der Regel nicht für immer in der Datenbank\nverbleiben sollten.\n\nNutzer, die Medien geliehen haben, werden nicht gelöscht.\n\nGesperrte Nutzer können in der Gruppenleihe keine Bücher leihen.\n\n#### Scanner\n\nDer Scannerstatus wird oben im Menü angezeigt.\n\n- \u003c- ist die Rückgabe. Ist das Feld blau, nimmt bangbib Bücher entgegen.\n  Gescannte Medien werden zurückgebucht.\n- -\u003e ist die Ausleihe. Ist das Feld gelb, kann in der aktuellen Ansicht ein\n  Titel verliehen werden.\n- +1 bedeutet, dass Medientitel, die nicht in der Datenbank sind, hinzugefügt\n  werden können.\n\nBangbib ist sehr pragmatisch im Umgang mit neuen Titeln. Kommt ein unbekannter\nBarcode vor, fragt Bangbib, was mit dem Barcode passieren soll.  Entweder man\nordnet den Barcode einem bekannten Titel zu oder erstellt einen neuen Titel. In\nder Gruppenausleihe fragt Bangbib nur beim ersten Titel nach und geht dann im\nweiteren Verlauf davon aus, dass alle nachkommenden Titel bis zum Gruppenende\nden gleichen Titel haben, wenn der Barcode unbekannt ist. Wird ein Titel mit\nbekanntem Barcode hinzugefügt, der aber nicht dem Titel entspricht, wird ein\nFehler gemeldet.\n\nEine Nutzung ohne Scanner ist möglich, aber unhandlich, da die Barcodeingabe mit\nEscape gestartet und dann der Barcode von Hand angegeben werden muss. Ein\nScanner-Prefix kann in den Einstellungen festgelegt werden.\n\n#### Drucken\n\nNach Beendigung der Gruppenausleihe wird automatisch in die Druckansicht\ngewechselt.  Mit Drücken der Taste `p` wird gedruckt. Die Einstellungen bieten\naber auch eine Autodruck-Funktion und die Möglichkeit die Druckausgabe nur\ndigital als PDF in einem Ordner abzulegen.\n\nIn der Nutzerübersicht kann man oben im Menü auf den Drucken-Knopf drücken und\ndie Druckansicht wird gezeigt.\n\n### Einrichtung der Bibliothek\n\nNutzer werden am besten aus einer Datenbank generiert. Mit Schild geht z.B.\ndieser Befehl:\n\n```\nSELECT s.ID, s.Name, s.Vorname, a.Jahr, s.Klasse, ff.FachKrz, f.FachLehrer\n  FROM schueler AS s\n  LEFT JOIN schuelerlernabschnittsdaten AS a ON (a.Schueler_ID = s.ID AND a.Jahr = s.AktSchuljahr)\n  LEFT JOIN schuelerleistungsdaten AS f ON (f.Abschnitt_ID = a.ID)\n  LEFT JOIN eigeneschule_faecher AS ff ON (ff.ID = f.Fach_ID)\n  WHERE Status = 2 AND Geloescht = \"-\" AND Gesperrt = \"-\"\n  ORDER BY Klasse, Name ASC\n```\n\nAnschließend noch die Kopfzeile hinzufügen.\n\nAnsonsten bieten die meisten Schulverwaltungsprogramme eine Möglichkeit,\nCSV-Dateien zu erzeugen. Es ist kein Problem, wenn Schüler mehrfache Einträge\nhaben, da sonst die Kurszugehörigkeit nicht abgebildet werden kann. Wichtig ist\ndabei eine identische ID in der ersten Spalte.\n\nEine mögliche CSV-Datei sieht so aus:\n\n```\nid|name|vorname|jahr|klasse|kurs|kurs_lehrer\n3475|Meier|Steffi|2020|A19A2|DIFF SPI|DRA\n3475|Meier|Steffi|2020|A19A2|MA|HEM\n3475|Meier|Steffi|2020|A19A2|AOR|MIF\n3475|Meier|Steffi|2020|A19A2|GFP|REE\n3475|Meier|Steffi|2020|A19A2|HUS|DUW\n3475|Meier|Steffi|2020|A19A2|SPGF|REU\n3475|Meier|Steffi|2020|A19A2|RE|STI\n3475|Meier|Steffi|2020|A19A2|DEKO|SWJ\n3475|Meier|Steffi|2020|A19A2|EN|BOK\n```\n\nNach dem Import kann anschließend in bangbib nach dem Namen der Schülerin, der\nKlasse oder dem Kurs gesucht werden, um entweder eine Einzel- oder\nGruppenausleihe zu initiieren. Oder auch um einfach die Daten der Schülerin und\nihren Leihverlauf zu sehen.\n\nLehrer können ebenfalls in bangbib importiert werden. Es gibt keinen besonderen\nGrund, aber es erschien mir praktisch, die Gruppe von Nutzern etwas anders zu\nbehandeln, deswegen läuft der Import zusätzlich und kann aus Schild mit diesem\nBefehl gelesen werden:\n\n```\nSELECT ID, Nachname, Vorname, (SELECT Schuljahr FROM eigeneschule) AS jahr\nFROM k_lehrer\nWHERE Sichtbar=\"+\";\n```\n\nMedientitel können massenhaft importiert werden. Dazu jeden Titel auf seine\neigene Zeile setzen.\n\nNeue Barcodes müssen nicht vor der Ausleihe dem System bekannt gemacht werden.\nEs reicht, wenn man dies bei der Erstausleihe erledigt.\n\nEs gibt leider noch keine Funktion, wenn man trotzdem eine Serie von Barcodes\nmit dem gleichen Titel in Bangbib eingeben möchte, um z.B. in der Einzelausleihe\nauf das Nennen des Titels zu verzichten. Man kann sich hierbei aber helfen, wenn\nman mutig ist und einen SQL Befehl ausführen möchte. Dazu die datenbank.sqlite\nöffnen und folgenden Befehl anpassen und ausführen:\n\n```\nWITH RECURSIVE n(value) AS (\n  SELECT 101\n  UNION ALL\n  SELECT value+1 FROM n\n   WHERE value+1\u003c=110\n)\ninsert into medienexemplar (barcode, medienbezeichnung_id) select 'B'||printf('%03d',n.value),8 from n;\n```\n\nIn diesem Fall würde das Barcodes von B101 bis B110 für den Medientitel mit der\nID 8 erzeugen. Wichtig ist selbstverständlich, dass noch keine Barcodes aus\ndieser Serie existieren und eine Medienid 8 eingetragen ist.\n\n### Mehrere Benutzer\n\nBangbib ist für die Einzelplatznutzung konzipiert, um den Einrichtungsaufwand\nmöglichst gering zu halten. Die Datenbank ist eine lokale SQLite-Datenbank und\neine Netzwerkverbindung ist dementsprechend nicht notwendig. Während diese\nFestlegung in den meisten Fällen für kleinere Bibliotheken völlig ausreichend\nist, hat eine netwerkbasierte Datenbank natürlich den Vorteil, dass man mehrere\nClients mit bangbib betreiben könnte. Offiziell wird es das wohl vorerst nicht\ngeben, aber in der Praxis hat sich gezeigt, dass man mit FUSE/sshfs eine\ndurchaus praktikable Lösung zur Verfügung hat. Voraussetzung dafür ist eine\nAnbindung des regulären bangbib-clients an das Netz, SSH und ein entfernter\nRechner, der ebenfalls Netzzugang und FUSE/sshfs installiert hat. Nun kann man\nper sshfs das Verzeichnis des bangbib-Clients lokal mounten und mit bangbib\ndarauf zugreifen. Dazu muss der Pfad zur Datenbank in den bangbib-Einstellungen\nangepasst werden. Erste Test waren erfolgreich, bitte Backups machen!\n\n### Entwicklung\n\nBangbib kann auch ohne Installer ausprobiert werden. Dazu wird node benötigt und\ndie für die jeweilige Plattform Entwicklertools, in diesem Fall gcc14 und\nSQLite-Header, damit die SQLite-Bibliothek kompiliert werden kann. Darüber\nhinaus noch node und npm. Ist alles soweit vorhanden, geht es so weiter:\n\n```\ngit clone https://github.com/hmt/bangbib.git\ncd bangbib\nnpm i\nnpm run postinstall\nnpm run dev\n```\n\nDamit wird bangbib gestartet und man kann loslegen.\n\n### Lizenz\n\nBangbib wird unter der MIT-Lizenz veröffentlich.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmt%2Fbangbib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmt%2Fbangbib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmt%2Fbangbib/lists"}