diff --git a/web/index.html b/web/index.html
deleted file mode 100644
index c0f85a6..0000000
--- a/web/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
- Melody example: chatting
-
-
-
-
-
-
- Chat
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/scheduler/main.go b/web/scheduler/main.go
new file mode 100644
index 0000000..a63f190
--- /dev/null
+++ b/web/scheduler/main.go
@@ -0,0 +1,20 @@
+package main
+
+import (
+ "io/ioutil"
+ "log"
+
+ "github.com/vwxyzjn/portwarden/web/worker/server"
+)
+
+func main() {
+ credential, err := ioutil.ReadFile("portwardenCredentials.json")
+ if err != nil {
+ log.Fatalf("Unable to read client secret file: %v", err)
+ }
+ ps := server.PortwardenServer{
+ Port: 5000,
+ GoogleDriveAppCredentials: credential,
+ }
+ ps.Run()
+}
diff --git a/web/scheduler/portwardenCredentials.json b/web/scheduler/portwardenCredentials.json
new file mode 100644
index 0000000..6c4c448
--- /dev/null
+++ b/web/scheduler/portwardenCredentials.json
@@ -0,0 +1,12 @@
+{
+ "web": {
+ "client_id": "1098948957266-vqofngan2v0282k3ia7udtue5pk9aq8n.apps.googleusercontent.com",
+ "project_id": "neat-tempo-223722",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://www.googleapis.com/oauth2/v3/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_secret": "N25YpAKLwoK20_XHn8zAdDO4",
+ "redirect_uris": ["http://localhost:5000/gdrive/login"],
+ "javascript_origins": ["http://localhost:5000"]
+ }
+}
diff --git a/web/server/backup.go b/web/scheduler/server/backup.go
similarity index 100%
rename from web/server/backup.go
rename to web/scheduler/server/backup.go
diff --git a/web/server/backup_controller.go b/web/scheduler/server/backup_controller.go
similarity index 100%
rename from web/server/backup_controller.go
rename to web/scheduler/server/backup_controller.go
diff --git a/web/server/google_drive.go b/web/scheduler/server/google_drive.go
similarity index 100%
rename from web/server/google_drive.go
rename to web/scheduler/server/google_drive.go
diff --git a/web/server/server.go b/web/scheduler/server/server.go
similarity index 100%
rename from web/server/server.go
rename to web/scheduler/server/server.go
diff --git a/web/server/token.json b/web/scheduler/server/token.json
similarity index 100%
rename from web/server/token.json
rename to web/scheduler/server/token.json
diff --git a/web/worker/main.go b/web/worker/main.go
new file mode 100644
index 0000000..eb00413
--- /dev/null
+++ b/web/worker/main.go
@@ -0,0 +1,33 @@
+package main
+
+import (
+ "github.com/RichardKnop/machinery/v1"
+ "github.com/RichardKnop/machinery/v1/config"
+ "github.com/vwxyzjn/portwarden"
+)
+
+func main() {
+ var cnf = &config.Config{
+ Broker: "amqp://guest:guest@localhost:5672/",
+ DefaultQueue: "machinery_tasks",
+ ResultBackend: "amqp://guest:guest@localhost:5672/",
+ AMQP: &config.AMQPConfig{
+ Exchange: "machinery_exchange",
+ ExchangeType: "direct",
+ BindingKey: "machinery_task",
+ },
+ }
+
+ server, err := machinery.NewServer(cnf)
+ if err != nil {
+ panic(err)
+ }
+ server.RegisterTasks(map[string]interface{}{
+ "CreateBackupBytes": portwarden.CreateBackupBytes,
+ })
+ worker := server.NewWorker("worker_name", 0)
+ err = worker.Launch()
+ if err != nil {
+ panic(err)
+ }
+}