{"id":24236883,"url":"https://github.com/brian2727/owyn","last_synced_at":"2026-04-19T02:04:24.371Z","repository":{"id":271425285,"uuid":"908393774","full_name":"Brian2727/OWYN","owner":"Brian2727","description":"OWYN (Only What You Need) is an Angular-based application designed to help users, especially those living alone, efficiently plan their meals and grocery shopping. The app provides a comprehensive solution for managing recipes, tracking ingredients, and keeping a daily calorie count.","archived":false,"fork":false,"pushed_at":"2025-01-09T14:39:23.000Z","size":544,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-04T14:49:50.774Z","etag":null,"topics":["angular","api","meal","mealpre","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/Brian2727.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-12-26T00:56:53.000Z","updated_at":"2025-01-09T14:39:26.000Z","dependencies_parsed_at":"2025-01-07T18:00:06.927Z","dependency_job_id":"9fcacaa7-9d82-4ed6-aed3-be6eb228ed87","html_url":"https://github.com/Brian2727/OWYN","commit_stats":null,"previous_names":["brian2727/owyn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Brian2727/OWYN","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brian2727%2FOWYN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brian2727%2FOWYN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brian2727%2FOWYN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brian2727%2FOWYN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Brian2727","download_url":"https://codeload.github.com/Brian2727/OWYN/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brian2727%2FOWYN/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267842970,"owners_count":24153133,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["angular","api","meal","mealpre","typescript"],"created_at":"2025-01-14T19:49:16.321Z","updated_at":"2026-04-19T02:04:24.327Z","avatar_url":"https://github.com/Brian2727.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Angular Recipe \u0026 Shopping List Application**\n\n# OWYN (Only What You Need) \n\n## **Project Overview**\nThis is a dynamic and responsive Angular application designed to manage recipes and shopping lists. The application utilizes **Angular**, **CSS**, and **TypeScript** and interacts with a **Firebase NoSQL database** to store and manage data in real-time.\n\n### **Key Features**\n- **Recipe Management**:\n  - Add, edit, and delete recipes.\n  - Save recipe data to a Firebase NoSQL database.\n  - Fetch recipes from the database and notify dependent components of changes via a recipe service.\n\n- **Shopping List Management**:\n  - Add, edit, and delete ingredients.\n  - Import ingredients from a recipe into the shopping list.\n  - Sync shopping list updates across components using observables.\n\n- **Technologies**:\n  - Angular 17.3.11\n  - Firebase (NoSQL Database)\n  - RxJS (for reactive programming)\n  - CSS for styling\n  - TypeScript for application logic\n\n---\n\n## **Project Structure**\nThe project is divided into two main components:\n\n### **1. Recipe Component**\nThe Recipe Component is responsible for managing recipes. It leverages a `RecipeService` to handle the following tasks:\n- **Fetching Recipes**: Retrieves recipes from the Firebase database.\n- **Saving Recipes**: Adds or updates recipes in the Firebase database.\n- **Notifying Components**: Uses an observable to notify dependent components of any changes to the recipes.\n\n#### Recipe Features:\n- Recipe list and detail views.\n- Adding ingredients from a recipe to the shopping list.\n- Editing and managing recipes.\n\n---\n\n### **2. Shopping List Component**\nThe Shopping List Component handles ingredient management. It uses the `ShoppingListService` for:\n- Adding, editing, and deleting ingredients.\n- Importing ingredients from recipes.\n- Managing state using an observable to ensure all dependent components are notified of updates.\n\n#### Shopping List Features:\n- Add ingredients manually or in bulk from a recipe.\n- Edit or delete ingredients in the shopping list.\n- Real-time synchronization across components.\n\n---\n\n## **Key Services**\n\n### **RecipeService**\nHandles all interactions related to recipes:\n- **Firebase Integration**: Manages the saving and fetching of recipes.\n- **Observable Updates**: Keeps components in sync with recipe changes.\n- **Ingredient Sharing**: Allows recipes to share their ingredients with the shopping list.\n\n### **ShoppingListService**\nHandles all interactions related to the shopping list:\n- **Ingredient Management**: Provides methods to add, edit, and delete ingredients.\n- **Bulk Ingredient Import**: Accepts an array of ingredients (e.g., from a recipe).\n- **Observable Updates**: Keeps components in sync with shopping list changes.\n\n---\n\n## **Project Setup**\n\n### **Prerequisites**\n1. Install [Node.js](https://nodejs.org/) and npm.\n2. Install the Angular CLI:\n   ```bash\n   npm install -g @angular/cli\n\n\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.11.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.\n\n## Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian2727%2Fowyn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrian2727%2Fowyn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian2727%2Fowyn/lists"}