Electronic edition of the Gorgias Encyclopedic Dictionary of the Syriac Heritage (e-GEDSH) by Beth Mardutho.
All publications are made available online in a free and open format using Creative Commons licenses.
- Static HTML site with client-side search
- Search by keyword, person name, place name, contributor, bibliography, and URI
- Pagination support (20 results per page)
- CloudFront CDN distribution
- GitHub Actions CI/CD deployment
e-gedsh-app/
├── index.html # Homepage
├── search.html # Search interface
├── resources/
│ ├── css/ # Stylesheets
│ ├── js/
│ │ ├── search.js # Search functionality
│ │ └── footer.js # Footer component
│ └── img/ # Images
├── json/
│ ├── combined.json # Aggregated search data
│ └── *.json # Individual entry files
└── infrastructure/
├── cloudformation.yml # AWS infrastructure
└── README.md # Deployment guide
The simplest way to run e-GEDSH locally is as a static site:
-
Clone the repository:
git clone https://github.com/srophe/e-gedsh-app.git cd e-gedsh-app -
Start a local web server:
Using Python:
python3 -m http.server 8000
Using Node.js:
npx serve -l 8000
-
Navigate to http://localhost:8000
Search works out of the box using the bundled json/combined.json file — no backend required.
The app can also run on eXist-db for full XQuery functionality (SPARQL proxy, content negotiation, OAI-PMH):
-
Install eXist-db (version 5.x or later)
-
Build the XAR package:
ant xar
This creates
build/e-gedsh-<version>.xar -
Deploy via eXist-db Package Manager:
- Open the eXist-db Dashboard at http://localhost:8080/exist/apps/dashboard
- Go to Package Manager → Upload and select the
.xarfile - Also install the
e-gedsh-datapackage from the e-gedsh repository
-
Access the app at http://localhost:8080/exist/apps/e-gedsh
To run the eXist-db version in a container:
-
Build the XAR package first:
ant xar mkdir -p autodeploy cp build/*.xar autodeploy/ -
Build and run the Docker image:
docker build --build-arg ADMIN_PASSWORD=<password> -t e-gedsh . docker run -d -p 8080:8080 --name e-gedsh e-gedsh
-
Access the app at http://localhost:8080/exist/apps/e-gedsh
Search data is sourced from e-gedsh repository and combined into json/combined.json.
{
"fullText": "...",
"title": "...",
"idno": "https://gedsh.bethmardutho.org/...",
"displayTitleEnglish": "...",
"persName": ["..."],
"placeName": ["..."]
}See infrastructure/README.md for AWS deployment instructions.
The static site can be hosted for free on GitHub Pages.
- Go to your repo Settings → Pages
- Under Source, select GitHub Actions
- Add
.github/workflows/pages.yml:name: Deploy to GitHub Pages on: push: branches: [main] permissions: contents: read pages: write id-token: write jobs: deploy: runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/checkout@v4 - uses: actions/configure-pages@v4 - uses: actions/upload-pages-artifact@v3 with: path: . - id: deployment uses: actions/deploy-pages@v4
- Push to
main— the site will be live athttps://<org>.github.io/e-gedsh-app/
Path fix: GitHub Pages serves from a subdirectory (/e-gedsh-app/), so root-relative paths need updating. Convert /resources/... to ./resources/...:
find . -name "*.html" -exec sed -i '' 's|href="/resources|href="./resources|g; s|src="/resources|src="./resources|g' {} +Alternatively, if you use a custom domain (e.g., gedsh.bethmardutho.org), root paths work without changes — just add a CNAME file containing your domain to the repo root.
Search works automatically since it loads json/combined.json client-side.
Content licensed under Creative Commons. See footer for details.