{"id":16260708,"url":"https://github.com/ineshbose/portion-mate","last_synced_at":"2026-01-21T21:32:58.107Z","repository":{"id":42368531,"uuid":"415972767","full_name":"ineshbose/portion-mate","owner":"ineshbose","description":"Your daily meal-date and nutritionist","archived":false,"fork":false,"pushed_at":"2025-03-28T16:12:52.000Z","size":79727,"stargazers_count":1,"open_issues_count":15,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-04-07T20:50:23.148Z","etag":null,"topics":["dissertation-project","django","expo","react-native","typescript"],"latest_commit_sha":null,"homepage":"https://inesh.xyz/portion-mate","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/ineshbose.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":"2021-10-11T14:56:25.000Z","updated_at":"2023-02-26T17:41:24.000Z","dependencies_parsed_at":"2024-10-10T16:31:11.971Z","dependency_job_id":null,"html_url":"https://github.com/ineshbose/portion-mate","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ineshbose/portion-mate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ineshbose%2Fportion-mate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ineshbose%2Fportion-mate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ineshbose%2Fportion-mate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ineshbose%2Fportion-mate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ineshbose","download_url":"https://codeload.github.com/ineshbose/portion-mate/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ineshbose%2Fportion-mate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28644070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dissertation-project","django","expo","react-native","typescript"],"created_at":"2024-10-10T16:20:51.673Z","updated_at":"2026-01-21T21:32:58.077Z","avatar_url":"https://github.com/ineshbose.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- PROJECT LOGO --\u003e\r\n\u003cbr /\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg alt=\"Portion Mate logo\" src=\"https://portion-mate.readthedocs.io/en/latest/assets/logo.svg\" height=\"250px\"\u003e\r\n\r\n  \u003ch3 align=\"center\"\u003ePortion Mate\u003c/h3\u003e\r\n\r\n  \u003c!-- BADGES / SHIELDS --\u003e\r\n\r\n  \u003cp align=\"center\"\u003e\r\n    \u003ca href=\"https://inesh.xyz/portion-mate\" target=\"_blank\"\u003e\u003cimg alt=\"GitHub deployments\" src=\"https://img.shields.io/github/deployments/ineshbose/portion-mate/github-pages?style=flat-square\u0026logo=githubactions\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://app.codacy.com/gh/ineshbose/portion-mate/dashboard\" target=\"_blank\"\u003e\u003cimg alt=\"Codacy grade\" src=\"https://img.shields.io/codacy/grade/57b01d85bcfa4d8bb96978e1edb2edff?style=flat-square\u0026logo=codacy\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://codeclimate.com/github/ineshbose/portion-mate\" target=\"_blank\"\u003e\u003cimg alt=\"Code Climate maintainability\" src=\"https://img.shields.io/codeclimate/maintainability/ineshbose/portion-mate?style=flat-square\u0026logo=codeclimate\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://portion-mate.readthedocs.io/\" target=\"_blank\"\u003e\u003cimg alt=\"Read the Docs\" src=\"https://img.shields.io/readthedocs/portion-mate?style=flat-square\u0026logo=readthedocs\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\u003cp align=\"center\"\u003e\r\nPortion Mate is an application that helps keep track of your food intake. This project has been proposed for Level 4 \u003ca href=\"https://www.gla.ac.uk/coursecatalogue/course/?code=COMPSCI4025P\" target=\"_blank\"\u003eIndividual Project (H)\u003c/a\u003e by \u003ca href=\"http://www.dcs.gla.ac.uk/~oandrei/\" target=\"_blank\"\u003eDr. Oana Andrei\u003c/a\u003e. To run this app locally, refer to the instructions in the \u003ca href=\"https://github.com/ineshbose/portion-mate/blob/develop/src/manual.md\" target=\"_blank\"\u003emanual\u003c/a\u003e.\r\n\u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n## 📚 Documentation\r\n\r\n\u003cp\u003eLearn about this project through the different docs provided!\u003c/p\u003e\r\n\r\n- [Getting Started](https://github.com/ineshbose/portion-mate/blob/develop/src/manual.md)\r\n- [App Documentation](https://portion-mate.readthedocs.io/)\r\n- [Repository Wiki](https://github.com/ineshbose/portion-mate/wiki/)\r\n- [Dissertation](https://ineshbose.github.io/portion-mate/dissertation.pdf)\r\n\r\n\u003ctable\u003e\r\n\u003ctbody\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003e\u003cb\u003eStacks used\u003c/b\u003e\u003c/td\u003e\r\n    \u003ctd\u003e\r\n  \u003ca href=\"https://github.com/facebook/react-native\" target=\"_blank\"\u003e\u003cimg alt=\"React native\" src=\"https://img.shields.io/badge/React_Native-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/expo/expo\" target=\"_blank\"\u003e\u003cimg alt=\"Expo\" src=\"https://img.shields.io/badge/Expo-1B1F23?style=for-the-badge\u0026logo=expo\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/django/django\" target=\"_blank\"\u003e\u003cimg alt=\"Django\" src=\"https://img.shields.io/badge/Django-092E20?style=for-the-badge\u0026logo=django\u0026logoColor=green\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/postgres/postgres\" target=\"_blank\"\u003e\u003cimg alt=\"Postgres\" src=\"https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/eva-design/eva\" target=\"_blank\"\u003e\u003cimg alt=\"Eva Design System\" src=\"https://img.shields.io/badge/Eva%20Design%20System-36f?style=for-the-badge\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAACrFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8YHwjLAAAA43RSTlMAAAECAwQFBgcICQoLDA0ODxAREhQVFhcZGhscHR4fICEiIyQoKSorLC4vMDEzNDU2Nzg5Ojs8PT9AQUJDREVGR0hJSktMTU5PUFFSU1VWV1haW1xdXl9gYWJjZGVnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9fn+AgYWGh4iKi4yNjo+QkZKTlJWWl5mbnJ2en6Gio6SlpqeoqaqrrK2usbKztba3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\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n    \u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003e\u003cb\u003eDependency managers\u003c/b\u003e\u003c/td\u003e\r\n    \u003ctd\u003e\r\n  \u003ca href=\"https://github.com/yarnpkg/yarn\" target=\"_blank\"\u003e\u003cimg alt=\"Yarn\" src=\"https://img.shields.io/badge/Yarn-2C8EBB?style=for-the-badge\u0026logo=yarn\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/python-poetry/poetry\" target=\"_blank\"\u003e\u003cimg alt=\"Poetry\" src=\"https://img.shields.io/badge/Poetry-60A5FA?style=for-the-badge\u0026logo=poetry\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n    \u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003e\u003cb\u003eCode style\u003c/b\u003e\u003c/td\u003e\r\n    \u003ctd\u003e\r\n  \u003ca href=\"https://github.com/microsoft/typescript\" target=\"_blank\"\u003e\u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/eslint/eslint\" target=\"_blank\"\u003e\u003cimg alt=\"ESLint\" src=\"https://img.shields.io/badge/eslint-3A33D1?style=for-the-badge\u0026logo=eslint\u0026logoColor=white\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/prettier/prettier\" target=\"_blank\"\u003e\u003cimg alt=\"Code style prettier\" src=\"https://img.shields.io/badge/prettier-1A2C34?style=for-the-badge\u0026logo=prettier\u0026logoColor=F7BA3E\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/airbnb/javascript\" target=\"_blank\"\u003e\u003cimg alt=\"Airbnb style guide\" src=\"https://img.shields.io/static/v1?style=for-the-badge\u0026message=Airbnb\u0026color=FF5A5F\u0026logo=Airbnb\u0026logoColor=FFFFFF\u0026label=\"\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://github.com/psf/black\" target=\"_blank\"\u003e\u003cimg alt=\"Code style black\" src=\"https://img.shields.io/badge/-black%20formatter-000000.svg?style=for-the-badge\u0026logo=python\u0026logoColor=white\u0026labelColor=000000\"\u003e\u003c/a\u003e\r\n    \u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/tbody\u003e\r\n\u003c/table\u003e\r\n\r\n_For more information, please refer to the [Wiki](https://github.com/ineshbose/portion-mate/wiki)._\r\n\r\n## 🗺️ Project Layout\r\n\r\n- [`.`](#) Root of repository with directories of different concerns\r\n- [`package.json`](/package.json) is the repository module handler using [Yarn Workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces/) and [lint-staged](https://github.com/okonet/lint-staged)\r\n- [`docs`](/docs) contains files and assets related to documenting this project\r\n- [`src`](/src) contains the source code for the application itself\r\n- [`src/app`](/src/app) includes most of the source code for the Expo application\r\n- [`src/server`](/src/server) is the source code for the Django backend server\r\n- [`src/package.json`](/src/package.json) \u0026 [`src/pyproject.toml`](/src/pyproject.toml) list dependencies of the source code\r\n- [`src/manual`](/src/manual.md) lists instructions on running the application locally\r\n- [`src/.env.example`](/src/.env.example) is an example of a `.env` (git-ignored) file that can be used to read environment variables\r\n- [`dissertation`](/dissertation) contains all files for the dissertation and being used on [Overleaf](https://www.overleaf.com/)\r\n- [`.github`](/.github) Files used by GitHub to enable features used by this repository\r\n- [`.github/workflows`](/.github/workflows) contains all YAMLs for instructions on running different [GitHub Actions](https://github.com/features/actions)\r\n- [`timelog.md`](/timelog.md) is a required file for the project that includes a log of tasks and time spent\r\n\r\n## 💽 License\r\n\r\nWhile as much as I love open-source, unfortunately, this project is _not_ licensed for contributions or modifications. This is for confidence with the academic conduct of the university and avoid assisting any unintentional plagiarism. This repository is only public for reference. All dependencies for the project are licensed and used with compliance to requirements.\r\n\r\n## 📟 Contact\r\n\r\nIf you have questions about this project, you can refer to the documents (including the [FAQ](https://portion-mate.readthedocs.io/en/latest/FAQ/)), but if you didn't find what you were looking for, or want to share feedback, you can send it to:\r\n\r\nInesh Bose - 2504266b@student.gla.ac.uk / Inesh.Bose@glasgow.ac.uk\r\n\r\nProject Link: [https://github.com/ineshbose/portion-mate/](https://github.com/ineshbose/portion-mate/)\r\n\r\n\u003cdiv align=\"right\"\u003e\r\n\u003cp align=\"right\"\u003e\r\n  \u003ca href=\"#\"\u003e\r\n    \u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/ineshbose/portion-mate?style=flat-square\"\u003e\r\n    \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/ineshbose/portion-mate?style=flat-square\"\u003e\r\n  \u003c/a\u003e\r\n\u003c/p\u003e\r\n\u003c/div\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fineshbose%2Fportion-mate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fineshbose%2Fportion-mate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fineshbose%2Fportion-mate/lists"}