diff --git a/src/application/logger.ts b/src/application/logger.ts
index e7817b5..9c6c15d 100644
--- a/src/application/logger.ts
+++ b/src/application/logger.ts
@@ -1,4 +1,5 @@
 import pino from 'pino'
+const logger = pino.pino
 
 export enum LoggerType {
   HTTP = 'http',
@@ -13,13 +14,13 @@ export enum LoggerType {
 }
 
 class Logger {
-  private instances: Map<LoggerType, ReturnType<typeof pino>> = new Map()
+  private instances: Map<LoggerType, pino.Logger> = new Map()
 
-  private getLogger(type: LoggerType): ReturnType<typeof pino> {
+  private getLogger(type: LoggerType): pino.Logger {
     if (!this.instances.has(type)) {
       this.instances.set(
         type,
-        pino({
+        logger({
           level: process.env.LOG_LEVEL || 'debug',
           transport: {
             target: 'pino/file',
diff --git a/src/controllers/avatar.ts b/src/controllers/avatar.ts
index 79d5139..42a9838 100644
--- a/src/controllers/avatar.ts
+++ b/src/controllers/avatar.ts
@@ -27,7 +27,7 @@ export class AvatarController extends BaseController {
    * @param res
    */
   public async getByName(req: Request, res: Response) {
-    const character = await this.characterRepository.getByName(req.params.characterName)
+    const character = await this.characterRepository.getByName(req.params.characterName!)
     if (!character?.characterType) {
       return this.sendError(res, 'Character or character type not found', 404)
     }
diff --git a/src/controllers/textures.ts b/src/controllers/textures.ts
index 311b3c6..c9c5021 100644
--- a/src/controllers/textures.ts
+++ b/src/controllers/textures.ts
@@ -12,6 +12,10 @@ export class TexturesController extends BaseController {
   public async download(req: Request, res: Response) {
     const { type, spriteId, file } = req.params
 
+    if (!type || !file) {
+      return this.sendError(res, 'Invalid request', 400)
+    }
+
     const texture = type === 'sprites' && spriteId ? Storage.getPublicPath(type, spriteId, file) : Storage.getPublicPath(type, file)
 
     this.sendFile(res, texture)
diff --git a/src/events/character/create.ts b/src/events/character/create.ts
index 3bd7c79..8e5a909 100644
--- a/src/events/character/create.ts
+++ b/src/events/character/create.ts
@@ -64,7 +64,7 @@ export default class CharacterCreateEvent extends BaseEvent {
     } catch (error: any) {
       this.logger.error(`character:create error: ${error.message}`)
       if (error instanceof ZodError) {
-        return this.socket.emit('notification', { title: 'Error', message: error.issues[0].message })
+        return this.socket.emit('notification', { title: 'Error', message: error.issues[0]!.message })
       }
       return this.socket.emit('notification', { title: 'Error', message: 'Could not create character. Please try again (later).' })
     }
diff --git a/src/events/gameMaster/mapEditor/create.ts b/src/events/gameMaster/mapEditor/create.ts
index 241d38a..7de40ed 100644
--- a/src/events/gameMaster/mapEditor/create.ts
+++ b/src/events/gameMaster/mapEditor/create.ts
@@ -1,5 +1,7 @@
+import type { MapCacheT } from '#entities/map'
+
 import { BaseEvent } from '#application/base/baseEvent'
-import { Map, MapCacheT } from '#entities/map'
+import { Map } from '#entities/map'
 
 type Payload = {
   name: string
diff --git a/src/events/gameMaster/mapEditor/update.ts b/src/events/gameMaster/mapEditor/update.ts
index 4979122..96b21df 100644
--- a/src/events/gameMaster/mapEditor/update.ts
+++ b/src/events/gameMaster/mapEditor/update.ts
@@ -63,9 +63,11 @@ export default class MapUpdateEvent extends BaseEvent {
       if (data.tiles.length > data.height) {
         data.tiles = data.tiles.slice(0, data.height)
       }
+
       for (let i = 0; i < data.tiles.length; i++) {
-        if (data.tiles[i].length > data.width) {
-          data.tiles[i] = data.tiles[i].slice(0, data.width)
+        const row = data.tiles[i]
+        if (row !== undefined && row.length > data.width) {
+          data.tiles[i] = row.slice(0, data.width)
         }
       }
 
diff --git a/src/events/map/characterMove.ts b/src/events/map/characterMove.ts
index 9c5bfb2..5f4e269 100644
--- a/src/events/map/characterMove.ts
+++ b/src/events/map/characterMove.ts
@@ -1,5 +1,6 @@
+import type { MapEventTileWithTeleport } from '#application/types'
+
 import { BaseEvent } from '#application/base/baseEvent'
-import { MapEventTileWithTeleport } from '#application/types'
 import MapManager from '#managers/mapManager'
 import MapCharacter from '#models/mapCharacter'
 import MapEventTileRepository from '#repositories/mapEventTileRepository'
@@ -75,6 +76,11 @@ export default class CharacterMove extends BaseEvent {
 
         const [start, end] = [path[i], path[i + 1]]
 
+        if (!start || !end) {
+          this.logger.error('Invalid path step detected')
+          break
+        }
+
         // Validate each step
         if (Math.abs(end.positionX - start.positionX) > 1 || Math.abs(end.positionY - start.positionY) > 1) {
           this.logger.error('Invalid path step detected')
diff --git a/src/managers/consoleManager.ts b/src/managers/consoleManager.ts
index d4405b5..e694384 100644
--- a/src/managers/consoleManager.ts
+++ b/src/managers/consoleManager.ts
@@ -28,6 +28,11 @@ export class ConsoleManager {
   private async processCommand(commandLine: string): Promise<void> {
     const [cmd, ...args] = commandLine.trim().split(' ')
 
+    if (!cmd) {
+      console.log('No command provided')
+      return
+    }
+
     if (cmd === 'exit') {
       this.prompt.close()
       return
diff --git a/src/managers/dateManager.ts b/src/managers/dateManager.ts
index 4251aa8..3ae82b7 100644
--- a/src/managers/dateManager.ts
+++ b/src/managers/dateManager.ts
@@ -61,6 +61,7 @@ class DateManager {
 
     if (timeOnlyPattern.test(timeString)) {
       const [hours, minutes] = timeString.split(':').map(Number)
+      if (!hours || !minutes) return null
       const newDate = new Date(this.currentDate)
       newDate.setHours(hours, minutes)
       return newDate
diff --git a/src/managers/queueManager.ts b/src/managers/queueManager.ts
index 74a826b..b630dec 100644
--- a/src/managers/queueManager.ts
+++ b/src/managers/queueManager.ts
@@ -12,7 +12,7 @@ import Storage from '#application/storage'
 import SocketManager from '#managers/socketManager'
 
 class QueueManager {
-  private connection!: IORedis
+  private connection!: IORedis.Redis
   private queue!: Queue
   private worker!: Worker
   private io!: SocketServer
@@ -21,7 +21,7 @@ class QueueManager {
   public async boot() {
     this.io = SocketManager.getIO()
 
-    this.connection = new IORedis(config.REDIS_URL, {
+    this.connection = new IORedis.Redis(config.REDIS_URL, {
       maxRetriesPerRequest: null
     })
 
diff --git a/src/models/loadedMap.ts b/src/models/loadedMap.ts
index d3e964a..6c78de2 100644
--- a/src/models/loadedMap.ts
+++ b/src/models/loadedMap.ts
@@ -47,7 +47,7 @@ class LoadedMap {
     // Set the grid values based on the event tiles, these are strings
     eventTiles.forEach((eventTile) => {
       if (eventTile.type === 'BLOCK') {
-        grid[eventTile.positionY][eventTile.positionX] = 1
+        grid[eventTile.positionY]![eventTile.positionX] = 1
       }
     })
 
diff --git a/src/services/characterMoveService.ts b/src/services/characterMoveService.ts
index 1288e8a..45baeca 100644
--- a/src/services/characterMoveService.ts
+++ b/src/services/characterMoveService.ts
@@ -133,9 +133,9 @@ class CharacterMoveService extends BaseService {
     return (
       pos.positionX >= 0 &&
       pos.positionY >= 0 &&
-      pos.positionX < grid[0].length &&
+      pos.positionX < grid[0]!.length &&
       pos.positionY < grid.length &&
-      (grid[pos.positionY][pos.positionX] === 0 || (pos.positionX === end.positionX && pos.positionY === end.positionY))
+      (grid[pos.positionY]![pos.positionX] === 0 || (pos.positionX === end.positionX && pos.positionY === end.positionY))
     )
   }