diff --git a/src/restic_compose_backup/commands/alert.py b/src/restic_compose_backup/commands/alert.py
new file mode 100644
index 0000000..e65c3cf
--- /dev/null
+++ b/src/restic_compose_backup/commands/alert.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Send an alert"""
+    name = "alert"
+
+    def run(self):
+        print("Alert!")
diff --git a/src/restic_compose_backup/commands/backup.py b/src/restic_compose_backup/commands/backup.py
new file mode 100644
index 0000000..4fcde82
--- /dev/null
+++ b/src/restic_compose_backup/commands/backup.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Backup a directory"""
+    name = "backup"
+
+    def run(self):
+        print("Backup!")
diff --git a/src/restic_compose_backup/commands/base.py b/src/restic_compose_backup/commands/base.py
new file mode 100644
index 0000000..9a6d9a8
--- /dev/null
+++ b/src/restic_compose_backup/commands/base.py
@@ -0,0 +1,12 @@
+from restic_compose_backup.config import Config
+
+
+class BaseCommand:
+    """Base class for all commands"""
+    name = "base"
+
+    def __init__(self):
+        self.config = Config()
+    
+    def run(self):
+        raise NotImplementedError
diff --git a/src/restic_compose_backup/commands/cleanup.py b/src/restic_compose_backup/commands/cleanup.py
new file mode 100644
index 0000000..e5416d0
--- /dev/null
+++ b/src/restic_compose_backup/commands/cleanup.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Cleanup old snapshots"""
+    name = "cleanup"
+
+    def run(self):
+        print("Cleanup!")
diff --git a/src/restic_compose_backup/commands/crontab.py b/src/restic_compose_backup/commands/crontab.py
new file mode 100644
index 0000000..6bde082
--- /dev/null
+++ b/src/restic_compose_backup/commands/crontab.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Manage crontab"""
+    name = "crontab"
+
+    def run(self):
+        print("Crontab!")
diff --git a/src/restic_compose_backup/commands/snapshots.py b/src/restic_compose_backup/commands/snapshots.py
new file mode 100644
index 0000000..f53adda
--- /dev/null
+++ b/src/restic_compose_backup/commands/snapshots.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """List snapshots"""
+    name = "snapshots"
+
+    def run(self):
+        print("Snapshots!")
diff --git a/src/restic_compose_backup/commands/status.py b/src/restic_compose_backup/commands/status.py
new file mode 100644
index 0000000..ea8eefc
--- /dev/null
+++ b/src/restic_compose_backup/commands/status.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Show status"""
+    name = "status"
+
+    def run(self):
+        print("Status!")
diff --git a/src/restic_compose_backup/commands/test.py b/src/restic_compose_backup/commands/test.py
new file mode 100644
index 0000000..5c619b4
--- /dev/null
+++ b/src/restic_compose_backup/commands/test.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Test a command"""
+    name = "test"
+
+    def run(self):
+        print("Test!")
diff --git a/src/restic_compose_backup/commands/version.py b/src/restic_compose_backup/commands/version.py
new file mode 100644
index 0000000..2dd8e4e
--- /dev/null
+++ b/src/restic_compose_backup/commands/version.py
@@ -0,0 +1,9 @@
+from .base import BaseCommand
+
+
+class Command(BaseCommand):
+    """Show version"""
+    name = "version"
+
+    def run(self):
+        print("Version!")