Repository navigation
Releases
0.5.0: Cloudflare only, images on :latest
LebaneseLegislation.com now runs only on Cloudflare: static pages and ruling PDFs from R2, everything dynamic (search, /api/v1/, /mcp) in the -all image on Cloudflare Containers, deployed blue/green.
- Use
:latest. Every image (-db,-api,-mcp,-all,-vectors) gets alatesttag and a UTC date tag from the workflow that builds it. Compose and the docs pull:latest; version tags no longer change. - Run it:
./setup, thendocker compose --profile all up -d all, and open http://localhost:8080 (website,/api/v1/,/mcp). - The MCP server is the Go server in the container; the old D1 Worker is removed.
- No PostgreSQL dump releases: data is Parquet on Hugging Face and the database baked into
-db. - Every page and API record carries when it last changed (
dateModified,updated_at);/openapi.jsondescribes the API. - The static build renders in 24 shards and only what changed.
Full list: docs/changes.md. Journal: https://lebaneselegislation.com/blog/
0.4.0: API and MCP in Go
Code version 0.4.0. The data lives on Hugging Face.
Images
| Image | Platforms |
|---|---|
ghcr.io/taktekhq/lebanese-legislation-db:0.4.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-api:0.4.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-mcp:0.4.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-web:0.4.0 |
linux/amd64, linux/arm64 |
Changes
- The API and MCP run the same Go code as the website, the code behind LebaneseLegislation.com. On the full database the slowest answer took 0.24 s, where 0.3.0 took up to 7.3 s and could time out on a fresh restore.
- Layout:
web/,api/andmcp/(onemain.goand Dockerfile each), shared Go code ininternal/, Python data tools intools/. - Kept from 0.3.0: the same
/api/v1/routes and MCP tools,calculated_currentand calculated-amount search, search by meaning (semantic=true,select=true), fullget_lawoutlines, the MCP browser origin rule, and the same settings. No rate limit by default;RATE_LIMIT_PER_MINUTEadds one. - New: a query that cites an article puts it first; MCP
get_lawcan page a long outline. - Gone: the API's
/docspage and the Python-only/search; use/api/v1/search/. Search counts come from the website's word search and differ from 0.3.0. lebleg restoreadds the service tables itself, so self-hosted restores and the update pipeline get them too.- The handwriting demo moved to its Hugging Face Space.
Full notes: docs/changes.md.
0.3.0: the website as the -web image
Code version 0.3.0. The data is unchanged and lives on Hugging Face.
Images
| Image | Platforms |
|---|---|
ghcr.io/taktekhq/lebanese-legislation-db:0.3.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-api:0.3.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-mcp:0.3.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-web:0.3.0 |
linux/amd64, linux/arm64 (new) |
Changes
- New: the website, as
ghcr.io/taktekhq/lebanese-legislation-web../startruns it at http://localhost:8080 next to the API and MCP. - The DB image adds what the website reads and the public dump lacks (
db/web.sql): text functions, generated search columns, two views, four empty tables and 24 indexes. It runs once after the first restore. - The DB health check also requires that step, so a failed step stays visible.
Upgrading from 0.2.0
On a database you already restored, run once:
docker compose exec db bash /opt/lebleg/db/web-schema.shFull notes: docs/changes.md.
0.2.0: one folder per part
Code version 0.2.0. The data is unchanged and lives on Hugging Face.
Images
| Image | Platforms |
|---|---|
ghcr.io/taktekhq/lebanese-legislation-db:0.2.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-api:0.2.0 |
linux/amd64, linux/arm64 |
ghcr.io/taktekhq/lebanese-legislation-mcp:0.2.0 |
linux/amd64, linux/arm64 |
Changes
- One folder per part:
db/(PostgreSQL image),server/(API, MCP and data tools),web/(website),examples/,docs/. - The DB image builds PostgreSQL 18.6 and pgvector 0.8.2 itself from the official
postgres:18.6image. It no longer depends on the deletedlebanese-legislation-starterimage. - The Python package is
lebleg(waslebleg_starter). Files inside the images moved from/opt/starterto/opt/lebleg. compose.yamltakes the DB health check from the image.- API and MCP responses are unchanged from 0.1.7.
Upgrading from 0.1.x
The Compose project is now lebanese-legislation (was lebleg-starter), so ./start creates a new volume and restores again. To keep a database you already restored, add COMPOSE_PROJECT_NAME=lebleg-starter to .env.
Full notes: docs/changes.md.