<a href="https://github.com/Worklenz/worklenz/blob/main/LICENSE">
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg" alt="License">
</a>
<a href="https://github.com/Worklenz/worklenz/releases">
<img src="https://img.shields.io/github/v/release/Worklenz/worklenz" alt="Release">
</a>
<a href="https://github.com/Worklenz/worklenz/stargazers">
<img src="https://img.shields.io/github/stars/Worklenz/worklenz" alt="Stars">
</a>
<a href="https://github.com/Worklenz/worklenz/network/members">
<img src="https://img.shields.io/github/forks/Worklenz/worklenz" alt="Forks">
</a>
<a href="https://github.com/Worklenz/worklenz/issues">
<img src="https://img.shields.io/github/issues/Worklenz/worklenz" alt="Issues">
</a>
<a href="https://discord.gg/AVbkGXHA">
<img src="https://img.shields.io/discord/1202616582757556276?style=flat&logo=discord&logoColor=white&label=Discord&color=5865F2" alt="Issues">
</a>
<a href="https://worklenz.com/task-management/">Task Management</a> |
<a href="https://worklenz.com/time-tracking/">Time Tracking</a> |
<a href="https://worklenz.com/analytics/">Analytics</a> |
<a href="https://worklenz.com/resource-management/">Resource Management</a> |
<a href="https://worklenz.com/templates/">Project Templates</a>
<a href="https://worklenz.com" target="_blank">
<img
src="https://worklenz.s3.amazonaws.com/assets/screenshots/hero-view.png"
alt="Worklenz"
width="1200"
/>
</a>
Worklenz is a project management tool designed to help organizations improve their efficiency. It provides a comprehensive solution for managing projects, tasks, and collaboration within teams.
This repository contains the frontend and backend code for Worklenz.
Choose your preferred setup method below. Docker is recommended for quick setup and testing.
The fastest way to get Worklenz running locally with all dependencies included. This setup includes production-ready features like nginx reverse proxy, SSL/TLS support, Redis caching, and automated backups.
Prerequisites: - Docker and Docker Compose installed on your system - Git
Steps:
# Clone the repository
git clone https://github.com/Worklenz/worklenz.git
cd worklenz
# Run the automated setup script
./quick-setup.sh
This script will:
- Create .env file with auto-generated security secrets
- Configure URLs based on your domain (localhost or production)
- Set up SSL certificates (self-signed for localhost, Let's Encrypt for production)
- Install and start all services
# Clone the repository
git clone https://github.com/Worklenz/worklenz.git
cd worklenz
# Copy and configure environment file
cp .env.example .env
# Edit .env and set required values (DB_PASSWORD, SESSION_SECRET, etc.)
# Start services (Express mode - includes PostgreSQL, Redis, MinIO)
docker compose --profile express up -d
Access the application: - Application: https://localhost (or http://localhost) - MinIO Console: http://localhost:9001 (login: minioadmin/minioadmin)
Management:
# Use the management script for common operations
./manage.sh status # View service status
./manage.sh logs # View logs
./manage.sh backup # Create database backup
./manage.sh stop # Stop all services
./manage.sh start # Start all services
For detailed documentation, see DOCKER_SETUP.md
Video Guide: For a visual walkthrough of the local Docker deployment process, check out our step-by-step video guide.
For developers who want to run the services individually or customize the setup.
Prerequisites: - Node.js (version 18 or higher) - PostgreSQL (version 15 or higher) - An S3-compatible storage service (like MinIO) or Azure Blob Storage
Steps:
git clone https://github.com/Worklenz/worklenz.git
cd worklenz
cp worklenz-backend/.env.template worklenz-backend/.env
# Update the environment variables with your configuration
# Backend dependencies
cd worklenz-backend
npm install
# Frontend dependencies
cd ../worklenz-frontend
npm install
# Create a PostgreSQL database named worklenz_db
cd worklenz-backend
# Execute the SQL setup files in the correct order
psql -U your_username -d worklenz_db -f database/sql/0_extensions.sql
psql -U your_username -d worklenz_db -f database/sql/1_tables.sql
psql -U your_username -d worklenz_db -f database/sql/indexes.sql
psql -U your_username -d worklenz_db -f database/sql/4_functions.sql
psql -U your_username -d worklenz_db -f database/sql/triggers.sql
psql -U your_username -d worklenz_db -f database/sql/3_views.sql
psql -U your_username -d worklenz_db -f database/sql/2_dml.sql
psql -U your_username -d worklenz_db -f database/sql/5_database_user.sql
# Backend (single command for build, watch, and auto-restart)
cd worklenz-backend
npm run dev:all
# Frontend (in another terminal)
cd worklenz-frontend
npm run dev
For local development, follow the Quick Start (Docker) section above.
The new Docker setup includes production-ready features for secure and scalable deployments.
# Clone and navigate to the repository
git clone https://github.com/Worklenz/worklenz.git
cd worklenz
# Run the automated setup
./quick-setup.sh
# When prompted, enter your production domain (e.g., worklenz.example.com)
# The script will configure SSL with Let's Encrypt automatically
Configure environment for your domain:
bash
cp .env.example .env
# Edit .env and set:
# - DOMAIN=your-domain.com
# - VITE_API_URL=https://your-domain.com
# - VITE_SOCKET_URL=wss://your-domain.com
# - ENABLE_SSL=true
# - LETSENCRYPT_EMAIL=your-email@domain.com
# - Generate secure secrets for DB_PASSWORD, SESSION_SECRET, etc.
Point your domain's DNS A record to your server IP
Start services with SSL:
bash
docker compose --profile express --profile ssl up -d
Access your application at: https://your-domain.com
./manage.sh install # Interactive installation
./manage.sh upgrade # Upgrade to latest version
./manage.sh backup # Create database backup
./manage.sh restore # Restore from backup
./manage.sh ssl # Manage SSL certificates
./manage.sh status # View service status
Express Mode (default): All services bundled (PostgreSQL, Redis, MinIO)
bash
docker compose --profile express up -d
Advanced Mode: Use external services (AWS S3, Azure Blob, external PostgreSQL)
bash
# Set DEPLOYMENT_MODE=advanced in .env
docker compose up -d
For complete deployment documentation, see DOCKER_SETUP.md
Video Guide: For a complete walkthrough of deploying Worklenz to a remote server, check out our deployment video guide.
Worklenz uses a comprehensive environment configuration system. Copy .env.example to .env and configure according to your needs.
Key Configuration Areas:
express (all services bundled) or advanced (external services)Quick Configuration:
# Auto-generate all secrets and configure based on domain
./manage.sh auto-configure
# Or manually generate secrets
openssl rand -hex 32 # Use for SESSION_SECRET, COOKIE_SECRET, JWT_SECRET
Important Variables:
DOMAIN: Your domain (localhost for local testing)DEPLOYMENT_MODE: express or advancedSTORAGE_PROVIDER: s3 (MinIO/AWS) or azureENABLE_SSL: true/false for SSL/TLSBACKUP_RETENTION_DAYS: Days to keep backups (default: 30)For a complete list of variables with detailed documentation, see .env.example.
The project uses MinIO as an S3-compatible object storage service, which provides an open-source alternative to AWS S3 for development and production.
MinIO provides an S3-compatible API, so any code that works with S3 will work with MinIO by simply changing the endpoint URL. The backend has been configured to use MinIO by default, with no additional configuration required.
Password: minioadmin
Default Bucket: worklenz-bucket (created automatically when the containers start)
The backend is pre-configured to use MinIO with the following settings:
// S3 credentials with MinIO defaults
export const REGION = process.env.AWS_REGION || "us-east-1";
export const BUCKET = process.env.AWS_BUCKET || "worklenz-bucket";
export const S3_URL = process.env.S3_URL || "http://minio:9000/worklenz-bucket";
export const S3_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || "minioadmin";
export const S3_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || "minioadmin";
The new Docker setup includes enterprise-grade security features:
Built-in Security:
- ✅ Non-root containers (all services run as non-privileged users)
- ✅ Network isolation (backend network is internal-only)
- ✅ SSL/TLS support (Let's Encrypt for production, self-signed for localhost)
- ✅ Rate limiting on API and login endpoints
- ✅ Security headers (HSTS, CSP, X-Frame-Options, etc.)
- ✅ Auto-generated secure secrets (using openssl rand -hex 32)
Best Practices for Production:
.env files to version controlENABLE_SSL=true)./manage.sh logsAutomated Backups:
# Enable automated daily backups
docker compose --profile express --profile backup up -d
# Manual backup
./manage.sh backup
# Restore from backup
./manage.sh restore
If you believe you have found a security vulnerability in Worklenz, we encourage you to responsibly disclose this and not open a public issue. We will investigate all legitimate reports.
Email info@worklenz.com to disclose any security vulnerabilities.
Worklenz uses Google Analytics to understand how the application is being used. This helps us improve the application and make better decisions about future development.
If you've previously opted in and want to opt-out: 1. Clear your browser's l
$ claude mcp add worklenz \
-- python -m otcore.mcp_server <graph>