Meet Worklenz, a powerful, open-source project management platform built to help teams plan smarter, collaborate better, and ship faster. No bloated tools. No unnecessary complexity. Just everything your team needs, in one place. π
Worklenz is growing every day. Your bug reports, feature ideas, and feedback shape what we build next. Jump into Discord or open a GitHub issue - we read everything!
Pick the setup that works best for you:
The fastest way to get started - no setup, no infrastructure. Just sign up at worklenz.com and start managing projects in minutes.
Prefer full control over your data? Run Worklenz on your own server.
| Method | Guide |
|---|---|
| π³ Docker (Recommended) | Quick Docker Setup |
| π§ Manual Installation | Manual Dev Setup |
- πΊοΈ Project Management - Plan, execute, and monitor projects from start to finish with full visibility across every stage.
- π Task Management - Break projects into tasks, set priorities, due dates, and track progress with multiple views (list, board, Gantt).
- π Resource Planning - Allocate the right people to the right tasks at the right time - keep your team balanced and productive.
- π₯ Team & Client Collaboration - Bring your team and clients together in one shared space to align on goals, updates, and deliverables.
- π° Financial Insights - Track budgets, costs, and financial performance across projects to keep spending on track and transparent.
- β±οΈ Time Tracking - Log time directly on tasks to understand where your team's hours are actually going.
- π Analytics & Reporting - Get real-time insights into project health, team workload, and performance.
- ποΈ Resource Management - Plan team capacity, avoid overallocation, and schedule work with a visual scheduler.
- π§© Project Templates - Start new projects in seconds using pre-built templates for common workflows.
- π€ Team Collaboration - Comment on tasks, share files, and keep all communication in context - right where the work is.
- π Planner - Schedule and visualize project timelines across a cross-project view, with team-wide member utilization at a glance.
- π Import & Export - Import tasks from a CSV file and export entire projects to CSV for easy data portability.
| Layer | Technology |
|---|---|
| Frontend | React + Ant Design |
| Backend | TypeScript + Express.js |
| Database | PostgreSQL |
| Storage | SeaweedFS (S3-compatible) / AWS S3 / Azure Blob |
| Cache | Redis |
| Proxy | Nginx |
- Node.js version v20 or newer
- PostgreSQL version v15 or newer
- Docker and Docker Compose (for containerized setup)
Explore Worklenz's product documentation to learn about features, setup, and usage and more.
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.shThis script will:
- β
Create
.envfile 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 (includes PostgreSQL, Redis, SeaweedFS)
docker compose up -dπ Access the application:
- Application: https://localhost (or http://localhost)
- SeaweedFS S3 API: http://localhost:8333
π οΈ 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 servicesFor 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.
Use this path to run the services individually, either for development or on a server that does not use Docker.
π Prerequisites:
- Node.js (version 20 or higher)
- PostgreSQL (version 15 or higher)
- An S3-compatible storage service (SeaweedFS is bundled) or Azure Blob Storage
πͺ Steps:
- π₯ Clone the repository:
# Open a terminal and navigate to the directory where you want to clone Worklenz.
cd /path/to/your/projects
git clone https://github.com/Worklenz/worklenz.git
cd worklenz
git switch main- βοΈ Set up environment variables:
cp worklenz-backend/.env.template worklenz-backend/.env
# Update the environment variables with your configurationThe OSS distribution is self-hosted by default. Planner, Finance, and Client
Portal are included for every organization; do not change
WORKLENZ_DEPLOYMENT_MODE=self_hosted.
Email invitations use the SMTP relay you configure in
worklenz-backend/.env:
EMAIL_PROVIDER=smtp
EMAIL_FROM="Worklenz <noreply@your-domain.com>"
SMTP_HOST=smtp.your-provider.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-smtp-username
SMTP_PASSWORD=your-smtp-password
CLIENT_PORTAL_HOSTNAME=client.your-domain.comUse SMTP_SECURE=true for an implicit-TLS SMTP service (normally port 465).
For submission with STARTTLS, use port 587 and leave it false.
- π¦ Install dependencies:
# Backend dependencies
cd worklenz-backend
npm install
# π₯οΈ Frontend dependencies
cd ../worklenz-frontend
npm install- ποΈ Set up the database:
# 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
# Apply versioned migrations after the base schema is initialized
npm run migrate:upβΆοΈ Start the development servers:
# Backend (builds, watches, and auto-restarts)
cd worklenz-backend
npm run dev
# Frontend (in another terminal)
cd worklenz-frontend
npm run dev- π Access the application at http://localhost:5000
For a production server, build the applications and run the backend through a
process manager such as systemd or PM2. Do not leave npm start running only in
an SSH session.
cd worklenz-backend
npm run build
npm run migrate:up
cd ../worklenz-frontend
npm run buildThe frontend production files are written to worklenz-frontend/build. Configure
your web server to serve that directory and proxy /api and /socket.io to the
backend. Configure the process manager to run npm start from the
worklenz-backend directory.
To update a manual deployment, back up the database, then pull the latest
main branch, rebuild both applications, apply migrations, and restart the
backend process:
cd /path/to/your/projects/worklenz
git pull --ff-only origin main
cd worklenz-backend
npm ci
npm run build
npm run migrate:up
cd ../worklenz-frontend
npm ci
npm run buildFor 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:
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:
docker compose 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, SeaweedFS)
docker compose up -d
-
π΅ Advanced Mode: Use external services (AWS S3, Azure Blob, external PostgreSQL)
# 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:
- Infrastructure Mode:
DEPLOYMENT_MODE=express(all services bundled) oradvanced(external services) - OSS Feature Entitlement:
WORKLENZ_DEPLOYMENT_MODE=self_hostedenables Planner, Finance, and Client Portal for all organizations - Domain & URLs: Configure for localhost or production domain
- Database: PostgreSQL credentials and connection settings
- Security Secrets: Session, cookie, and JWT secrets (auto-generated by setup scripts)
- Storage: SeaweedFS (default), AWS S3, or Azure Blob Storage
- Redis: Cache configuration (Express mode)
- SSL/TLS: Let's Encrypt for production, self-signed for localhost
- Backups: Automated backup retention settings
- Optional Features: Google OAuth, reCAPTCHA, email notifications
OSS entitlement and email defaults:
WORKLENZ_DEPLOYMENT_MODE: alwaysself_hostedin this public distribution; this enables Planner, Finance, and Client Portal for all organizations.EMAIL_PROVIDER:smtp; configureSMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSWORD, andEMAIL_FROMbefore sending invitations.CLIENT_PORTAL_HOSTNAME: public client-portal hostname used in invitation and password-reset links.
β‘ 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 advancedWORKLENZ_DEPLOYMENT_MODE: self_hosted (OSS default; do not change)STORAGE_PROVIDER: s3 (SeaweedFS/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 Docker setup uses SeaweedFS as its bundled S3-compatible object storage service. The default bucket is created automatically when the service starts.
SeaweedFS exposes an S3-compatible API on port 8333. Worklenz uses a private container endpoint for API calls and a separate public bucket URL for attachment links.
-
π₯οΈ S3 API: http://localhost:8333
-
Access key: configured with
S3_ACCESS_KEY_ID -
Secret key: configured with
S3_SECRET_ACCESS_KEY -
πͺ£ Default Bucket: worklenz-bucket (created automatically when the containers start)
SeaweedFS uses a different on-disk format. An existing worklenz_minio_data
Docker volume is intentionally left untouched and is not mounted into
SeaweedFS. Copy existing objects through the S3 API before removing the old
volume; do not copy the raw volume contents into worklenz_seaweedfs_data.
The backend is pre-configured to use SeaweedFS with the following settings:
export const REGION = process.env.S3_REGION || "us-east-1";
export const BUCKET = process.env.S3_BUCKET || "worklenz-bucket";
export const S3_ENDPOINT = process.env.S3_ENDPOINT;
export const S3_URL = process.env.S3_PUBLIC_URL || process.env.S3_URL;
export const S3_ACCESS_KEY_ID = process.env.S3_ACCESS_KEY_ID || "";
export const S3_SECRET_ACCESS_KEY = process.env.S3_SECRET_ACCESS_KEY || "";Worklenz is built with security in mind:
- π Non-root Docker containers
- π Network isolation (backend is internal-only)
- π SSL/TLS (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 via
openssl rand -hex 32
Found a security vulnerability? Please do not open a public issue. Email us at info@worklenz.com instead. We take all legitimate reports seriously.
Worklenz uses Google Analytics, Mixpanel, and Microsoft Clarity to understand how the application is used - helping us prioritize improvements and make smarter product decisions.
What we track:
- π Usage statistics
- πΊοΈ Page views and navigation patterns
- π§© Feature usage
- π» Browser and device information
Privacy and consent:
- πͺ Microsoft Clarity loads only after consent. The cookie banner's "Reject All" / "Accept" choice is stored in your browser's local storage and applies to Clarity only.
- π Google Analytics (always) and Mixpanel (when
VITE_MIXPANEL_TOKENis set) are initialized without waiting for that choice, so declining the banner does not disable them. - π Analytics data may include identifiers such as cookies, IP-derived location, and device details. Data is handled according to the providers' policies, including Google's Privacy Policy.
We love contributions from the community! Here's how you can help:
- π Report bugs
- β¨ Request features
- π Improve the documentation
- π¬ Share Worklenz with your team or write about it
Please read CONTRIBUTING.md before submitting a pull request.
Thanks to everyone who has contributed to Worklenz! π
Join the Worklenz community:
- π¬ Discord Server - chat with contributors and users
- π GitHub Discussions - longer form conversations
- π¦ Follow updates on our website
We follow a Code of Conduct across all community spaces.
Worklenz is open source, released under the GNU Affero General Public License v3.0.
By contributing to Worklenz, you agree your contributions will be licensed under AGPL v3.0.
www.worklenz.com