Overview
Discover what makes GeneWeb powerful
GeneWeb is a mature, open‑source genealogy platform written entirely in **OCaml**. It bundles a lightweight HTTP server that dynamically renders genealogical data on demand, making it suitable for both local desktop use and public web hosting. The core application exposes a **REST‑like API** (auto‑generated from the OCaml source) that allows developers to query and manipulate genealogical records programmatically, while the web UI delivers a multilingual interface for end‑users.
Language & Runtime
Web Server
Data Store
Plugins & Extensions
Overview
GeneWeb is a mature, open‑source genealogy platform written entirely in OCaml. It bundles a lightweight HTTP server that dynamically renders genealogical data on demand, making it suitable for both local desktop use and public web hosting. The core application exposes a REST‑like API (auto‑generated from the OCaml source) that allows developers to query and manipulate genealogical records programmatically, while the web UI delivers a multilingual interface for end‑users.
Technical Stack
- Language & Runtime: OCaml 5.x, compiled to native code. The binary (
gwd) serves HTTP requests directly; no external application server is required. - Web Server: A minimal, event‑driven HTTP stack written in OCaml that supports CGI mode for compatibility with shared hosting.
- Data Store: Genealogical data is stored in a proprietary binary format (
.gwf), but the platform provides conversion utilities (ged2gwb,gwb2ged) to interchange with GEDCOM. Internally the data is organized as a set of indexed tables, enabling fast lookups for thousands of individuals. - Plugins & Extensions: The
pluginsdirectory contains OCaml modules that can be dropped into the runtime. Each plugin implements a specific feature (e.g., PDF export, genealogical chart generation) and is loaded at startup via a simple configuration file.
Core Capabilities
- Dynamic HTML Generation: Every request triggers on‑the‑fly rendering of genealogical trees, timelines, and charts using templated HTML.
- API Exposure: The auto‑generated API (see http://geneweb.github.io/geneweb/) provides endpoints for CRUD operations on individuals, families, and events. OAuth‑style authentication is optional and can be enabled through the
gwsetupinterface. - Search & Filtering: Full‑text search across names, places, and dates is built into the engine, with support for complex queries (e.g., consanguinity checks).
- Export & Import: Multiple export formats (GEDCOM, CSV, PDF) and import utilities allow seamless migration from other genealogy tools.
- Localization: The UI supports dozens of languages; all string resources are externalized, making it trivial to add new translations.
Deployment & Infrastructure
GeneWeb is intentionally lightweight: a single binary plus a data directory. It can run:
- Standalone daemon (
gwd) on any Unix‑like system, listening on a configurable port. - CGI mode (
gwdcgi) behind Apache/Nginx, ideal for shared hosting. - Docker: A ready‑to‑use Dockerfile is available in the repository, exposing ports 8080/80 and mounting a volume for the
basesdirectory.
Scalability is limited by the single‑process nature of the server; however, typical genealogy workloads (tens of thousands of records) are handled comfortably. For high‑traffic scenarios, horizontal scaling can be achieved by running multiple GeneWeb instances behind a load balancer and sharing the same data store via NFS or a network file system.
Integration & Extensibility
- Plugin API: Developers can write new plugins in OCaml, compile them into
.solibraries, and drop them intoplugins/. The runtime loads them automatically. - Webhooks: GeneWeb can emit JSON payloads on events such as record creation or deletion, which external services can consume.
- Scripting: The
gwsetuputility exposes a web UI for configuration; it also supports scripting through command‑line arguments, enabling CI/CD pipelines to update base files and restart the service. - Data Interchange: The
ged2gwb/gwb2gedtools provide deterministic conversions, making GeneWeb a drop‑in replacement for GEDCOM‑centric workflows.
Developer Experience
- Documentation: Comprehensive, community‑maintained docs (https://geneweb.tuxfamily.org/) cover architecture, API usage, and plugin development. The auto‑generated API spec is always in sync with the source code.
- Community & Support: Active GitHub issues and a mailing list foster quick responses. The project’s licensing (GPL‑3) guarantees freedom to modify and redistribute.
- Testing: Continuous integration runs on GitHub Actions, ensuring that new changes do not break the API or core functionality.
Use Cases
| Scenario | Why GeneWeb? |
|---|---|
| Personal genealogy server | Lightweight binary, no external dependencies; runs on a Raspberry Pi. |
| Academic research | OCaml codebase is statically typed; plugins can implement custom analysis (e.g., kinship metrics). |
| Genealogy NGO | GPL license allows full control; can host hundreds of bases on a single server. |
| Web service provider | CGI mode enables integration into existing web stacks; API allows third‑party apps to consume data. |
Advantages Over Alternatives
- Performance: Native OCaml binaries deliver low latency for rendering complex trees, outperforming many interpreted solutions.
- Licensing: GPL‑3 allows commercial use without royalties, provided modifications are shared—ideal for open research projects.
- Extensibility: The plugin system is straightforward, encouraging rapid feature addition without touching core code.
- Deployment Simplicity: A single binary plus data directory means no database server or ORM setup; perfect for dev‑ops minimalism.
GeneWeb offers a robust, developer‑friendly platform for anyone needing to host or extend genealogical data in a self‑contained, open‑source environment.
Open SourceReady to get started?
Join the community and start self-hosting GeneWeb today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
WYGIWYH
Principled, multi‑currency finance tracker without budgeting constraints
Passbolt
Secure, collaborative password manager for teams
Kibitzr
Self‑hosted web watcher & notifier
FreshRSS
Self-hosted RSS & Atom aggregator
RELATE
Interactive courseware for code, quizzes, and analytics
Gogs
Lightweight, self‑hosted Git service for any platform