Files
worklenz/worklenz-backend
chamikaJ ba90fa1274 feat(task): add progress mode handling and update related functions
Introduce a new `progress_mode` field to tasks and projects to support different progress calculation methods (manual, weighted, time, default). Update database migrations, task progress calculation functions, and related handlers to accommodate these changes. This ensures consistent progress tracking across different project management needs.

The changes include:
- Adding `progress_mode` to the `tasks` table.
- Updating progress calculation functions to respect the selected mode.
- Adding triggers to reset progress values when the project's progress mode changes.
- Enhancing documentation to explain the default progress method.
2025-05-09 15:59:25 +05:30
..
2025-04-17 18:28:54 +05:30
2025-04-17 18:28:54 +05:30

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:

  1. Configure Environment Variables:

    • Create a copy of the .env.example file and name it .env.
    • Update the required fields in .env with your specific configuration.
  2. Set up Database:

    • Create a new database named worklenz_db on your local PostgreSQL server.
    • Update the database connection details in your .env file.
    • 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.sql
    

    Alternatively, 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
    
  3. Install Dependencies:

    npm install
    
  4. Run the Development Server:

    npm run dev
    

    This starts the development server with hot reloading enabled.

  5. Build for Production:

    npm run build
    

    This will compile the TypeScript code into JavaScript for production use.

  6. 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.