Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion crates/indexer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
FROM rust:1.96-bookworm AS builder

RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev ca-certificates git && rm -rf /var/lib/apt/lists/*

# The contract crate's `artifacts` module is generated from simf/*.simf and is gitignored, so
# nothing in a checkout supplies it and `cargo build` fails on every contract at once. The
# generator is pinned to the same commit CI and deployment/Dockerfile.backend use; cargo resolves
# it, which avoids simplexup needing git >= 2.49 and jq.
ENV SIMPLEX_COMMIT=1945d11b47fff8838c3e99c210133519a9522324
RUN cargo install --locked --git https://github.com/BlockstreamResearch/smplx --rev "${SIMPLEX_COMMIT}" smplx-cli

WORKDIR /app

COPY Cargo.toml Cargo.lock ./
COPY .sqlx ./.sqlx
COPY crates ./crates

# Generate the contract artifacts before compiling, and fail here rather than in the compiler if
# the generator produced nothing.
RUN cd crates/contracts \
&& simplex build \
&& test -f src/artifacts/mod.rs

RUN SQLX_OFFLINE=true cargo build --locked --release -p lending-indexer --bin simplicity-lending-indexer

FROM builder AS sqlx-builder
Expand Down
5 changes: 5 additions & 0 deletions web/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ VITE_PRICES_BASE_URL=https://green-liquid-testnet.blockstream.com
# build to sign — see https://sideswap.io/download/). Unset disables the connect option.
# VITE_SIDESWAP_WS_URL=wss://api-testnet.sideswap.io/server-connect

# Optional: Reown project id used to initialise AppKit for the HUMID browser-extension
# connect option. The extension is an injected wallet, so nothing travels over Reown's
# relay and analytics are off — register your own at https://dashboard.reown.com for a
# real deployment. Unset falls back to the shared HUMID test id.
# VITE_REOWN_PROJECT_ID=41f8085dc01ff1ca42c6efcb2c12c169
# Optional: Google Analytics measurement ID, one property per network.
# Unset disables analytics entirely.
# VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX
Expand Down
4 changes: 4 additions & 0 deletions web/.env.liquid
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,9 @@ VITE_NETWORK=liquid
VITE_ESPLORA_BASE_URL=https://blockstream.info/liquid
VITE_WATERFALLS_URL=https://waterfalls.liquidwebwallet.org/liquid/api
VITE_WATERFALLS_RECIPIENT=age1xxzrgrfjm3yrwh3u6a7exgrldked0pdauvr3mx870wl6xzrwm5ps8s2h0p

# Uncomment to use your own Reown project id for the HUMID extension connect option
# (register at https://dashboard.reown.com). Unset falls back to the shared HUMID test id.
# VITE_REOWN_PROJECT_ID=41f8085dc01ff1ca42c6efcb2c12c169
# Mainnet gets its own GA property; unset disables analytics.
# VITE_GA_MEASUREMENT_ID=
4 changes: 4 additions & 0 deletions web/.env.liquidtestnet
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ VITE_GA_MEASUREMENT_ID=G-CPMC9XLYJ
# Uncomment for the experimental SideSwap wallet connect option (needs a SideSwap dev
# build to sign, see https://sideswap.io/download/):
# VITE_SIDESWAP_WS_URL=wss://api-testnet.sideswap.io/server-connect

# Uncomment to use your own Reown project id for the HUMID extension connect option
# (register at https://dashboard.reown.com). Unset falls back to the shared HUMID test id.
# VITE_REOWN_PROJECT_ID=41f8085dc01ff1ca42c6efcb2c12c169
13 changes: 13 additions & 0 deletions web/.prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,16 @@ dist
node_modules
*.min.js
src/lib/wallet-core/connector/sideswap/rp_api

# Generated, not source to format.
pnpm-lock.yaml
graphify-out

# Vendored byte for byte. The protocol document is identified by its exact bytes —
# the deployment's indexer keys on tags derived from them — so reformatting it
# would change what it is.
src/protocol/lending_v3.manifest.json

# Vendored byte for byte from the humid repository, whose formatting is its own.
# Reformatting it would turn every future re-sync from a copy into a merge.
src/lib/humid/appkit-injected-adapter
10 changes: 9 additions & 1 deletion web/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@ import eslintConfigPrettier from 'eslint-config-prettier/flat'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist', 'eslint.config.js', 'lwk_wasm/**']),
globalIgnores([
'dist',
'eslint.config.js',
'lwk_wasm/**',
// Vendored byte for byte from the humid repository — see its VENDOR.md. It answers to
// that project's lint rules, and holding it to these would turn every re-sync into a
// merge. `tsc -b` still typechecks it, so the copy stays proven against this project.
'src/lib/humid/appkit-injected-adapter/**',
]),

// Base config for all JS/JSX/TS/TSX files
{
Expand Down
14 changes: 12 additions & 2 deletions web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,20 @@
"format": "prettier --write .",
"format:check": "prettier --check .",
"preview": "vite preview",
"add-icon": "tsx ./scripts/add-icon.ts"
"test": "vitest run",
"add-icon": "tsx ./scripts/add-icon.ts",
"check:protocol": "tsx ./scripts/checkProgramIds.ts"
},
"dependencies": {
"@fontsource-variable/inter": "^5.2.8",
"@heroui/react": "^3.0.4",
"@hookform/resolvers": "^5.4.0",
"@lilbonekit/lwk-web": "0.17.2-31fdeca.1",
"@reown/appkit": "^1.8.23",
"@reown/appkit-common": "^1.8.23",
"@reown/appkit-controllers": "^1.8.23",
"@tanstack/react-query": "^5.100.10",
"@walletconnect/universal-provider": "2.23.7",
"axios": "^1.7.0",
"framer-motion": "^13.4.0",
"idb": "^8.0.3",
Expand All @@ -35,6 +41,8 @@
"@eslint/js": "^9.39.4",
"@tailwindcss/postcss": "^4.2.0",
"@tanstack/react-query-devtools": "^5.100.10",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.2",
"@types/node": "^24.12.4",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
Expand All @@ -54,13 +62,15 @@
"eslint-plugin-simple-import-sort": "^13.0.0",
"eslint-plugin-unused-imports": "^4.4.1",
"globals": "^16.5.0",
"jsdom": "^30.0.1",
"postcss": "^8.5.6",
"prettier": "^3.4.2",
"tailwindcss": "^4.2.0",
"tsx": "^4.21.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.59.3",
"vite": "^7.3.3",
"vite-plugin-checker": "^0.13.0"
"vite-plugin-checker": "^0.13.0",
"vitest": "^3.2.7"
}
}
Loading