Skip to content

werkyn/werkyn

Repository files navigation

Open-source project management and collaboration for teams. Kanban boards, team workspaces, calendar views, and a command palette, all self-hosted with Docker Compose. No SaaS fees, no vendor lock-in, just your data on your infrastructure.

werkyn-list_dark

⚠️ This project is a development preview. Expect breaking changes before a stable release.

🌎 Our Live Demo is online! Check it out!

πŸ“š Read the Werkyn Documentation for more information and features.

Getting Started

For local testing and development. Expect breaking changes before a stable release. There may be security flaws in the current state. Do not use in production. This will require Docker and Docker Compose.

Setup

  1. Clone the repository:
git clone https://github.com/werkyn/werkyn.git
cd werkyn
  1. Start the application:
docker compose up --build

This builds the app image, starts PostgreSQL, runs database migrations, and launches the server.

  • App: http://localhost:3000
  • Mailpit (email testing UI): http://localhost:8025

Features

Project Management

Kanban Boards - Visual task management with customizable status columns

werkyn-kanban
  • List View - Table view with sorting, filtering, and bulk operations
  • Calendar View - Timeline and calendar integration for scheduling
  • Task Properties - Rich task details including:
    • Priorities (Urgent, High, Medium, Low)
    • Assignees and labels
    • Due dates and start dates
    • Subtasks and dependencies
    • Comments with @mentions
    • File attachments
    • Custom fields (text, number, date, select)
  • Task Templates - Reusable task templates for common workflows
  • Recurring Tasks - Automatically create tasks on schedules
  • Real-time Updates - WebSocket-powered live collaboration

Wiki & Documentation

werkyn_wiki
  • Notion-like Editor - Rich text editing with BlockNote
  • Spaces & Pages - Organized wiki structure
  • Team Documentation - Collaborative knowledge base

File Management

werkyn-drive
  • Personal Files - Private file storage per user
  • Team Shares - Shared folders and team collaboration
  • File Uploads - Direct file attachments to tasks

Workspace Features

  • Multi-workspace Support - Organize projects by workspace
  • Team Collaboration - Member management and permissions
  • Command Palette - Quick navigation and actions (cmdk)
  • Dark Mode - Modern UI with theme support

Project Structure

This is a pnpm monorepo with three packages:

werkyn/
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ shared/      # Zod schemas, TypeScript types, and constants
β”‚   β”œβ”€β”€ backend/     # Fastify HTTP/WebSocket server with Prisma
β”‚   └── frontend/    # React SPA with Vite
β”œβ”€β”€ package.json     # Root workspace configuration
└── tsconfig.base.json

Architecture

  • Backend modules follow routes β†’ controller β†’ service layering
  • Authorization resolves workspace context from route params
  • Real-time events broadcast via WebSocket subscriptions
  • Frontend features organized into feature folders with api.ts, components/, and hooks/

Tech Stack

Frontend

  • React 19 - Latest React with modern features
  • Vite - Fast build tool and dev server
  • TanStack Router - Type-safe file-based routing
  • TanStack Query - Server state management
  • Zustand - Client state management
  • Tailwind CSS v4 - Utility-first styling
  • Mantine UI - Component library
  • BlockNote - Rich text editor
  • FullCalendar - Calendar component
  • dnd-kit - Drag and drop functionality

Backend

  • Node.js - Runtime environment
  • Fastify 5 - Fast web framework
  • Prisma - Type-safe ORM
  • PostgreSQL - Database
  • WebSocket - Real-time communication
  • JWT - Authentication
  • Zod - Schema validation

Infrastructure

  • pnpm Workspaces - Monorepo package management
  • TypeScript - Type safety across the stack
  • Docker Compose - Single-command containerized deployment

Local Development

For contributors who want to run outside of Docker:

Prerequisites

  • Node.js >= 20.0.0
  • pnpm >= 9.0.0
  • Docker (for PostgreSQL and Mailpit)

Setup

  1. Start the infrastructure services:
docker compose up postgres mailpit
  1. Install dependencies:
pnpm install
  1. Set up environment variables:
cd packages/backend
cp .env.example .env
# Edit .env with your database connection and other settings
  1. Set up the database:
cd packages/backend
pnpm db:generate
pnpm db:migrate
pnpm db:seed  # Optional: seed with sample data
  1. Start development servers:
# From the root directory
pnpm dev

This will start both the backend and frontend in development mode:

  • Backend: http://localhost:3000
  • Frontend: http://localhost:5173

Available Scripts

Root level:

  • pnpm dev - Start both backend and frontend in development mode
  • pnpm build - Build all packages
  • pnpm lint - Lint all packages
  • pnpm format - Format code with Prettier
  • pnpm format:check - Check code formatting

Backend (packages/backend):

  • pnpm dev - Start development server with hot reload
  • pnpm build - Build for production
  • pnpm start - Start production server
  • pnpm db:migrate - Run database migrations
  • pnpm db:generate - Generate Prisma client
  • pnpm db:seed - Seed database with sample data
  • pnpm db:studio - Open Prisma Studio

Frontend (packages/frontend):

  • pnpm dev - Start Vite dev server
  • pnpm build - Build for production
  • pnpm preview - Preview production build

Contributing

Contributions are welcome! This project is in active development. Please check back soon for contribution guidelines and code of conduct.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.

The AGPL-3.0 license ensures that:

  • You can use, modify, and distribute the software
  • If you modify the software and run it as a network service, you must make the source code available to users
  • All modifications must be released under the same license

Links

About

Open-source project management and collaberation for teams.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages