Giter Club home page Giter Club logo

cookbookie's Introduction

Create T3 App

This is a T3 Stack project bootstrapped with create-t3-app.

What's next? How do I make an app with this?

We try to keep this project as simple as possible, so you can start with just the scaffolding we set up for you, and add additional things later when they become necessary.

If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our Discord and ask for help.

Learn More

To learn more about the T3 Stack, take a look at the following resources:

You can check out the create-t3-app GitHub repository — your feedback and contributions are welcome!

How do I deploy this?

Follow our deployment guides for Vercel, Netlify and Docker for more information.

cookbookie's People

Contributors

daniel-melanson avatar ryecai avatar

Stargazers

 avatar

Watchers

 avatar

cookbookie's Issues

Prisma client does not correctly update many to many relations

Describe the bug
The Prisma client does not update a user's allergens list even when correctly inputting a list of tag ID's.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the /onboarding page after signing in or registering
  2. Enter a first name
  3. Select any number of tags for dietary restrictions
  4. Look at Prisma Studio or look at the return value of the update operation to see if user allergens update.

Expected behavior
The user allergens field connects to the corresponding tags

Additional Context
User and Tags is a many to many relation

Allow users to save recipes

Describe the solution you'd like as a user story
As a user, I want to add recipes to my saved recipes so that I can go back to it later.

As a user, I want to remove recipes from my saved, so that I have control over my lists. I want a Snackbar button to show up in the event it was a mistake.

Definition of Done

  • User can add recipes to their saved list
    • Relation gets added at database-level
  • Recipe displays as bookmarked when relation exists
  • User can remove recipe from their list, but a Snackbar alert is made in-case it was a mistake

Additional context
Working with database-level connections and default recipe views. Viewing the entire list is a separate issue.

Implement Home Page

Describe the solution you'd like as a user story
As a user, I want a home page, so that I can get an overview of what is available to be, signed in or signed out.

Definition of Done

  • Signed out home page
  • Signed in home page with using random recipes

Additional context
N/A

Email and Password Authentication

Describe the solution you'd like as a user story
As a user, I want to sign up and sign in using email and password

Definition of Done

  • Implement ability to register and sign in using email and password
  • Account creation is verified through email
  • Implement using NextAuth
  • Allow the use of session data

Additional context
N/A

Implement Saved Recipes View

Describe the solution you'd like as a user story

  • As a user, I want to view my saved recipes, so that I can go back to recipes I want to make.
  • As a user, I want to filter my saved recipes by category data, so that I can quickly find the recipes I want.
  • As a user, I want to be able to search my saved recipes by a keyword, so that I can quickly find the recipe I want.

Definition of Done

  • Recipes can be searched and filtered like default search
  • Only recipes that are bookmarked show up
  • Recipes should be able to be added and removed from list (see #15)

Additional context

  • Maybe a Sidebar menu that appears on the side rather than a separate page?
    • Users probably won't bookmark that many

Implement Default Recipe Search

Describe the solution you'd like as a user story

  • As a user, I want to search available recipes and filter by category data.
  • As a user, I want to search available recipes and filter by tag.
  • As a user, I want to filter recipes by ingredient, so that I can use excess materials or not use materials I want to save.
  • As a user, I want to search available recipes by keyword, so that I can quickly find recipes relevant to me.

Definition of Done

  • User can do the above in a single page that displays all recipes

Additional context
N/A

User Stories

Recipes

  • As a user, I want to be recommended recipes based on my recent activity.
    • Use tags of made recipes and sort by popularity of recipe with other users
    • If no made recipes, use tags of recipes in shopping list
    • If no recipes in shopping list, just use most popular recipes
  • As a user, when I view a recipe, I want to see:
    • What ingredients are required for the recipe
    • What ingredients I have and if I have enough
    • What ingredients I am missing
    • Category data about the recipe
      • Breakfast, lunch, dinner, dessert, snack, drinks
      • Allergens
      • Difficulty
      • Dietary restrictions
      • Total prep. time

Pantry

  • As a user, I want to add and remove food items to my pantry, so that I can find recipes that I can make right now.
  • As a user, I want to scan my receipt, so that I do not have to manually add ingredients to my pantry
  • As a user, I want to clear my pantry so that I can start fresh
    • Confirmation

Schedule

  • As a user, I want to schedule a series of meals using the ingredients in my pantry, so that I can use up all the food in the house.
  • As a user, I want to schedule a series of meals, irrelevant of my pantry, so that a shopping list is generated for me.--

Integrate Github CICD

Story

As a developer, I want to know when my project has linting or formatting errors

Definition of Done

  • Action for pnpm run lint
  • Action for checking pnpx prettier -w ./src returns 0 changes

Handle Invalid Sign-in/Sign-up credentials

Describe the solution you'd like as a user story
As a new user, I want to know if my email is invalid or my password doesn't meet the requirements. As a returning user, I want to know if my credentials don't satisfy any known user.

Definition of Done

  • Sign-in with bad password does not redirect to garbage
  • Sign-up with bad password outputs proper error message
  • Sign-up does not request to make a new user if the validation is bad
  • Handle possible create user error
  • Handle possible sign-in error

Additional context
N/A

Onboarding

Describe the solution you'd like as a user story
As a user, I want to enter information after registering to personalize my experience
As a user, I want to input dietary restrictions as a part of my profile
As a user, I want to input a name that the application will use

Definition of Done

  • /onboarding implements the above
  • User is redirected to the /onboarding page after registering

Additional context

  • Use the AuthForm functional component as a skeleton
  • Create a mutation procedure to update user information

Connect NavBar with user session

Story

As a user, I want to view my dashboard or logout, so that I can change things or logout.

Definition of "done"

  • Icon maps to user’s respective icon
  • On click brings down a menu
  • Menu items link to respective places

OAuth Authentication

Describe the solution you'd like as a user story
As a new user, I want to sign up using my Google account, so that I do not have to think of a password or verify my email.

Definition of Done

  • User can signup using Google account
  • Page contains some proof of session
  • User can logout
  • User can sign back in using the same Google account

Additional context
N/A

Connect Recipe Search with User Session

Describe the solution you'd like as a user story

  • As a user, I want to be able to filter out recipes that I have the ingredients for, so that I can see what I can make.
  • As a user, I want to be able to filter out recipes that I already made, so that I can try something new.

Definition of Done

  • /recipes/search page implements the above.

Additional context
Filtering by recipes that were already made depends on #17
User Authentication Depends on #27

Password reset

Describe the solution you'd like as a user story
As a user that signup with email and password, I want to reset my password in the event that I forget it.

Definition of Done

  • Implement password reset request form into pages/signin.tsx
  • Integrate with Email API
  • Send corresponding user email with a password reset link
  • Link redirects to password reset form

Additional context
N/A

Implement Recipe Scraping Routine

Describe the solution you'd like as a user story
As an administrator, I want an process that finds recipe information and stores in the database, so that I do not have have to do it manually.

Definition of Done

  • Scrapes recipe information
  • Puts into database as a recently processed recipe

Additional context
N/A

Create Zod Validators

Story

As a developer, I want to validate user input on the client, so that bad requests do not get sent to the server. Additionally, I want input sent to the server validated before it is processed.

Definition of “done”

  • Create a Zod validator for:
    • User creation
    • Recipe creation
    • Ingredient creation

Deployment CICD

Describe the solution you'd like as a user story
As a developer, I want my project to automatically deploy when new commits are pushed to main.

Definition of Done

  • Decide on deployment platform
  • Deploy to platform on commits to main

Additional context

Compontentize search bar

Story

As a developer, I want to follow DRY principles, so that my code is easier to maintain. The current implementation is just a child element of the navbar.

Definition of “done”

  • Search bar is make into a component
  • Both NavBar and home page styles
  • Select menu for Ingredients/Recipes
  • pattern regular expression to prevent empty or short searches
  • red outline or some feedback for empty or short searches

Implement Recipe Admin Panel

Describe the solution you'd like as a user story

  • As an administrator, I want to view recently scraped recipes, so that I can confirm their validity and make any changes.

Definition of Done

  • Pending recipes not displayed on normal user accounts.
  • An Admin panel displaying pending recipes.
  • Ability to edit any field or add/remove any tag
  • Ability to confirm recipes only once all new ingredients are confirmed as well.

Additional context
Add any other context or screenshots about the feature request here.

Allow Users to Mark Recipes As Made

Describe the solution you'd like as a user story

  • As a user, when I view a recipe I want to mark it as “made”, so that the ingredients are automatically removed from my pantry. I am prompted for the amount of servings I made so that ingredient quantities are accurately removed from my pantry.
  • As a user, when I view a recipe, I want to see when I previously made it, so that I can keep track of my meal history.

Definition of Done

  • User able to mark a recipe as made
    • Prompted for servings and whet it was made and automatically remove ingredients from pantry
  • Respective ingredient quantities are removed from users pantry
  • Necessary database objects created to describe that event.

Additional context
Add any other context or screenshots about the feature request here.

Implement Ingredient Recipe Panel

Describe the solution you'd like as a user story

  • As an administrator, I want to view recently scraped ingredients, so that I can confirm their validity and make any changes.

Definition of Done

  • See #19, but for ingredients.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.