{"id":18830315,"url":"https://github.com/sopherapps/you-hedge","last_synced_at":"2026-01-24T08:30:12.583Z","repository":{"id":98579386,"uuid":"517865215","full_name":"sopherapps/you-hedge","owner":"sopherapps","description":"A web/webOS application to sidestep the mentally-degrading YouTube news feed and only view channels subscribed to.","archived":false,"fork":false,"pushed_at":"2024-06-24T11:25:58.000Z","size":4149,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-30T06:43:06.846Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sopherapps.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":"2022-07-26T00:49:51.000Z","updated_at":"2022-08-25T23:12:28.000Z","dependencies_parsed_at":"2024-12-30T06:41:06.042Z","dependency_job_id":"840d98b2-a9e0-48bf-bd68-89e3aa2777de","html_url":"https://github.com/sopherapps/you-hedge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sopherapps%2Fyou-hedge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sopherapps%2Fyou-hedge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sopherapps%2Fyou-hedge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sopherapps%2Fyou-hedge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sopherapps","download_url":"https://codeload.github.com/sopherapps/you-hedge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239768957,"owners_count":19693760,"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":"2024-11-08T01:48:32.522Z","updated_at":"2025-02-20T02:41:06.140Z","avatar_url":"https://github.com/sopherapps.png","language":"TypeScript","readme":"# YouHedge\n\n\u003e ' Come unto Me, all ye that labour and are heavy laden, and I will give you rest. Take My yoke upon you, and learn of Me; for I am meek and lowly in heart: and ye shall find rest unto your souls. For My yoke is easy, and My burden is light.'\n\u003e\n\u003e -- [Matthew 11:28-30](https://www2.bible.com/bible/1/MAT.11.28-30)\n\n![CI status](https://github.com/sopherapps/you-hedge/actions/workflows/firebase-hosting-merge.yml/badge.svg)\n\n\nA Web application to sidestep the mentally-degrading YouTube news feed and only view channels subscribed to.\nIts back end can be found at [https://github.com/sopherapps/you-hedge-back](https://github.com/sopherapps/you-hedge-back).\n\n**The webOS version of the app is found in the [./webos](./webos/) folder.**\n\n\n## Dependencies\n\n- [nodejs v16+](https://nodejs.org/en/)\n- [reactjs v18+](https://reactjs.org/)\n- [react router v6+](https://reactrouter.com/)\n- [webOS v4.0+](https://www.lg.com/global/business/webos) for webOS app\n\n## What it Looks like\n\n### 1. Login Page (Welcome page)\n\n![YouHedge Login page](./designs/youhedge%20login.png)\n\n### 2. Home page\n\n![YouHedge Home page](./designs/youhedge%20home.png)\n\n### 3. YouTube Player Page\n\n![YouHedge YouTube Player Page](./designs/youhedge%20youtube%20player.png)\n\n### 4. YouTube Player Page on Hover at the top (Showing back button)\n\n![YouTube Player Page on Hover at the top (Showing back button)](./designs/youhedge%20youtube%20player%20with%20back%20button.png)\n\n## Quick Start (web)\n\n- Set up the [backend](https://github.com/sopherapps/you-hedge-back)\n\n- Clone the repo\n\n```shell\ngit clone git@github.com:sopherapps/you-hedge.git\n```\n\n- Copy the `.example.env` file to `.env` file and update its variables\n\n```shell\ncd you-hedge\ncp .example.env .env\n```\n\n- Install dependencies\n\n```shell\nyarn install\n```\n\n- Start the app\n\n```shell\nyarn start\n```\n\n- Open the browser at [localhost:3000](http://localhost:3000) if it is not yet open already\n\n## Quick Start (webOS)\n\n- Set up the [backend](https://github.com/sopherapps/you-hedge-back)\n\n- Ensure you have the [webOS CLI](https://webostv.developer.lge.com/sdk/command-line-interface/installation/) and [webOS simulator](https://webostv.developer.lge.com/sdk/Simulator/installation/) installed.\n- Clone the repo\n\n```shell\ngit clone git@github.com:sopherapps/you-hedge.git\n```\n\n- Set up the web app as shown in [the instructions above](#quick-start-web)\n\n- Host it on a server of your choice and get its URL.\n\n- Update the `location.href = 'https://youhedge.web.app';` line in the [webos/index.html](./webos/index.html) file, replacing `https://youhedge.web.app` with your URL got above.\n\n- Open the webOS simulator\n- In the simulator, Select 'launch app' from 'tools' and select the `webos` folder in the root of the `you-hedge` folder.\n\n## Design\n\n### Constraints:\n\n- Youtube data api has daily quotas of upto 10,000 currently\n- LG WebOS apps use JS/HTML/CSS with DB8 for data storage, and localStorage, sessionStorage.\n- LocalStorage may not get cleared when app is uninstalled, but sessionStorage should as it is attached to the session.\n\n### Requirements:\n\n- User can view all channels subscribed to. (Subscription is done only in YouTube)\n- User can select any channel and view a list of uploads for each channel\n- User can select any uploaded video and watch it in full screen\n- User can press back button to go back to previous screen\n- User can log in with their google account\n\n### Design Decisions:\n\n- Use react and react-router to create a single page application\n- Move all requests sent to YuoTube to [a separate backend](https://github.com/sopherapps/you-hedge-back) to avoid the exposure of Google API client secrets and API keys.\n- Save all data in [LocalForage](https://github.com/localForage/localForage) for the sake of the progressive web app (PWA) since \nservice workers can't access sessionStorage or localStorage.\n- Use the YouTube iframe to play the youtube videos themselves\n\n### Project Structure\n\nThe project (`src`) is divided along the main lines of display (`pages` and `components`), business logic (`lib`).\n\n- `pages` folder contains all the pages/screens to be displayed by the app\n- `components` folder contains all reusable reactjs components for the app\n- `lib` folder contains the business logic that is separate from display\n  - `store.ts` file contains the interface to the store that stores the app's data\n  - `client` folder contains the interface to the back end API\n  - `types` folder contains a number of types that are used in the app\n    - `dtos.ts` contains the types that are actually relevant within the app as data transfer objects\n    - `http.ts` contains a number of types representing HTTP requests and responses as expected from the back end.\n    - `state.ts` contains the separate states the entire app could be in. This is separate from the data it will have. For example the app behaves differently when authenticated as opposed to when it is not authenticated.\n\n## How to Test\n\n- Clone the repo\n\n```shell\ngit clone git@github.com:sopherapps/you-hedge.git\n```\n\n- Copy the `.example.env` file to `.env` file and update its variables\n\n```shell\ncd you-hedge\ncp .example.env .env\n```\n\n- Install dependencies\n\n```shell\nyarn install\n```\n\n- Run the test command\n\n```shell\nyarn test\n```\n\n## Acknowledgments\n\n- We can do nothing without God (John 15: 5). Glory be to Him.\n\n## License\n\nCopyright (c) 2022 [Martin Ahindura](https://github.com/tinitto). Licensed under the [MIT License](./LICENSE)\n\n## Gratitude\n\nAll glory be to God\n\n\u003ca href=\"https://www.buymeacoffee.com/martinahinJ\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n","funding_links":["https://www.buymeacoffee.com/martinahinJ"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsopherapps%2Fyou-hedge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsopherapps%2Fyou-hedge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsopherapps%2Fyou-hedge/lists"}