use bun
This commit is contained in:
Ruidy 2024-04-27 00:34:41 +02:00
parent 7c7c3f0114
commit d9af585209
No known key found for this signature in database
GPG key ID: E00F51288CB857CC
15 changed files with 1984 additions and 122 deletions

1655
.aider.chat.history.md Normal file

File diff suppressed because it is too large Load diff

276
.aider.input.history Normal file
View file

@ -0,0 +1,276 @@
# 2024-12-13 21:39:55.512352
+n
# 2024-12-13 21:40:09.266770
+/add components/AppNavbar.vue
# 2024-12-13 21:41:08.087873
+change the nuxt-link to random. It must be a button that triggers the useREcipeRandom composable. If the user is not on the /random url we must navigate to it
# 2024-12-13 21:41:57.546012
+/add components/AppNavbar.vue
# 2024-12-13 22:37:21.637830
+/add package.json
# 2024-12-13 22:38:15.345890
+/add pages/[id].vue
# 2024-12-13 22:45:55.419537
+/add pages/index.vue
# 2024-12-13 22:50:08.132910
+/add app.vue
# 2024-12-13 22:57:55.838401
+/add pages/[id].vue
# 2024-12-13 22:58:23.470174
+/add components/recipe/card.vue components/recipe/index.vue components/recipe/ingredients.vue
# 2024-12-13 22:58:50.995437
+I want to add a skeleton when the page loads that matches the card and ingredient list and content layout
# 2024-12-13 23:00:37.864463
+/add pages/[id].vue
# 2024-12-13 23:10:51.785039
+/add components/AppFooter.vue
# 2024-12-13 23:17:52.755408
+/drop gitsigns:///Users/ruidy/Dev/node/meal_planner/.git//:0:components/AppFooter.vue
# 2024-12-13 23:29:25.130188
+/add README.md
# 2024-12-14 10:11:48.291791
+/add composables/useRecipeSearch.ts
# 2024-12-14 10:13:08.935799
+create a research page on the /search url taking the search query as a query parameter. use daisyui for the layout
# 2024-12-14 10:14:09.451269
+/add components/recipe/search.vue
# 2024-12-14 10:14:21.375661
+/add server/trpc/routers/recipes.ts
# 2024-12-14 10:14:28.419016
+now implement
# 2024-12-14 10:16:11.974208
+/add pages/search.vue
# 2024-12-14 10:31:29.372232
+/add components/recipe/search.vue
# 2024-12-14 10:40:24.170866
+/add .nuxt/types/imports.d.ts
# 2024-12-14 10:42:09.952541
+/add node_modules/nuxt/dist/app/composables/asyncData.d.ts
# 2024-12-14 10:46:07.185510
+/add server/trpc/routers/recipes.ts
# 2024-12-14 10:46:11.532349
+/add utils/recipes.ts
# 2024-12-14 10:46:15.907096
+/add types/recipe.ts
# 2024-12-14 15:08:57.920043
+/drop
# 2024-12-14 15:09:15.291578
+create a categories page
# 2024-12-14 15:11:08.473107
+/add server/trpc/routers/recipes.ts
# 2024-12-14 15:11:28.898754
+/drop server/trpc/routers/recipes.ts
# 2024-12-14 15:11:28.976166
+/add server/trpc/routers/recipes.ts
# 2024-12-14 15:11:32.962219
+/drop neo-tree filesystem [1]
# 2024-12-14 15:11:46.767029
+/add server/trpc/routers/categories.ts
# 2024-12-14 15:13:15.829646
+create the category page calling the router you created
# 2024-12-14 15:14:00.601188
+/add composables/useCategories.ts
# 2024-12-14 15:14:48.317381
+/add server/trpc/trpc.ts
# 2024-12-14 15:14:55.169821
+/add server/trpc/context.ts
# 2024-12-14 15:14:57.297636
+/add server/trpc/routers/index.ts
# 2024-12-14 15:16:08.866486
+/drop ~/Dev/node/meal_planner
# 2024-12-14 15:17:30.807622
+/add pages/categories.vue
# 2024-12-14 15:19:32.874574
+/add pages/search.vue
# 2024-12-14 15:19:44.835990
+improve the layout by taking example on the search page
# 2024-12-14 15:20:10.531362
+add pages/categories.vue
# 2024-12-14 15:20:56.212560
+/add src/components/Navbar.tsx
# 2024-12-14 15:20:56.245090
+/drop ~/Dev/node/meal_planner
# 2024-12-14 15:20:56.274982
+/add ~/Dev/node/meal_planner
# 2024-12-14 15:20:56.287118
+/add components/app/navbar.vue
# 2024-12-14 15:23:50.021356
+/drop
# 2024-12-14 15:24:02.867277
+/add pages/categories.vue
# 2024-12-14 15:24:35.057752
+remove the header and set a fixed height the card. use ellipsis if the description is longer that the max allowed height. make it responseive
# 2024-12-14 15:25:28.155546
+/add server/trpc/routers/categories.ts
# 2024-12-14 15:25:55.220084
+/add types/recipe.ts
# 2024-12-14 15:27:09.955135
+parse the categories fetch call response similarly to the recipes
# 2024-12-14 15:28:04.976045
+parse the categories fetch call similarly to the recipes
# 2024-12-14 15:28:22.265520
+/add types/recipe.ts
# 2024-12-14 15:28:32.201929
+/add server/trpc/routers/categories.ts
# 2024-12-14 15:29:18.224388
+/add server/trpc/routers/recipes.ts
# 2024-12-14 15:29:27.965664
+/add utils/recipes.ts
# 2024-12-14 15:31:29.546270
+/add pages/categories/index.vue
# 2024-12-14 15:31:29.727185
+/drop pages/categories/index.vue
# 2024-12-14 15:31:29.775294
+/add pages/categories/index.vue
# 2024-12-14 15:32:43.034734
+/add composables/useCategories.ts
# 2024-12-14 15:32:52.855244
+/add node_modules/zod/lib/types.d.ts
# 2024-12-14 15:33:24.249300
+/add types/category.ts
# 2024-12-14 15:38:28.584427
+/add ~/Dev/node/meal_planner
# 2024-12-14 15:38:28.657843
+/drop ~/Dev/node/meal_planner
# 2024-12-14 15:38:28.663316
+/add ~/Dev/node/meal_planner
# 2024-12-14 15:38:38.367339
+/drop ~/Dev/node/meal_planner
# 2024-12-14 15:38:38.373518
+/add ~/Dev/node/meal_planner
# 2024-12-14 15:38:49.446018
+/add components/CategoryCard.vue
# 2024-12-14 15:44:12.403700
+n
# 2024-12-14 15:45:04.918485
+add a category details page use the image as a header background with the name inside. add the description below then cards with the related recipes
# 2024-12-14 15:46:47.445160
+/add pages/category/[name].vue
# 2024-12-14 15:47:22.637607
+/add server/trpc/routers/recipes.ts
# 2024-12-14 15:47:50.065673
+/add composables/useCategoryRecipes.ts
# 2024-12-14 15:55:04.811952
+/add src/containers/Category/index.tsx
# 2024-12-14 15:55:10.429945
+/add src/services/api.ts
# 2024-12-14 18:53:11.975975
+/drop types/recipe.ts
# 2024-12-14 18:53:14.326984
+/drop utils/recipes.ts
# 2024-12-14 18:53:15.873485
+/drop composables/useCategories.ts
# 2024-12-14 18:53:20.204915
+/add composables/useCategories.ts
# 2024-12-14 18:53:43.120147
+/add ~/Dev/node/meal_planner
# 2024-12-14 18:53:43.148579
+/drop ~/Dev/node/meal_planner
# 2024-12-14 18:53:43.160247
+/add ~/Dev/node/meal_planner
# 2024-12-14 18:53:57.723720
+/add server/trpc/routers/index.ts
# 2024-12-14 19:19:40.694592
+/add ~/Dev/node/meal_planner
# 2024-12-14 19:19:40.708960
+/drop ~/Dev/node/meal_planner
# 2024-12-14 19:19:40.716279
+/add ~/Dev/node/meal_planner
# 2024-12-14 23:44:44.873544
+/drop ~/Dev/node/meal_planner
# 2024-12-14 23:46:59.255410
+/add pages/categories/[name].vue
# 2024-12-14 23:46:59.262787
+/drop pages/category/[name].vue

Binary file not shown.

Binary file not shown.

Binary file not shown.

34
.gitignore vendored
View file

@ -1,12 +1,24 @@
build/ # Nuxt dev/build outputs
node_modules/ .output
.idea/ .data
.vscode/ .nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env .env
.yarn/* .env.*
!.yarn/cache !.env.example
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

7
.gitpod.Dockerfile vendored
View file

@ -1,7 +0,0 @@
FROM gitpod/workspace-full
# Install custom tools, runtimes, etc.
# For example "bastet", a command-line tetris clone:
# RUN brew install bastet
#
# More information: https://www.gitpod.io/docs/config-docker/

View file

@ -1,6 +0,0 @@
image:
file: .gitpod.Dockerfile
tasks:
- init: yarn install && yarn build
command: yarn start

21
TODO.md
View file

@ -1,15 +1,10 @@
# TO DO # TO DO
- [ ] send message after contact form validation (confirm to sender and msg+info to admin) - [x] use bun package manager
- [ ] Breadcrumb - [ ] use nuxt framework
- [ ] Cookie bar - [ ] rewrite the random page, the current landing page
- [x] code cleanup (props and refactoring) - [ ] rewrite the recipe page
- [ ] Back to top button - [ ] deploy
- [ ] Close Sidebar at outside click - [ ] pwa
- [ ] Take a look at some components [here](http://react-materialize.github.io/react-materialize/?path=/story/css-grid--default) - [ ] seo, robots.txt
- [ ] Decoupled application and data layers. Abstract such that the front end does not know where the data comes from. - [ ] update the README
- [x] Create PageLayout component
- [ ] Use Css-in-Js
- [x] Redirect to 404
- [x] Typescript
- [x] strict typing

5
app.vue Normal file
View file

@ -0,0 +1,5 @@
<template>
<div>
<NuxtWelcome />
</div>
</template>

BIN
bun.lockb Executable file

Binary file not shown.

4
nuxt.config.ts Normal file
View file

@ -0,0 +1,4 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
devtools: { enabled: true }
})

View file

@ -1,42 +1,17 @@
{ {
"name": "meal-planner", "name": "chefs",
"version": "0.1.0",
"private": true, "private": true,
"dependencies": { "type": "module",
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.0.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^6.1.1",
"react-scripts": "^5.0.0"
},
"scripts": { "scripts": {
"start": "react-scripts start", "build": "nuxt build",
"build": "react-scripts build", "dev": "nuxt dev --port=3009",
"test": "react-scripts test", "generate": "nuxt generate",
"eject": "react-scripts eject" "preview": "nuxt preview",
"postinstall": "nuxt prepare"
}, },
"eslintConfig": { "dependencies": {
"extends": "react-app" "nuxt": "^3.11.2",
}, "vue": "^3.4.21",
"browserslist": { "vue-router": "^4.3.0"
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@types/node": "^14.14.37",
"@types/react": "^17.0.3",
"@types/react-router-dom": "^5.1.7",
"prettier": "^2.5.1",
"typescript": "^4.2.3"
} }
} }

View file

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<link rel="icon" href="%PUBLIC_URL%/favicon.ico"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="theme-color" content="#ff6d00"/>
<meta name="description" content="Online Meal Planner | Chef's"/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png"/>
<link rel="manifest" href="%PUBLIC_URL%/manifest.json"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Marck+Script&display=swap"/>
<title>Online Meal Planner | Chef's</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>

View file

@ -1,29 +1,4 @@
{ {
"compilerOptions": { // https://nuxt.com/docs/guide/concepts/typescript
"target": "es6", "extends": "./.nuxt/tsconfig.json"
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"noUnusedParameters": true,
"noUnusedLocals": true,
"noImplicitReturns": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
} }