diff --git a/docker-compose.yml b/docker-compose.yml
index fbb506b4753bb35ad034b91b5320fa7a0243fd7f..c0a12497a101a2f830db1851b15baa6e14dfc8c7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -20,8 +20,15 @@ services:
     # virtual drive for storage of the db between reboots
     volumes:
       - ./data/db:/data/db
+      - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
     networks:
       - todo-network
+    # mongo is being initialized too late so we have to wait for it
+    healthcheck:
+      test: [ "CMD", "mongo", "--eval", "db.adminCommand('ping')" ]
+      interval: 10s
+      timeout: 5s
+      retries: 5
 
   # backend stuff
   backend:
@@ -42,7 +49,8 @@ services:
     ports:
       - "9876:9876"
     depends_on:
-      - mongodb
+      mongodb:
+        condition: service_healthy
 
 # were gonna use this network for both our backend and frontend
 networks:
diff --git a/init-db.js b/init-db.js
new file mode 100644
index 0000000000000000000000000000000000000000..b336a35d89bc4d94cfd3d79ae2c63cb810276304
--- /dev/null
+++ b/init-db.js
@@ -0,0 +1,11 @@
+db = db.getSiblingDB('admin')
+
+if(db.system.users.find({user: "tododbuser"}).count() === 0){
+    db.createUser({
+        user: "tododbuser",
+        pwd: "tododbadminpassword",
+        roles: [{
+            role: "readWrite", db: "todo"
+        }]
+    })
+}
\ No newline at end of file