This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
The family tree builder includes an intelligent auto-layout feature that automatically arranges nodes in a hierarchical family tree structure:
- Hierarchical positioning: Parents are positioned above their children
- Partner alignment: Partners are positioned next to each other at the same level
- Sibling organization: Siblings are arranged horizontally at the same generation level
- Multi-generational support: Handles complex family trees spanning multiple generations
To use the auto-layout feature:
- Click the Auto Layout button (tree icon) in the toolbar
- The tree will automatically reorganize with proper hierarchical positioning
- The view will automatically fit to show the entire tree
The layout algorithm uses ELK.js for sophisticated graph layout with relationship-aware positioning.
This project now includes unit tests for the auto-layout logic using Jest + ts-jest.
Install new dev dependencies (you can add these to your devDependencies):
npm install --save-dev jest ts-jest @types/jest jsdom @types/jsdomRun tests:
npm run testIf you prefer watch mode:
npm run test:watchThis repository uses semantic-release to automate releases based on Conventional Commits. The workflow is defined in .github/workflows/release.yml and automatically creates releases when commits are merged to main.
- Commits following the conventional format (
feat:,fix:, etc.) are analyzed - Version numbers are automatically bumped based on commit types
- A changelog is automatically generated and committed
- A GitHub release is created with release notes
- No manual version management needed!
Please follow the Conventional Commits format for all commit messages. See CONTRIBUTING.md for detailed guidelines and examples.
To trigger the release workflow manually, go to the Actions tab and run the "Conventional Release" workflow.
The UI displays the current package version in the navigation bar (derived from package.json or the NEXT_PUBLIC_APP_VERSION env var set at build time). If you need to override the visible version (for example in CI), set the NEXT_PUBLIC_APP_VERSION environment variable at build time before running next build.