Compare commits

...

6 Commits

9 changed files with 59 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
PB_ADMIN_EMAIL=admin@example.com PB_ADMIN_EMAIL=admin@example.com
PB_ADMIN_PASSWORD=secret-password PB_ADMIN_PASSWORD=secret-password
PUBLIC_PB_URL=http://pb:8080 PUBLIC_URL=http://your.domain.tld/
PB_DATA_DIR=/pb/pb_data PB_DATA_DIR=/pb/pb_data

View File

@@ -4,8 +4,10 @@ COPY package*.json ./
RUN npm i RUN npm i
COPY . . COPY . .
ENV PUBLIC_PB_URL=http://pb:8080 ENV PUBLIC_PB_URL=http://pb:8080
ENV PUBLIC_URL=http://localhost:4321
RUN npm run build RUN npm run build
EXPOSE 4321 EXPOSE 4321
CMD ["npm", "run", "preview", "--", "--host"] CMD ["npm", "run", "dev", "--", "--host"]
# CMD [ "node", "dist/sever/entry.mjs"]

View File

@@ -5,6 +5,10 @@ import node from '@astrojs/node';
import tailwindcss from '@tailwindcss/vite'; import tailwindcss from '@tailwindcss/vite';
import { loadEnv } from "vite";
const { PUBLIC_PB_URL } = loadEnv(process.env.NODE_ENV, process.cwd(), "");
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
output: 'server', output: 'server',
@@ -14,6 +18,17 @@ export default defineConfig({
}), }),
vite: { vite: {
plugins: [tailwindcss()] plugins: [tailwindcss()],
server: {
proxy: {
// The idea is to proxy the Pocketbase connection to the current domain so the user doesn't have to open two ports
// Currently works in dev (npm run dev -- --host) with the correct PUBLIC_URL var set but not through docker
'/api': {
target: PUBLIC_PB_URL,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '/api'),
},
}
}
} }
}); });

View File

@@ -2,6 +2,7 @@ services:
web: web:
build: . build: .
env_file: .env env_file: .env
network_mode: host
ports: ports:
- "4321:4321" - "4321:4321"

View File

@@ -3,7 +3,7 @@
"type": "module", "type": "module",
"version": "0.0.1", "version": "0.0.1",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "docker compose up pb -d; astro dev --host",
"build": "astro build", "build": "astro build",
"preview": "astro preview", "preview": "astro preview",
"astro": "astro" "astro": "astro"

View File

@@ -0,0 +1,18 @@
---
import client from "@/data/pocketbase"
const { recipe } = Astro.props;
const headerImage = await client.collection("images").getOne(recipe.images[0])
const image = await client.files.getURL(headerImage, headerImage.image)
---
<div class="relative z-0 flex h-60">
<img
class="w-full h-full object-cover rounded-xl"
src={ image }
/>
<div class="absolute bottom-0 left-0 w-full p-2 h-25 backdrop-filter backdrop-blur-lg rounded-b-xl">
<p class="text-[14pt] text-white opacity-90 font-bold" >{recipe.name}</p>
</div>
</div>

View File

@@ -1,4 +1,4 @@
import Pocketbase from "pocketbase" import Pocketbase from "pocketbase"
export const client = new Pocketbase(import.meta.env.PUBLIC_PB_URL) const client = new Pocketbase(import.meta.env.PUBLIC_URL)
// export const client = new Pocketbase("http://localhost:8080") export default client;

View File

@@ -1,16 +1,24 @@
--- ---
import PageLayout from "@/layouts/base" import PageLayout from "@/layouts/base"
import { client } from "@/data/pocketbase" import client from "@/data/pocketbase"
import OverviewCard from "@/components/Card/OverviewCard"
const reccies = await client.collection("recipes").getFullList() const recipies = await client.collection("recipes").getFullList()
--- ---
<PageLayout> <PageLayout>
<p class="text-3xl font-medium">Recipie</p> <p class="w-full bg-yellow-100 p-5 text-3xl font-medium">Recipie</p>
{ <div id="content" class="p-5 pt-2">
reccies.map(rec => ( <p class="pb-2">What would you like today?</p>
<p>{rec.name}</p>
)) <div class="grid gap-2 grid-cols-1 md:grid-cols-2 lg:grid-cols-4">
} {
recipies.map(r => (
<OverviewCard recipe={r} />
))
}
</div>
</div>
</PageLayout> </PageLayout>

View File

@@ -1,6 +1,5 @@
@import "tailwindcss"; @import "tailwindcss";
html { html {
@apply bg-[#fefefe]; @apply bg-yellow-50;
@apply p-5;
} }