diff --git a/.dockerignore b/.dockerignore
index 43a84cd52..757f982e1 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,6 +3,7 @@
 /assets/database/*
 /internal/photoprism/testdata/*
 /frontend/node_modules/*
+/node_modules
 /assets/server/public/build/*
 /assets/testdata
 /assets/backups
diff --git a/.gitignore b/.gitignore
index 00fcf0171..e2e97dfbc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 /assets/photos/originals/*
 /assets/photos/import/*
 /assets/photos/export/*
+/node_modules
 /frontend/node_modules/*
 /frontend/tests/result.html
 /assets/testdata
diff --git a/Makefile b/Makefile
index fed29e592..e3b915fca 100644
--- a/Makefile
+++ b/Makefile
@@ -44,8 +44,11 @@ test-coverage:
 	go tool cover -html=coverage.txt -o coverage.html
 clean:
 	rm -f $(BINARY_NAME)
+	rm -f *.log
+	rm -rf node_modules
 	rm -rf assets/testdata
 	rm -rf assets/backups
+	rm -rf frontend/node_modules
 download:
 	scripts/download-nasnet.sh
 docker-development: