diff --git a/containers/Caddyfile b/containers/Caddyfile
index a8197c1..8216164 100644
--- a/containers/Caddyfile
+++ b/containers/Caddyfile
@@ -1,4 +1,7 @@
:80 {
+ route /app* {
+ reverse_proxy webapp:5173
+ }
route /graphql* {
reverse_proxy ponder:42069
}
@@ -6,10 +9,12 @@
reverse_proxy ponder:42069
}
route /rpc/anvil* {
+ uri strip_prefix /rpc/anvil
reverse_proxy anvil:8545
}
route /txn* {
+ uri strip_prefix /txn
reverse_proxy txn-bot:43069
}
- reverse_proxy frontend:5173
+ reverse_proxy landing:5174
}
diff --git a/containers/bootstrap.sh b/containers/bootstrap.sh
index c7b32c8..1f035b6 100755
--- a/containers/bootstrap.sh
+++ b/containers/bootstrap.sh
@@ -115,8 +115,14 @@ grant_recenter_access() {
}
call_recenter() {
- log "Calling recenter()"
- cast send --rpc-url "$ANVIL_RPC" --private-key "$DEPLOYER_PK" \
+ local recenter_pk="$DEPLOYER_PK"
+ local recenter_addr="$DEPLOYER_ADDR"
+ if [[ -n "$TXNBOT_ADDRESS" ]]; then
+ recenter_pk="$TXNBOT_PRIVATE_KEY"
+ recenter_addr="$TXNBOT_ADDRESS"
+ fi
+ log "Calling recenter() via $recenter_addr"
+ cast send --rpc-url "$ANVIL_RPC" --private-key "$recenter_pk" \
"$LIQUIDITY_MANAGER" "recenter()" >>"$SETUP_LOG" 2>&1
}
diff --git a/containers/foundry.Containerfile b/containers/foundry.Containerfile
index 3b42feb..9f0e6f3 100644
--- a/containers/foundry.Containerfile
+++ b/containers/foundry.Containerfile
@@ -17,6 +17,9 @@ RUN apt-get update \
RUN useradd -m -u 1000 foundry
USER foundry
WORKDIR /home/foundry
+ENV SHELL=/bin/bash
+ENV LANG=C.UTF-8
+ENV LC_ALL=C.UTF-8
RUN curl -L https://foundry.paradigm.xyz | bash \
&& /home/foundry/.foundry/bin/foundryup
diff --git a/containers/landing-dev-entrypoint.sh b/containers/landing-dev-entrypoint.sh
new file mode 100755
index 0000000..d8d3e46
--- /dev/null
+++ b/containers/landing-dev-entrypoint.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT_DIR=/workspace
+LANDING_DIR=$ROOT_DIR/landing
+
+cd "$LANDING_DIR"
+echo "[landing-entrypoint] Installing dependencies..."
+npm install --no-save --loglevel error 2>&1 || {
+ echo "[landing-entrypoint] npm install failed, trying with --force"
+ npm install --force --no-save --loglevel error
+}
+
+export CHOKIDAR_USEPOLLING=${CHOKIDAR_USEPOLLING:-1}
+export HOST=0.0.0.0
+export PORT=${PORT:-5174}
+
+exec npm run dev -- --host 0.0.0.0 --port 5174
\ No newline at end of file
diff --git a/containers/node-dev.Containerfile b/containers/node-dev.Containerfile
index 1490337..717feaf 100644
--- a/containers/node-dev.Containerfile
+++ b/containers/node-dev.Containerfile
@@ -6,6 +6,8 @@ RUN apt-get update \
USER node
WORKDIR /workspace
+ENV LANG=C.UTF-8
+ENV LC_ALL=C.UTF-8
ENV PATH="/workspace/node_modules/.bin:${PATH}"
ENTRYPOINT ["dumb-init", "--"]
diff --git a/containers/ponder-dev-entrypoint.sh b/containers/ponder-dev-entrypoint.sh
index 9a79210..7ecfffb 100755
--- a/containers/ponder-dev-entrypoint.sh
+++ b/containers/ponder-dev-entrypoint.sh
@@ -11,9 +11,11 @@ while [[ ! -f "$CONTRACT_ENV" ]]; do
done
cd "$PONDER_WORKDIR"
-if [[ ! -d node_modules ]]; then
- npm install
-fi
+echo "[ponder-entrypoint] Installing dependencies..."
+npm install --no-save --loglevel error 2>&1 || {
+ echo "[ponder-entrypoint] npm install failed, trying with --force"
+ npm install --force --no-save --loglevel error
+}
export CHOKIDAR_USEPOLLING=${CHOKIDAR_USEPOLLING:-1}
export HOST=0.0.0.0
diff --git a/containers/txn-bot-entrypoint.sh b/containers/txn-bot-entrypoint.sh
index 0f4a68c..9734aea 100755
--- a/containers/txn-bot-entrypoint.sh
+++ b/containers/txn-bot-entrypoint.sh
@@ -4,16 +4,59 @@ set -euo pipefail
ROOT_DIR=/workspace
TXNBOT_ENV_FILE=$ROOT_DIR/tmp/podman/txnBot.env
BOT_DIR=$ROOT_DIR/services/txnBot
+KRAIKEN_LIB_DIR=$ROOT_DIR/kraiken-lib
while [[ ! -f "$TXNBOT_ENV_FILE" ]]; do
echo "[txn-bot-entrypoint] waiting for env file"
sleep 2
done
-cd "$BOT_DIR"
+# Build kraiken-lib first
+echo "[txn-bot-entrypoint] Building kraiken-lib..."
+cd "$KRAIKEN_LIB_DIR"
+
+# Install dependencies if needed
if [[ ! -d node_modules ]]; then
- npm install
+ echo "[txn-bot-entrypoint] Installing kraiken-lib dependencies..."
+ npm install --loglevel error
fi
+# Install TypeScript if not present
+if [[ ! -f node_modules/.bin/tsc ]]; then
+ echo "[txn-bot-entrypoint] Installing TypeScript..."
+ npm install --loglevel error typescript
+fi
+
+# Build TypeScript files (dist is now a volume, writable by node user)
+echo "[txn-bot-entrypoint] Compiling TypeScript..."
+if [[ ! -f dist/index.js ]]; then
+ echo "[txn-bot-entrypoint] Running tsc to compile kraiken-lib..."
+ ./node_modules/.bin/tsc \
+ --outDir dist \
+ --declaration \
+ --module commonjs \
+ --target es2020 \
+ --skipLibCheck \
+ --esModuleInterop \
+ --allowSyntheticDefaultImports \
+ --resolveJsonModule \
+ src/index.ts src/helpers.ts src/subgraph.ts src/__generated__/graphql.ts 2>&1 | head -20 || {
+ echo "[txn-bot-entrypoint] TypeScript compilation had some issues, checking if files were created..."
+ }
+
+ # Verify the main file exists
+ if [[ ! -f dist/index.js ]]; then
+ echo "[txn-bot-entrypoint] ERROR: Failed to compile kraiken-lib"
+ exit 1
+ fi
+fi
+
+cd "$BOT_DIR"
+echo "[txn-bot-entrypoint] Installing txn-bot dependencies..."
+npm install --no-save --loglevel error 2>&1 || {
+ echo "[txn-bot-entrypoint] npm install failed, trying with --force"
+ npm install --force --no-save --loglevel error
+}
+
export TXN_BOT_ENV_FILE="$TXNBOT_ENV_FILE"
exec npm run start
diff --git a/containers/frontend-dev-entrypoint.sh b/containers/webapp-dev-entrypoint.sh
similarity index 66%
rename from containers/frontend-dev-entrypoint.sh
rename to containers/webapp-dev-entrypoint.sh
index c0f4e17..62ba72e 100755
--- a/containers/frontend-dev-entrypoint.sh
+++ b/containers/webapp-dev-entrypoint.sh
@@ -15,18 +15,20 @@ done
source "$CONTRACT_ENV"
cd "$APP_DIR"
-if [[ ! -d node_modules ]]; then
- npm install
-fi
+echo "[frontend-entrypoint] Installing dependencies..."
+npm install --no-save --loglevel error 2>&1 || {
+ echo "[frontend-entrypoint] npm install failed, trying with --force"
+ npm install --force --no-save --loglevel error
+}
export VITE_DEFAULT_CHAIN_ID=${VITE_DEFAULT_CHAIN_ID:-31337}
-export VITE_LOCAL_RPC_URL=${VITE_LOCAL_RPC_URL:-/rpc/anvil}
+export VITE_LOCAL_RPC_URL=${VITE_LOCAL_RPC_URL:-/app/rpc/anvil}
export VITE_LOCAL_RPC_PROXY_TARGET=${VITE_LOCAL_RPC_PROXY_TARGET:-http://anvil:8545}
export VITE_KRAIKEN_ADDRESS=$KRAIKEN
export VITE_STAKE_ADDRESS=$STAKE
export VITE_SWAP_ROUTER=$SWAP_ROUTER
-export VITE_PONDER_BASE_SEPOLIA_LOCAL_FORK=${VITE_PONDER_BASE_SEPOLIA_LOCAL_FORK:-/graphql}
-export VITE_TXNBOT_BASE_SEPOLIA_LOCAL_FORK=${VITE_TXNBOT_BASE_SEPOLIA_LOCAL_FORK:-/txn}
+export VITE_PONDER_BASE_SEPOLIA_LOCAL_FORK=${VITE_PONDER_BASE_SEPOLIA_LOCAL_FORK:-/app/graphql}
+export VITE_TXNBOT_BASE_SEPOLIA_LOCAL_FORK=${VITE_TXNBOT_BASE_SEPOLIA_LOCAL_FORK:-/app/txn}
export CHOKIDAR_USEPOLLING=${CHOKIDAR_USEPOLLING:-1}
-exec npm run dev -- --host 0.0.0.0 --port 5173
+exec npm run dev -- --host 0.0.0.0 --port 5173 --base /app/
diff --git a/podman-compose.yml b/podman-compose.yml
index 3bde1cb..d6ac08e 100644
--- a/podman-compose.yml
+++ b/podman-compose.yml
@@ -32,70 +32,92 @@ services:
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/ponder-dev-entrypoint.sh"]
volumes:
- - .:/workspace:Z
+ - .:/workspace:z
- ponder-node-modules:/workspace/services/ponder/node_modules
working_dir: /workspace
environment:
- CHOKIDAR_USEPOLLING=1
depends_on:
- bootstrap:
- condition: service_completed_successfully
+ - anvil
expose:
- "42069"
restart: unless-stopped
- frontend:
+ webapp:
build:
context: .
dockerfile: containers/node-dev.Containerfile
- entrypoint: ["/workspace/containers/frontend-dev-entrypoint.sh"]
+ entrypoint: ["/workspace/containers/webapp-dev-entrypoint.sh"]
volumes:
- - .:/workspace:Z
- - frontend-node-modules:/workspace/web-app/node_modules
+ - .:/workspace:z
+ - webapp-node-modules:/workspace/web-app/node_modules
working_dir: /workspace
environment:
- CHOKIDAR_USEPOLLING=1
depends_on:
- bootstrap:
- condition: service_completed_successfully
+ - anvil
expose:
- "5173"
restart: unless-stopped
+ landing:
+ build:
+ context: .
+ dockerfile: containers/node-dev.Containerfile
+ entrypoint: ["/workspace/containers/landing-dev-entrypoint.sh"]
+ volumes:
+ - .:/workspace:z
+ - landing-node-modules:/workspace/landing/node_modules
+ working_dir: /workspace
+ environment:
+ - CHOKIDAR_USEPOLLING=1
+ depends_on:
+ - anvil
+ expose:
+ - "5174"
+ restart: unless-stopped
+
txn-bot:
build:
context: .
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/txn-bot-entrypoint.sh"]
volumes:
- - .:/workspace:Z
+ - .:/workspace:z
- txn-node-modules:/workspace/services/txnBot/node_modules
+ - kraiken-node-modules:/workspace/kraiken-lib/node_modules
+ - kraiken-dist:/workspace/kraiken-lib/dist
working_dir: /workspace
depends_on:
- bootstrap:
- condition: service_completed_successfully
+ - anvil
+ - ponder
expose:
- "43069"
restart: unless-stopped
caddy:
- image: caddy:2.8
+ image: docker.io/library/caddy:2.8
volumes:
- ./containers/Caddyfile:/etc/caddy/Caddyfile:Z
ports:
- - "80:80"
+ - "0.0.0.0:8081:80"
depends_on:
anvil:
condition: service_started
ponder:
condition: service_started
- frontend:
+ webapp:
+ condition: service_started
+ landing:
condition: service_started
txn-bot:
condition: service_started
restart: unless-stopped
volumes:
- frontend-node-modules:
+ webapp-node-modules:
+ landing-node-modules:
ponder-node-modules:
txn-node-modules:
+ kraiken-node-modules:
+ kraiken-dist:
diff --git a/web-app/src/components/layouts/Navbar.vue b/web-app/src/components/layouts/Navbar.vue
index 393f554..c3aa851 100644
--- a/web-app/src/components/layouts/Navbar.vue
+++ b/web-app/src/components/layouts/Navbar.vue
@@ -17,7 +17,7 @@
{{ navbarRoute.title }}
- Docs
+ Docs