{"id":26462980,"url":"https://github.com/bhelpful/momentmeal","last_synced_at":"2025-03-19T06:39:01.918Z","repository":{"id":36970934,"uuid":"438596475","full_name":"BHelpful/MomentMeal","owner":"BHelpful","description":"MomentMeal is a marketplace for food and recipes. We help you find and create the best recipes and meal plans for you.","archived":false,"fork":false,"pushed_at":"2024-08-11T17:05:21.000Z","size":64443,"stargazers_count":13,"open_issues_count":23,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-11T22:27:04.783Z","etag":null,"topics":["clerk","contentlayer","hacktoberfest","hacktoberfest-accepted","meal-management","nextjs","prisma","prisma-orm","stripe","tailwindcss","trpc","typescript","uploadthing"],"latest_commit_sha":null,"homepage":"https://momentmeal.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BHelpful.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},"funding":{"github":["andreasgdp","Toeffe3"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-12-15T10:59:50.000Z","updated_at":"2024-08-11T17:05:24.000Z","dependencies_parsed_at":"2024-08-04T20:01:55.267Z","dependency_job_id":null,"html_url":"https://github.com/BHelpful/MomentMeal","commit_stats":null,"previous_names":["bhelpful/momentmeal","bhelpful/mealtime"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BHelpful%2FMomentMeal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BHelpful%2FMomentMeal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BHelpful%2FMomentMeal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BHelpful%2FMomentMeal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BHelpful","download_url":"https://codeload.github.com/BHelpful/MomentMeal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244374611,"owners_count":20442665,"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":["clerk","contentlayer","hacktoberfest","hacktoberfest-accepted","meal-management","nextjs","prisma","prisma-orm","stripe","tailwindcss","trpc","typescript","uploadthing"],"created_at":"2025-03-19T06:39:00.799Z","updated_at":"2025-03-19T06:39:01.910Z","avatar_url":"https://github.com/BHelpful.png","language":"TypeScript","funding_links":["https://github.com/sponsors/andreasgdp","https://github.com/sponsors/Toeffe3"],"categories":[],"sub_categories":[],"readme":"[![Better Stack Badge](https://uptime.betterstack.com/status-badges/v1/monitor/vlb2.svg)](https://uptime.betterstack.com/?utm_source=status_badge)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=BHelpful_BHelpful\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=BHelpful_BHelpful)\n[![CodeQL](https://github.com/BHelpful/MomentMeal/actions/workflows/codeql.yml/badge.svg)](https://github.com/BHelpful/MomentMeal/actions/workflows/codeql.yml)\n[![CodeScene Code Health](https://codescene.io/projects/27963/status-badges/code-health)](https://codescene.io/projects/27963)\n[![CodeScene System Mastery](https://codescene.io/projects/27963/status-badges/system-mastery)](https://codescene.io/projects/27963)\n\n# MomentMeal - A marketplace for food and recipes.\n\nMomentMeal is a platform that connects food lovers and chefs. It allows users to discover new recipes, share their own, and modify existing ones to make it just right for them.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg align=\"center\" width=\"600\" alt=\"Project Image\" src=\"https://github.com/BHelpful/MomentMeal/assets/39928082/74cb09ba-d29d-4ab2-a361-5a31e7e392bd\" /\u003e\n\u003c/div\u003e\n\n\u003c/br\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://discord.gg/KrFs324F6e\"\u003e\n        \u003cimg src=\"https://img.shields.io/discord/755802968602968187?color=5865F2\u0026label=Discord\u0026logo=discord\u0026logoColor=white\" alt=\"Discord Server\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n# Getting started\n\n## Pre-requisites\n\n- Install pnpm globally `npm install -g pnpm`\n- (Optional) Install Docker e.g., Docker Desktop for Windows or Docker Engine for Linux. See [Docker installation](https://docs.docker.com/get-docker/) for more information.\n  - This is to have a local database for development. You can also use a remote database like the ones hosted by [Neon](https://neon.tech/)\n\n### Clerk Dashboard Setup\n\nFor this app to work you need to setup clerk OAuth providers. You can find the social options under `User \u0026 Authentication / Social Connections` in the [Clerk Dashboard](https://dashboard.clerk.dev)\n\n\u003e Pr. default we are using Google, Facebook, and Discord so for best experience you should setup these in the Clerk Dashboard.\n\n## Installation and setup\n\n- Clone the repository\n- Create local .env for the main app (./apps/web/.env). Do this by:\n  - `cp apps/web/.env.example apps/web/.env`\n  - And fill in the values\n- Install dependencies `pnpm install` or just `pnpm i`\n- Start the database `pnpm db:dev` or if using a provider like Neon, you can skip this step\n- Push the database schema to the database\n  - From apps/web: `pnpm prisma:push`\n  - Or from the root: `pnpm run --filter=momentmeal prisma:push`\n- Run the development server `pnpm dev`\n\n# Open Source\n\nMomentMeal is an open source project. We welcome contributions from the community. There are many ways to contribute to the project, from writing tutorials or blog posts, submitting bug reports and feature requests or writing code which can be incorporated into MomentMeal itself. Here is a list of some of the ways you can contribute to the project:\n\n- [Report bugs](https://github.com/BHelpful/MomentMeal/issues/new/choose) - If you find a bug, please report it in the issue tracker.\n- [Suggest new features](https://github.com/BHelpful/MomentMeal/issues/new/choose) - If you have an idea for a new feature, please suggest it in the issue tracker.\n- [Implement new features](https://github.com/BHelpful/MomentMeal/issues/new/choose) - If you want to implement a new feature, please create an issue in the issue tracker and describe the feature you want to implement. This will allow us to discuss the feature and make sure it fits with the project.\n- [Improve code quality](https://github.com/BHelpful/MomentMeal#repo-health-information) - We use SonarCloud and CodeScene to measure the code quality of our project. You can help us improve the code quality by fixing bugs and vulnerabilities.\n- Improve documentation - If you find any errors in the documentation or want to improve it, please contribute with a pull request.\n- In the future, we will want to implement translations of the app. If you are interested in helping us with this, please contact us at [momentmeal@gmail.com](mailto:momentmeal@gmail.com).\n\n## Get in contact with maintainers\n\nIf you have any questions or want to get in contact with the maintainers, you can reach out to us on Discord or by email at [momentmeal@gmail.com](mailto:momentmeal@gmail.com).\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://discord.gg/KrFs324F6e\"\u003e\n        \u003cimg src=\"https://img.shields.io/discord/755802968602968187?color=5865F2\u0026label=Discord\u0026logo=discord\u0026logoColor=white\" alt=\"Discord Server\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n# Branching strategy\n\nWe are using two branches that are protected:\n\n- `prod` - This is the main branch where all the code that is in production is located.\n- `master` - This is the branch where all the code that is deployed to staging is located.\n  - `master` should always be deployable to staging thereby also prod.\n  - All changes from maintainers and contributers should go toward `master`.\n\nAll other branches are dev branches that are created from `master` and merged back into `master` when the development is done.\n\n\u003e **_NOTE:_** Dev branches meaning short-lived branches that are created for a specific feature or bug fix. If the feature cannot be completed in a short amount of time, it is recommended to surround the feature with a feature flag and merge the branch into `master` quickly to avoid merge conflicts.\n\n# Deployment\n\n## Staging ([staging.momentmeal.com](https://staging.momentmeal.com/))\n\nThe staging environment is automatically deployed when changes get to the `master` branch. This is done frequently, as all development goes here. Stating is used to test the state of master, to see if we are ready to deploy to prod with new features/improvements.\n\n## Production ([momentmeal.com](https://momentmeal.com/))\n\nThe production environment is automatically deployed when changes get to the `prod` branch. There is no strict cadence for this, but it is done when we have a set of features/improvements that are ready to be released. It will also happen, that there is a bug in production we need to address, then a `hotfix/some-name` is made toward `prod` to solve the issue, directly deploying to prod. But this should not happen often\n\n# Development\n\n## UI Components\n\nSince we are making use of the [Shadcn UI](https://ui.shadcn.com/docs) library, we have a set of components that are already made for us. This means that we can focus on the business logic and not the UI. If you need a component that is not yet in the `/components/ui` folder, take a look at [Shadcn UI](https://ui.shadcn.com/docs) and see if the component is available there. Then you should be able to from the `/apps/web` directory run `pnpm dlx shadcn-ui@latest add ???` replacing `???` with the relevant component. This will automatically install add the component to the `ui` folder.\n\nIf there is not yet a component in the Shadcn UI library, this typically means the component is a domain-specific component. These should be created in the `/components` folder, ideally in a relevant subfolder.\n\n## Feature Flags\n\nCreate the feature flag in PostHog and use the feature flag in your code.\n\n(Server rendered components) Follow the steps below to create a feature flag:\n\n```TS\nimport PostHogClient from '\u003crelative path to app/posthog.ts\u003e';\n\nexport default async function Home() {\n  const posthog = PostHogClient();\n\n  const flagEnabled = await posthog.getFeatureFlag(\n    'testFeature',\n    \u003cuser distinct id\u003e\n  );\n```\n\n(Client rendered components) Follow the steps below to create a feature flag:\n\n```TS\nimport { useFeatureFlagEnabled } from 'posthog-js/react'\n\nfunction App() {\n    const flagEnabled = useFeatureFlagEnabled('testFeature')\n\n    if (flagEnabled) {\n        // do something\n    }\n}\n```\n\n# [Project Board](https://github.com/orgs/BHelpful/projects/4/views/23)\n\nFor development management we are using [GitHub Projects](https://github.com/orgs/BHelpful/projects/4/views/23). In there you can see our backlog, issues sorted by priority and size.\n\n## How the board is used\n\n- [ **Main** ](https://github.com/orgs/BHelpful/projects/4/views/23): This is the main board where all issues that are ready to be picked up, or are in progress, are located.\n- [ **Actions Needed** ](https://github.com/orgs/BHelpful/projects/4/views/25): This is where issues that are blocked or need more detail are located.\n- [ **Good First Issue** ](https://github.com/orgs/BHelpful/projects/4/views/20): This is where issues that are good for new contributors are located.\n  - Issues with the label `good first issue` are automatically added to this board.\n- [ **Bugs** ](https://github.com/orgs/BHelpful/projects/4/views/19): This is where all bugs are located.\n  - Issues with the label `bug` are automatically added to this board.\n\n### As a contributor\n\nFeel free to pick up any issue that is in the main board. If you are new to the project, you can start by looking at the [Good First Issue](https://github.com/orgs/BHelpful/projects/4/views/25) board.\n\nIn any case, if you have any questions, feel free to ask in the issue or in the Discord server, no matter what board the issue is in.\n\n# Repo health information\n\nHere is the current overview of the code health of the repository measured by:\n\n- Sonarcloud: https://sonarcloud.io/summary/overall?id=BHelpful_BHelpful\n\n## External links for development\n\n- Clerk docs: https://clerk.com/docs\n- Component library: https://ui.shadcn.com/docs\n- Prisma docs: https://www.prisma.io/docs\n- Tailwind CSS docs: https://tailwindcss.com/docs\n\n## Web Info\n\nThe smallest width we will accommodate for the webpage is 240px.\n\n# Credits\n\nThis project has taken inspiration from the following projects:\n\n- https://github.com/sadmann7/skateshop\n- https://github.com/joschan21/quill\n  Both https://github.com/sadmann7 and https://github.com/joschan21 have done some awesome work, so go support them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhelpful%2Fmomentmeal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhelpful%2Fmomentmeal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhelpful%2Fmomentmeal/lists"}