Skip to main content

DutyDuke

Open-source, self-hosted HR management platform for small and mid-sized companies.

DutyDuke is an HRIS (Human Resource Information System) built with Next.js 15, TypeScript, Prisma, and PostgreSQL, following Clean Architecture principles with Domain-Driven Design.

Features​

  • Employee Management — profiles, onboarding, employment history, skills, education
  • Absence Management — leave requests, approval workflows, calendar view, iCal export
  • Document Management — upload, categorize, track expiration dates, assign to employees
  • Equipment Tracking — inventory management, assignments, changelog
  • Benefits Administration — create and assign benefit plans
  • Performance Feedback — schedule and track feedback sessions
  • Role-Based Access Control — granular permissions per resource, action, and scope
  • CV Generation — export employee profiles as PDF
  • Multi-language Support — English and Polish (via next-intl)
  • Field-Level Encryption — sensitive data encrypted at rest
  • Email Notifications — configurable SMTP with template support

Tech Stack​

LayerTechnology
FrameworkNext.js 15, React 18, TypeScript
DatabasePostgreSQL 16 + PostGIS
ORMPrisma 5 with field-level encryption
AuthenticationJWT with role-based access control
UITailwind CSS, React Aria Components
ValidationZod
EmailNodemailer
LoggingPino
i18nnext-intl

Quick Start​

git clone https://github.com/Bitnoise/dutyduke.git
cd dutyduke
yarn install
cp .env.dist .env
# Edit .env — set PRISMA_FIELD_ENCRYPTION_KEY and JWT_SECRET
docker compose up -d
yarn prisma:generate && yarn prisma:migrate && yarn prisma:seed
yarn create:owner admin@example.com YourPassword123 John Doe
yarn organization:create "My Company"
yarn dev

Open http://localhost:3000 and sign in with your admin credentials.

For detailed setup instructions, see the Installation Guide.