Development
⚠️ Warning: Docs for develop branch
This guide outlines the current development process and is intended for contributing to the develop branch.
It may differ from the steps used in the latest stable release.
This guide outlines the steps necessary to set up your development environment for TaskMinder. This includes installing redis, PostgreSQL, bun with optional setup for ClamAV, Ghostscript and mdbook (requires rust and cargo).
⚠️ Warning: License Notice
Please make sure to review our license before contributing to the project!
ℹ️ Info
Windows is currently not supported, as the primary development and testing of this tool are carried out on Linux and macOS platforms. This may result in compatibility issues or unexpected behavior when attempting to run the server on Windows.
Installing Redis and PostgreSQL
Recommended versions: PostgreSQL 18.1+ and Redis v8.6+ (Redis Open Source).
Linux (Ubuntu / Debian)
Follow this guide to install Redis Open Source: Install Redis on Linux. Return here once complete.
Download PostgreSQL here: Download page of PostgreSQL. Return here once installed.
Don’t forget to start and enable both services to run at system startup:
# Redis setup is covered in the installation guide
sudo systemctl enable redis-server
sudo systemctl start redis-server
# PostgreSQL setup – this part is often not included in guides
sudo systemctl enable postgresql
sudo systemctl start postgresql
macOS
Follow this guide to install Redis Open Source: Install Redis on MacOS. Return here once finished.
Download PostgreSQL here: Download page of PostgreSQL. Return here once finished.
Service startup instructions are included in the respective guides.
GitHub Codespaces
Since Codespaces run on Ubuntu, the setup is similar to the Linux instructions. Auto-starting services on boot is skipped to save memory and runtime.
Install and start Redis:
sudo apt-get update
sudo apt-get install redis
sudo service redis-server start
Install and start PostgreSQL:
sudo apt-get update
sudo apt-get -y install postgresql
sudo service postgresql start
Installing Bun
Bun is required for this project.
To check if it’s already installed, run:
bun --version
You should see at least Bun 1.3.12 (last checked: April 10th, 2026).
If not installed, retrieve the download instructions from the Bun Download Page. For Github Codespaces, follow the npm instructions under the Mac/Linux Tab.
Installing ClamAV and Ghostscript - optional
This step installs the tools that scan files uploaded to the server. This is optional for development environments, as you typically wouldn’t enable scanning in that context. However, if you’re developing or testing upload functionality, please install these tools to ensure your code changes work correctly with the scanning pipeline.
Linux (Ubuntu / Debian) and Github Codespaces
Install ClamAV via apt package manager
sudo apt install clamav clamav-daemon -y
clamav: the command-line scanner (clamscan)clamav-daemon: runs theclamdbackground service for faster scanning
Stop the daemon before updating virus definitions
# Github Codespaces
sudo service clamav-freshclam stop
# Ubuntu/Debian (Linux)
sudo systemctl stop clamav-freshclam
Update virus definitions
# fetches the latest virus signatures from ClamAV's servers
sudo freshclam
Start services
# Github Codespaces
sudo service clamav-freshclam start
sudo service clamav-daemon start
# Ubuntu/Debian (Linux)
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon
Install Ghostscript via apt package manager
sudo apt install ghostscript -y
gs --version
Ghostscript should at least return version 10.02.1 (last checked: November 7th, 2025).
macOS
Install ClamAV via Homebrew
brew install clamav
Verify the installation
brew list clamav
clamscan --version
You should see binaries like clamd, clamdscan, clamscan, and configuration files in /opt/homebrew/etc/clamav/. The version of ClamAV should at least be 1.5.1 (last checked: January 5th, 2026).
Copy sample configuration files
ClamAV ships with sample configuration files that you’ll need to customize:
cd /opt/homebrew/etc/clamav
cp clamd.conf.sample clamd.conf
cp freshclam.conf.sample freshclam.conf
Configure clamd.conf
nano /opt/homebrew/etc/clamav/clamd.conf
Edit or uncomment these lines:
# Where the database files are stored
DatabaseDirectory /opt/homebrew/var/lib/clamav
# Temporary directory
TemporaryDirectory /tmp
# Log file location
LogFile /opt/homebrew/var/log/clamav/clamd.log
LogFileMaxSize 5M
# Local socket (used by clamdscan)
LocalSocket /opt/homebrew/var/run/clamav/clamd.sock
FixStaleSocket yes
# Run as daemon
Foreground no
Configure freshclam.conf
nano /opt/homebrew/etc/clamav/freshclam.conf
Edit these lines:
DatabaseDirectory /opt/homebrew/var/lib/clamav
UpdateLogFile /opt/homebrew/var/log/clamav/freshclam.log
DatabaseOwner _clamav
Checks 12
Create required directories
sudo mkdir -p /opt/homebrew/var/lib/clamav
sudo mkdir -p /opt/homebrew/var/log/clamav
sudo mkdir -p /opt/homebrew/var/run/clamav
sudo chown -R $(whoami) /opt/homebrew/var/{lib,log,run}/clamav
Download virus definitions
freshclam
This downloads the latest virus definitions to /opt/homebrew/var/lib/clamav.
Start the ClamAV daemon
brew services start clamav
Note: Homebrew services don’t automatically update virus definitions. Remember to run freshclam regularly to keep your definitions up-to-date.
Install Ghostscript via Homebrew
brew install ghostscript
gs --version
Ghostscript should at least return version 10.06.0 (last checked: January 5th, 2026).
Clone Repository and Install Bun Packages
Visit the repo at https://github.com/TaskMinder/TaskMinder and fork it.
Then, on your local machine, choose a directory and run:
git clone https://github.com/YOUR_GITHUB_USERNAME/TaskMinder.git
cd TaskMinder
Replace YOUR_GITHUB_USERNAME with your actual GitHub username.
Install all dependencies:
bun install
Initialize the Database
Before using the database, you need to log into the PostgreSQL terminal (psql) and create a database. It’s also recommended to change the default postgres password.
Replace your_db_name with your actual database name.
Linux (Ubuntu / Debian)
sudo -u postgres psql
\password
CREATE DATABASE your_db_name;
macOS
psql postgres
\password
CREATE DATABASE your_db_name;
GitHub Codespaces
sudo su postgres
psql postgres
\password
CREATE DATABASE your_db_name;
Create the .env File
To securely manage credentials, create a .env file in the root directory of your project. Use the .env.example file located in the root folder as a reference.
Setup mdbook (documentation) - optional
Follow the official guide: Installation mdbook. mdbook requires rust and cargo.
Applying database changes
Run bunx prisma migrate dev to apply schema changes from previously pulled commits to your local database.
You should also run this command during development if the schema has been modified.
If you make changes to the schema while developing—especially on a feature branch—don’t forget to generate a migration file. Otherwise, your changes might be lost or overwritten when switching branches (e.g., to develop or main).
Start the Server
Run this command to compile the typescript code and start the development server:
bun run build
bun run dev
Notes:
-
You can manually compile the code by running
bun run build, or usebun run build:feandbun run build:beto compile the frontend and backend separately. After building, start the server withbun run dev. -
We use linting/formatting tools to maintain code quality. To use ESLint and Prettier (frontend only) on this project, simply run:
bun run lint(NOTbun run lint .!). -
When updating the Prisma schema, remember to run
bunx prisma generateto regenerate the client and TypeScript types innode_modules/. Before committing your changes, make sure to runbunx prisma migrate devto create and apply the necessary migration files to your local database—skipping this step may result in broken or inconsistent code.