{"id":25685670,"url":"https://github.com/13bytes/labfooddesk","last_synced_at":"2025-07-02T04:34:57.078Z","repository":{"id":244284698,"uuid":"674421186","full_name":"13Bytes/LabFoodDesk","owner":"13Bytes","description":"LabEats allows a group of people to manage money in combination with item-sales, procurement and group-orders in a moderated prepaid fashion","archived":false,"fork":false,"pushed_at":"2025-06-10T21:29:39.000Z","size":1191,"stargazers_count":8,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-10T21:41:55.142Z","etag":null,"topics":["group-ordering","nextjs","t3-stack","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/13Bytes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2023-08-03T23:07:33.000Z","updated_at":"2025-06-10T21:29:43.000Z","dependencies_parsed_at":"2024-06-13T21:21:51.009Z","dependency_job_id":"47067e31-244f-4447-a8c6-5e93f25ffa81","html_url":"https://github.com/13Bytes/LabFoodDesk","commit_stats":null,"previous_names":["13bytes/labfooddesk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/13Bytes/LabFoodDesk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/13Bytes%2FLabFoodDesk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/13Bytes%2FLabFoodDesk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/13Bytes%2FLabFoodDesk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/13Bytes%2FLabFoodDesk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/13Bytes","download_url":"https://codeload.github.com/13Bytes/LabFoodDesk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/13Bytes%2FLabFoodDesk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263076344,"owners_count":23410055,"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":["group-ordering","nextjs","t3-stack","tailwindcss","typescript"],"created_at":"2025-02-24T18:57:07.929Z","updated_at":"2025-07-02T04:34:57.057Z","avatar_url":"https://github.com/13Bytes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LabEats\n**LabEats allows a group of people to manage money in combination with item-sales, procurement and group-orders in a moderated prepaid fashion.**\n\nA tool to manage (food)(orders) in the Aerospace Lab (an awesome club in Germany).\\\nIt is designed with our club in mind, but can surely be adapted to fit more needs.\n\n\u003cimg src=\"https://github.com/13Bytes/LabFoodDesk/assets/12069002/8f4b9923-0582-4ba9-a53a-ddfaae0f7832\" height=500\u003e\n\n\u003cimg src=\"https://github.com/13Bytes/LabFoodDesk/assets/12069002/c91b83b9-cdb1-4d65-b61a-1eb0d3d33fa3\" height=500\u003e\n\n\u003cimg src=\"https://github.com/13Bytes/LabFoodDesk/assets/12069002/02562eb3-aefb-4999-a5c3-3569c4be155a\" height=500\u003e\n\n## Overview\n**\"Kaufen\":** Allows users to buy items which are already present (e.g. a beverages).\n\n**\"Gruppen-Kauf\":** Allows users to join a group-order for one fixed event.\nAfter a specified deadline, one user can close the ordering-process (e.g. to buy the pre-ordered amount).\nAfter this, the price of the whole purchase can be split up between the participants in an arbitrary fashion.\n\n**\"Split\" \u0026 \"Aufladen\":** Allows users to transfer money.\\\nThe system is designed the following:\\\nThere exists a group of trusted users which are allowed to overdraw their accounts.\nAll other users can only spend their prepaid credit - which they obtain by giving the trusted users money in the real world.\n\n**\"Konto\":** Every transaction is logged and can be viewed here.\n\n**Admin-Functionality:** \n- Users are authenticated against LDAP (with additional magic links for development).\n- All items can have a percentual and/or fixed additional fee which can be tracked on special clearing accounts.\n- Users can be compensated for procurement from those special clearing accounts as well as from the \"main account\"\n\n\n## Deployment\ndeployment via [docker compose](https://docs.docker.com/compose/)\n\n- copy `docker-compose.yml` onto the server. Set `ENABLE_PRISMA_STUDIO`.\n- copy `.env.example` onto the server and rename it to `.env` - fill in details accordingly.\n- copy the `./nginx` folder from the repo and create file `./nginx/prismaStudio-htpasswd`.\n    - _if prisma studio is enabled:_ add entrie(s) to htpasswd. A example can be found in `prismaStudio-htpasswd.example`\n- `docker compose up -d`\n\nThe docker image will publish LabEats on Port **3000**.\\\nThis port should be deployed behind a reverse-proxy handling HTTPS.\n`ENABLE_PRISMA_STUDIO=true` will also run a frontend for the database on port **5556**.\\\nOnly secured by basic HTTP auth (set in `./nginx/prismaStudio-htpasswd`), this port should not be open to the public!\n\n\n## Development\n\nThis is a NextJS project. Some file-conventions apply.\n\nStart Developing:\n`npm run dev`\n\nUpdate types based on current schema:\n`npx prisma generate`\n- Create TS (prisma) types `import { prisma } from \"~/server/db\"`\n- Creates zod-schemas in `import { mySchema } from '/prisma/generated/zod';`\n\nUpdate dev-db (might lose data)\n`npx prisma db push`\n\nCreate DB Migrations (for production)\n`npx prisma migrate dev`\n\n### Open ToDos\n- Automatisches abmelden aller Accounts nach update (via changes)\n- Android Zahlentastatur Komma ausgeblendet\n#### Nice Improvements:\n- Item-Page: Item-Reihenfolge anpassbar machen (persistent)\n- Item-Page: Kategorie-filter für user persistieren\n- Gruppen-Split\n- Verrechnungskonten-Auszahlung für Admins auch selbst möglich\n- Gruppen-Kauf auf eine/mehrere Kategorien beschränken\n- Personen einen \"Projekt-Tag\" geben\n- Verrechnungkonten global anzeigen\n- Vorbesteller-Items mit Fix-Preis (Default-Feld vorausfüllen)\n- Ofengebühr für mehrfachbestellungen optional deaktivieren\n- write test-cases (https://www.prisma.io/docs/orm/prisma-client/testing/integration-testing)\n\n---\n\n## Questions \u0026 Contact\n\nStuck somewhere? Or you want to adopt LabEats to your needs? \\\nYou can contact me at coding@13bytes.de or create a [issue](https://github.com/13Bytes/LabFoodDesk/issues).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F13bytes%2Flabfooddesk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F13bytes%2Flabfooddesk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F13bytes%2Flabfooddesk/lists"}