{"id":18686000,"url":"https://github.com/friendly-banana/mensaplan","last_synced_at":"2025-11-07T23:30:30.661Z","repository":{"id":248695064,"uuid":"795249769","full_name":"Friendly-Banana/mensaplan","owner":"Friendly-Banana","description":"Garching's hottest new tool to find friends while eating.","archived":false,"fork":false,"pushed_at":"2025-01-09T17:41:05.000Z","size":1924,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-09T18:41:29.485Z","etag":null,"topics":["elixir","mensa","phoenix-framework","tum"],"latest_commit_sha":null,"homepage":"https://mensa.grabriel.co","language":"Elixir","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/Friendly-Banana.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}},"created_at":"2024-05-02T22:08:22.000Z","updated_at":"2025-01-09T17:41:08.000Z","dependencies_parsed_at":"2024-11-16T19:17:54.718Z","dependency_job_id":"9699788f-d15f-43a4-8516-977974eb4198","html_url":"https://github.com/Friendly-Banana/mensaplan","commit_stats":null,"previous_names":["friendly-banana/mensaplan"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Friendly-Banana%2Fmensaplan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Friendly-Banana%2Fmensaplan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Friendly-Banana%2Fmensaplan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Friendly-Banana%2Fmensaplan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Friendly-Banana","download_url":"https://codeload.github.com/Friendly-Banana/mensaplan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239541852,"owners_count":19656102,"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":["elixir","mensa","phoenix-framework","tum"],"created_at":"2024-11-07T10:25:28.925Z","updated_at":"2025-11-07T23:30:30.612Z","avatar_url":"https://github.com/Friendly-Banana.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mensaplan\n\nGarching's hottest new tool to find friends while eating.\n\n## Features\n\n* Cool and responsive web interface\n* Current mensa menu with food ratings\n* Private groups for friend groups, clubs, ...\n* API for (Discord) Bots like [WoBot](https://github.com/Friendly-Banana/wobot)\n\n![phone.png](.github/phone.png)\n![PC.png](.github/PC.png)\n\n## Techstack\n\n* Elixir and Phoenix for the backend\n* HEEx (HTML + Embedded Elixir) and TailwindCSS for the frontend\n\n## Developing\n\n### Running\n\n* Run `mix setup` to install and setup dependencies\n* Start the Phoenix server with `mix phx.server` or inside IEx with `iex -S mix phx.server`\n\nNow you can visit [`localhost:4000`](http://localhost:4000) from your browser.\n\n### Authentication\n\nAuthentication is done via Discord, so you'll need to\n\n* Setup an [Application](https://discord.com/developers/applications)\n* Add `http://localhost:4000/auth/discord/callback` to the _OAuth2_ -\u003e _Redirects_.\n* Save the  _Client ID_ and _Client Secret_, you need to pass them as environment variables.\n  For example put them into a `.env` file and then run `export $(cat .env | xargs)`.\n\nYou can also use [uberauth](https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies) directly with your favorite\nOpenID provider, add the strategy to `mix.exs`, configure it in `config.exs` and replace the sign-in link.\n\nUser ids \u003c 10 are reserved, these ids can only be assigned via direct DB access.\nUser 1 is considered admin and can access special pages like the Dashboard.\nUser 2 is used for the API, for example groups created via the API are owned by User 2.\n\n### API\n\nThe API uses the environment variable `API_TOKEN` to authorize requests, they need to include it as a [bearer token](https://swagger.io/docs/specification/authentication/bearer-authentication/).\n\n## Deploying\n\nWherever you want, requirements: can run Elixir and has a database.\n\nDon't forget to set the environment variables.\n\nI use [Gigalixir](https://www.gigalixir.com/docs/getting-started-guide/).\nNew versions are deployed with `git push gigalixir main`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendly-banana%2Fmensaplan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriendly-banana%2Fmensaplan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendly-banana%2Fmensaplan/lists"}