Worklenz Backend
This is the Express.js backend for the Worklenz project management application.
Getting Started
Follow these steps to set up the backend for development:
-
Configure Environment Variables:
- Create a copy of the
.env.examplefile and name it.env. - Update the required fields in
.envwith your specific configuration.
- Create a copy of the
-
Set up Database:
- Create a new database named
worklenz_dbon your local PostgreSQL server. - Update the database connection details in your
.envfile. - Execute the SQL setup files in the correct order:
# From your PostgreSQL client or command line 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.sqlAlternatively, you can use the provided shell script:
# Make sure the script is executable chmod +x database/00-init-db.sh # Run the script (may need modifications for local execution) ./database/00-init-db.sh - Create a new database named
-
Install Dependencies:
npm install -
Run the Development Server:
npm run devThis starts the development server with hot reloading enabled.
-
Build for Production:
npm run buildThis will compile the TypeScript code into JavaScript for production use.
-
Start Production Server:
npm start
API Documentation
The API endpoints are organized into logical controllers and follow RESTful design principles. The main API routes are prefixed with /api/v1.
Authentication
Authentication is handled via JWT tokens. Protected routes require a valid token in the Authorization header.
File Storage
The application supports both S3-compatible storage and Azure Blob Storage for file uploads. Configure your preferred storage option in the .env file.
Development Guidelines
- Code should be written in TypeScript
- Follow the established patterns for controllers, services, and middlewares
- Add proper error handling for all API endpoints
- Write unit tests for critical functionality
- Document API endpoints with clear descriptions and examples
Running Tests
npm test
Docker Support
The backend can be run in a Docker container. See the main project README for Docker setup instructions.