{"id":27943538,"url":"https://github.com/ethanngit/apotheosis","last_synced_at":"2026-01-24T02:06:01.051Z","repository":{"id":244993603,"uuid":"816929788","full_name":"EthanNgit/Apotheosis","owner":"EthanNgit","description":"Fitness and lifestyle application","archived":false,"fork":false,"pushed_at":"2024-06-18T17:45:36.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T12:12:27.284Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/EthanNgit.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-06-18T17:08:17.000Z","updated_at":"2024-06-18T17:45:39.000Z","dependencies_parsed_at":"2024-06-18T22:37:09.071Z","dependency_job_id":"cb882dd2-d431-44b4-89ee-9b72a32c5fdd","html_url":"https://github.com/EthanNgit/Apotheosis","commit_stats":null,"previous_names":["ethanngit/apotheosis"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EthanNgit%2FApotheosis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EthanNgit%2FApotheosis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EthanNgit%2FApotheosis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EthanNgit%2FApotheosis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EthanNgit","download_url":"https://codeload.github.com/EthanNgit/Apotheosis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252873897,"owners_count":21817715,"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":[],"created_at":"2025-05-07T12:12:29.807Z","updated_at":"2026-01-24T02:05:56.027Z","avatar_url":"https://github.com/EthanNgit.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eApotheosis\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e  \nApotheosis is a fitness and lifestyle mobile app built with jetpack compose and spring\n\u003c/p\u003e\n\n## Download\nWhen Apotheosis is released you will be able to get it on the [Google Play Store](https://github.com/EthanNGit/Apotheosis)\n\n## Tech stack | Frontend\n- Minimum Android SDK 24\n- Jetpack compose with Kotlin\n  - Kotlin coroutines \n  - Hilt dependency injection\n  - Navigation compose\n  - Room DB\n  - Retrofit\n- Architecture\n  - Model View View Model (MVVM): Reccomended by Google due to it's separation of concerns \n- Firebase Authentication\n  - Google sign in\n  - Facebook sign in\n  - Email sign in\n- API\n  - Apotheosis Nutritional API (see backend tech stack below)\n  - Fatsecret API\n  - USDA API\n  \n## Tech stack | Backend\n- Docker Compose\n  - Spring boot w/ Kotlin\n    - Spring security\n    - JPA\n  - Reverse Proxy\n    - Nginx\n  - Managing API\n    - Prometheus\n    - Alert manager\n    - Grafana\n  - API caching\n    - Redis DB\n  - Database\n    - MariaDB\n- Cloudflare\n  - Cloudflare SSL\n  - Cloudflare tunnels\n\n## Technical details\nTBC...\n\n## Architecutre details\nApotheosis uses the MVVM (Model - View - View Model) architecture pattern, this separates the frontend into a couple layers. \n\u003c/br\u003e\u003c/br\u003e\u003c/br\u003e- Insert graph here \u003c/br\u003e\u003c/br\u003e\u003c/br\u003e\nAs seen in the graph above, there is two primary layers that are used.\n- First the UI layer, this layer is primarily for collecting input and showing data.\n  - The UI layer takes data from a view model and displays it to the views, in Jetpack compose, this could be a Composable.\n  - The UI layer also should send inputs to the view model for the view model to decide what to do with the input.\n- Second is the data layer, this is where you store Models, or collecting backend data.\n  - The data layer collects data through multiple sources, such as the Apotheosis API, or the local Room DB.\n  - The data layer also uses the concept of Repositories, which are a way to further enhance separation of concerns.\nThe view model comes into play as it can bridge the two layers together nicely, as it is the preferred method to holding business logic.\n\n## Apotheosis API\nThe Apotheosis API gives you a way to access our nutritional database and get your user data to use in any of your projects. When the Apotheosis API goes public you can check [here](https://github.com/EthanNGit/Apotheosis) on how to use it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethanngit%2Fapotheosis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethanngit%2Fapotheosis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethanngit%2Fapotheosis/lists"}