A web application to build, visualize, and share family trees in a collaborative and intuitive way.
Next.js 16 | Auth.js v5 | Prisma | MongoDB | TypeScript | Tailwind CSS | Radix UI | AWS S3, CloudFront & SES | Sentry | Lucide Icons
- Family tree management — create, edit, and visualize family trees with an interactive graph powered by React Flow and Dagre layout
- Collaborative access — invite members with role-based permissions (admin, editor, viewer)
- Photo gallery — upload photos, tag family members, and set profile pictures with automatic EXIF metadata extraction (dates, GPS, camera info)
- Insights — upcoming birthdays, death anniversaries, and weekly memory highlights
- Activity timeline — chronological feed of all tree changes (members added, relationships created, photos uploaded)
- Weekly newsletter — automated emails with upcoming milestones and recent tree activity via AWS SES
- i18n — English, Spanish, and Catalan
- Auth — Google OAuth via Auth.js
Prerequisites and setup
- Node.js 20+
- MongoDB instance
- AWS account (S3, CloudFront, SES, Secrets Manager)
- Google OAuth 2.0 credentials
-
Clone the repository and install dependencies:
git clone https://github.com/rguixaro/roots-app.git cd roots-app pnpm install -
Copy the environment template and fill in your values:
cp .env.template .env
See
.env.templatefor all required variables. -
Generate the Prisma client and sync the database schema:
pnpm db:generate pnpm db:push
-
Start the development server:
pnpm dev
Unit and server tests run automatically on every push and PR to main/dev
via GitHub Actions.
pnpm test # unit & server tests (Vitest)
pnpm test:coverage # tests + coverage report (HTML in coverage/)
pnpm test:watch # watch mode