A web-based genealogy application for creating, managing, and visualizing family relationships. Built with vanilla JavaScript and the DEER (Data Encoding and Exhibition for RERUM) framework, Genealogger provides an intuitive interface for building family trees and exploring ancestral timelines.
- Person Management: Create and manage family members with detailed information
- Family Trees: Interactive hierarchical visualization of family relationships
- Ancestor Timelines: Visual timeline showing ancestors across generations
- Event Recording: Record births, deaths, marriages, and other significant events
- Relationship Mapping: Define parent-child, spousal, and other family relationships
- Data Persistence: All data stored in RERUM (Research and Educational Digital Object Management)
- Frontend: Vanilla JavaScript (ES6+), HTML5, CSS3
- Components: Custom Web Components (DEER framework)
- Data Storage: RERUM/TinyThings APIs (JSON-LD, Web Annotations)
- Visualization: D3.js for family trees and timelines
- Testing: Jest (unit tests), Playwright (E2E tests)
- CI/CD: GitHub Actions
- Deployment: GitHub Pages
- Modern web browser with ES6+ support
- Internet connection (for RERUM API access)
- Node.js and npm (for development and testing)
-
Clone the repository:
git clone https://github.com/cubap/Genealogger.git cd Genealogger -
Install dependencies (for testing):
npm install
-
Open
index.htmlin your browser or run a local server:npm run serve
-
Navigate to
http://localhost:8080
- Run tests:
npm test - Run E2E tests:
npm run test:e2e - Lint code:
npm run lint - Start local server:
npm run serve
- Navigate to the main page
- Click "New Person" or go to
person.html - Enter the person's name and details
- The person will be saved to RERUM
- Go to a person's profile page
- Use the action buttons to:
- Add birth information
- Add death information
- Add parents
- Add children
- Add spouses
- Navigate to
tree.html - Select a person to view their family tree
- The tree will display ancestors and descendants interactively
- Navigate to
timeline.html - Select a person to view their ancestor timeline
- The timeline shows ancestors across generations with birth/death dates
Genealogger/
├── css/
│ └── site.css # Main stylesheet
├── js/
│ ├── deer.js # DEER framework integration
│ ├── deer-config.js # DEER configuration
│ ├── deer-render.js # DEER rendering utilities
│ ├── deer-record.js # DEER data recording
│ ├── components/ # Custom web components
│ │ ├── deer-person.js
│ │ ├── deer-tree.js
│ │ ├── deer-timeline.js
│ │ └── ...
│ └── utils/ # Utility functions
│ ├── data-utils.js
│ ├── string-utils.js
│ ├── dom-utils.js
│ └── error-logger.js
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ └── e2e/ # E2E tests
├── .github/workflows/ # CI/CD pipelines
│ └── ci-cd.yml
├── index.html # Main page
├── person.html # Person profile page
├── tree.html # Family tree visualization
├── timeline.html # Ancestor timeline
├── package.json # Project configuration
└── README.md # This file
- Create:
https://tinydev.rerum.io/create - Update:
https://tinydev.rerum.io/update - Query:
https://tinydev.rerum.io/query - Overwrite:
https://tinydev.rerum.io/overwrite
All data follows JSON-LD (Linked Data) standards with Web Annotation specifications.
Example Person object:
{
"@type": "Person",
"name": "John Doe",
"familyName": "Doe",
"givenName": "John",
"hasFather": "https://devstore.rerum.io/v1/id/...",
"hasMother": "https://devstore.rerum.io/v1/id/..."
}Run unit tests with Jest:
npm testTests are located in tests/unit/ and cover utility functions and core logic.
Run end-to-end tests with Playwright:
npm run test:e2eE2E tests are located in tests/e2e/ and test user journeys across the application.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Make your changes
- Write/update tests
- Ensure all tests pass
- Submit a pull request
- ES6+ JavaScript
- No external frameworks (vanilla JS only)
- Web Components for modular UI
- Semantic HTML5
- Mobile-first responsive design
MIT License - see LICENSE for details.
- DEER Framework - Data Encoding and Exhibition for RERUM
- RERUM - Research and Educational Digital Object Management
- D3.js - Data-driven documents visualization
- Author: cubap
- Repository: github.com/cubap/Genealogger
- User authentication and authorization
- Advanced search and filtering
- Export family data (GEDCOM format)
- Mobile-native application
- Offline support (PWA)
- Multi-language support (i18n)
- Advanced analytics and reporting