diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..3c50bd3
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/KotlinJavaRuntime.xml b/.idea/libraries/KotlinJavaRuntime.xml
new file mode 100644
index 0000000..1a7265d
--- /dev/null
+++ b/.idea/libraries/KotlinJavaRuntime.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..0548357
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..776ab40
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..fd65e99
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,577 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1539624568600
+
+
+ 1539624568600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ cecs343
+
+
+
+
+
+
+
+
+
+
+
+ KotlinJavaRuntime
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cecs343.iml b/cecs343.iml
new file mode 100644
index 0000000..973b2cb
--- /dev/null
+++ b/cecs343.iml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/mysql-connector-java-8.0.11.jar b/lib/mysql-connector-java-8.0.11.jar
new file mode 100644
index 0000000..c8b8b3f
Binary files /dev/null and b/lib/mysql-connector-java-8.0.11.jar differ
diff --git a/out/production/cecs343/GUI$Companion.class b/out/production/cecs343/GUI$Companion.class
new file mode 100644
index 0000000..0895f7e
Binary files /dev/null and b/out/production/cecs343/GUI$Companion.class differ
diff --git a/out/production/cecs343/GUI.class b/out/production/cecs343/GUI.class
new file mode 100644
index 0000000..bc24a8a
Binary files /dev/null and b/out/production/cecs343/GUI.class differ
diff --git a/out/production/cecs343/GUIFont.class b/out/production/cecs343/GUIFont.class
new file mode 100644
index 0000000..dc3b4ae
Binary files /dev/null and b/out/production/cecs343/GUIFont.class differ
diff --git a/out/production/cecs343/Logger$scene$2.class b/out/production/cecs343/Logger$scene$2.class
new file mode 100644
index 0000000..9850d12
Binary files /dev/null and b/out/production/cecs343/Logger$scene$2.class differ
diff --git a/out/production/cecs343/Logger$scene$3.class b/out/production/cecs343/Logger$scene$3.class
new file mode 100644
index 0000000..daa3a5f
Binary files /dev/null and b/out/production/cecs343/Logger$scene$3.class differ
diff --git a/out/production/cecs343/Logger$scene$4.class b/out/production/cecs343/Logger$scene$4.class
new file mode 100644
index 0000000..401729a
Binary files /dev/null and b/out/production/cecs343/Logger$scene$4.class differ
diff --git a/out/production/cecs343/Logger.class b/out/production/cecs343/Logger.class
new file mode 100644
index 0000000..f9ceb7f
Binary files /dev/null and b/out/production/cecs343/Logger.class differ
diff --git a/out/production/cecs343/META-INF/cecs343.kotlin_module b/out/production/cecs343/META-INF/cecs343.kotlin_module
new file mode 100644
index 0000000..add62bc
Binary files /dev/null and b/out/production/cecs343/META-INF/cecs343.kotlin_module differ
diff --git a/out/production/cecs343/Registrar$scene$2.class b/out/production/cecs343/Registrar$scene$2.class
new file mode 100644
index 0000000..75c672a
Binary files /dev/null and b/out/production/cecs343/Registrar$scene$2.class differ
diff --git a/out/production/cecs343/Registrar$scene$3.class b/out/production/cecs343/Registrar$scene$3.class
new file mode 100644
index 0000000..a4bfcb5
Binary files /dev/null and b/out/production/cecs343/Registrar$scene$3.class differ
diff --git a/out/production/cecs343/Registrar$scene$4.class b/out/production/cecs343/Registrar$scene$4.class
new file mode 100644
index 0000000..e4673a9
Binary files /dev/null and b/out/production/cecs343/Registrar$scene$4.class differ
diff --git a/out/production/cecs343/Registrar.class b/out/production/cecs343/Registrar.class
new file mode 100644
index 0000000..d0e95d9
Binary files /dev/null and b/out/production/cecs343/Registrar.class differ
diff --git a/out/production/cecs343/SourceKt.class b/out/production/cecs343/SourceKt.class
new file mode 100644
index 0000000..b43fcc5
Binary files /dev/null and b/out/production/cecs343/SourceKt.class differ
diff --git a/out/production/cecs343/Welcome$User.class b/out/production/cecs343/Welcome$User.class
new file mode 100644
index 0000000..110740c
Binary files /dev/null and b/out/production/cecs343/Welcome$User.class differ
diff --git a/out/production/cecs343/Welcome$scene$2.class b/out/production/cecs343/Welcome$scene$2.class
new file mode 100644
index 0000000..01d9362
Binary files /dev/null and b/out/production/cecs343/Welcome$scene$2.class differ
diff --git a/out/production/cecs343/Welcome.class b/out/production/cecs343/Welcome.class
new file mode 100644
index 0000000..32e2f88
Binary files /dev/null and b/out/production/cecs343/Welcome.class differ
diff --git a/resources/fonts/SF-Pro-Text-Bold.otf b/resources/fonts/SF-Pro-Text-Bold.otf
new file mode 100644
index 0000000..26ad259
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Bold.otf differ
diff --git a/resources/fonts/SF-Pro-Text-BoldItalic.otf b/resources/fonts/SF-Pro-Text-BoldItalic.otf
new file mode 100644
index 0000000..11e67d6
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-BoldItalic.otf differ
diff --git a/resources/fonts/SF-Pro-Text-Heavy.otf b/resources/fonts/SF-Pro-Text-Heavy.otf
new file mode 100644
index 0000000..5247fbf
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Heavy.otf differ
diff --git a/resources/fonts/SF-Pro-Text-HeavyItalic.otf b/resources/fonts/SF-Pro-Text-HeavyItalic.otf
new file mode 100644
index 0000000..b81d875
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-HeavyItalic.otf differ
diff --git a/resources/fonts/SF-Pro-Text-Light.otf b/resources/fonts/SF-Pro-Text-Light.otf
new file mode 100644
index 0000000..df26fee
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Light.otf differ
diff --git a/resources/fonts/SF-Pro-Text-LightItalic.otf b/resources/fonts/SF-Pro-Text-LightItalic.otf
new file mode 100644
index 0000000..938d34e
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-LightItalic.otf differ
diff --git a/resources/fonts/SF-Pro-Text-Medium.otf b/resources/fonts/SF-Pro-Text-Medium.otf
new file mode 100644
index 0000000..acd85e4
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Medium.otf differ
diff --git a/resources/fonts/SF-Pro-Text-MediumItalic.otf b/resources/fonts/SF-Pro-Text-MediumItalic.otf
new file mode 100644
index 0000000..af02a41
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-MediumItalic.otf differ
diff --git a/resources/fonts/SF-Pro-Text-Regular.otf b/resources/fonts/SF-Pro-Text-Regular.otf
new file mode 100644
index 0000000..b802390
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Regular.otf differ
diff --git a/resources/fonts/SF-Pro-Text-RegularItalic.otf b/resources/fonts/SF-Pro-Text-RegularItalic.otf
new file mode 100644
index 0000000..37c19c8
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-RegularItalic.otf differ
diff --git a/resources/fonts/SF-Pro-Text-Semibold.otf b/resources/fonts/SF-Pro-Text-Semibold.otf
new file mode 100644
index 0000000..48ed582
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-Semibold.otf differ
diff --git a/resources/fonts/SF-Pro-Text-SemiboldItalic.otf b/resources/fonts/SF-Pro-Text-SemiboldItalic.otf
new file mode 100644
index 0000000..10637cb
Binary files /dev/null and b/resources/fonts/SF-Pro-Text-SemiboldItalic.otf differ
diff --git a/src/Logger.kt b/src/Logger.kt
new file mode 100644
index 0000000..303ad01
--- /dev/null
+++ b/src/Logger.kt
@@ -0,0 +1,58 @@
+import javafx.geometry.Insets
+import javafx.geometry.Pos
+import javafx.scene.Scene
+import javafx.scene.control.Button
+import javafx.scene.control.Label
+import javafx.scene.control.PasswordField
+import javafx.scene.control.TextField
+import javafx.scene.layout.GridPane
+import javafx.scene.layout.HBox
+import javafx.scene.layout.VBox
+
+// Login to user account
+object Logger {
+ val scene by lazy { scene() }
+
+ private fun scene(): Scene {
+
+ val gridPane = GridPane()
+ gridPane.alignment = Pos.CENTER
+ gridPane.hgap = 10.0
+ gridPane.vgap = 10.0
+ gridPane.padding = Insets(25.0, 25.0, 25.0, 25.0)
+
+ val text = Label("Login")
+ text.font = GUIFont.heavy
+ gridPane.add(text, 0, 0)
+
+ val email = TextField()
+ email.promptText = "Email"
+ email.font = GUIFont.regular
+
+ val password = PasswordField()
+ password.promptText = "Password"
+ password.font = GUIFont.regular
+
+ val vbox = VBox(10.0)
+ vbox.children.addAll(email, password)
+ gridPane.add(vbox, 0, 1)
+
+ val signIn = Button("Sign in")
+ signIn.font = GUIFont.medium
+ signIn.setOnAction {
+ _ ->
+ Welcome.user = Welcome.User(email.text, password.text)
+ window.scene = Welcome.scene
+ }
+
+ val signUp = Button("Sign up")
+ signUp.font = GUIFont.medium
+ signUp.setOnAction { _ -> window.scene = Registrar.scene }
+
+ val hbox = HBox(10.0)
+ hbox.children.addAll(signIn, signUp)
+ gridPane.add(hbox, 0, 2)
+
+ return Scene(gridPane, 250.0, 150.0)
+ }
+}
\ No newline at end of file
diff --git a/src/Registrar.kt b/src/Registrar.kt
new file mode 100644
index 0000000..91a63d9
--- /dev/null
+++ b/src/Registrar.kt
@@ -0,0 +1,71 @@
+import javafx.geometry.Insets
+import javafx.geometry.Pos
+import javafx.scene.Scene
+import javafx.scene.control.Button
+import javafx.scene.control.Label
+import javafx.scene.control.PasswordField
+import javafx.scene.control.TextField
+import javafx.scene.layout.GridPane
+import javafx.scene.layout.HBox
+import javafx.scene.layout.VBox
+
+// Create User Account
+object Registrar {
+ val scene by lazy { scene() }
+
+ private fun scene(): Scene {
+
+ val gridPane = GridPane()
+ gridPane.alignment = Pos.CENTER
+ gridPane.hgap = 10.0
+ gridPane.vgap = 10.0
+ gridPane.padding = Insets(25.0, 25.0, 25.0, 25.0)
+
+ val text = Label("Register")
+ text.font = GUIFont.heavy
+ gridPane.add(text, 0, 0)
+
+ val email = TextField()
+ email.promptText = "Email"
+ email.font = GUIFont.regular
+
+ val password = PasswordField()
+ password.promptText = "Password"
+ password.font = GUIFont.regular
+
+ val retypePassword = PasswordField()
+ retypePassword.promptText = "Retype Password"
+ retypePassword.font = GUIFont.regular
+
+ val vbox = VBox(10.0)
+ vbox.children.addAll(email, password, retypePassword)
+ gridPane.add(vbox, 0, 1)
+
+ val register = Button("Register")
+ register.font = GUIFont.medium
+ register.setOnAction {
+ _ ->
+ // Check if email address already exists
+ // - Connect to database
+ // - Check database for instances of email-address
+ // - If found
+ // - Display warning that email address already exists in the system
+ // - Check if password matches retype password
+ // - If matches
+ // - Display warning that passwords don't match
+ // Else execute a query that adds email address and password to database
+ println("An email has been sent confirming your account.")
+ window.scene = Logger.scene
+ }
+
+ val back = Button("Go back")
+ back.font = GUIFont.medium
+ back.setOnAction { _ -> window.scene = Logger.scene }
+
+ val hbox = HBox(10.0)
+ hbox.children.addAll(register, back)
+ gridPane.add(hbox, 0, 2)
+
+ return Scene(gridPane, 250.0, 200.0)
+ }
+}
diff --git a/src/Source.kt b/src/Source.kt
new file mode 100644
index 0000000..5015f00
--- /dev/null
+++ b/src/Source.kt
@@ -0,0 +1,41 @@
+import javafx.application.Application
+import javafx.scene.text.Font
+import javafx.stage.Stage
+
+object GUIFont {
+ val bold = Font.loadFont("file:resources/fonts/SF-Pro-Text-Bold.otf", 20.0)!!
+ val boldItalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-BoldItalic.otf", 20.0)!!
+ val heavy = Font.loadFont("file:resources/fonts/SF-Pro-Text-Heavy.otf", 20.0)!!
+ val heavyItalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-HeavyItalic.otf", 20.0)!!
+ val light = Font.loadFont("file:resources/fonts/SF-Pro-Text-Light.otf", 20.0)!!
+ val lightItalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-LightItalic.otf", 20.0)!!
+ val medium = Font.loadFont("file:resources/fonts/SF-Pro-Text-Medium.otf", 12.0)!!
+ val mediumItalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-MediumItalic.otf", 20.0)!!
+ val regular = Font.loadFont("file:resources/fonts/SF-Pro-Text-Regular.otf", 12.0)!!
+ val regularItalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-RegularItalic.otf", 20.0)!!
+ val semibold = Font.loadFont("file:resources/fonts/SF-Pro-Text-Semibold.otf", 20.0)!!
+ val semibolditalic = Font.loadFont("file:resources/fonts/SF-Pro-Text-SemiboldItalic.otf", 20.0)!!
+}
+
+lateinit var window: Stage
+
+class GUI : Application() {
+
+ val url = "jdbc:mysql://localhost:3306/"
+ val database = "scheduler"
+
+ override fun start(primaryStage: Stage) {
+ window = primaryStage
+
+ window.scene = Logger.scene
+ window.title = "Vision"
+ window.show()
+ }
+
+ companion object {
+ @JvmStatic
+ fun main(args: Array) {
+ launch(GUI::class.java)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Welcome.kt b/src/Welcome.kt
new file mode 100644
index 0000000..c356313
--- /dev/null
+++ b/src/Welcome.kt
@@ -0,0 +1,34 @@
+import javafx.geometry.Insets
+import javafx.geometry.Pos
+import javafx.scene.Scene
+import javafx.scene.layout.GridPane
+import javafx.scene.text.Text
+
+// Main menu:
+// Modify user account data
+// Menu bar include account, appointment, setting, and help
+object Welcome {
+ data class User(val email: String, val password: String) {}
+ lateinit var user: User
+
+ val scene by lazy { scene() }
+
+ private fun scene(): Scene {
+
+ val gridPane = GridPane()
+ gridPane.alignment = Pos.CENTER
+ gridPane.hgap = 10.0
+ gridPane.vgap = 10.0
+ gridPane.padding = Insets(25.0, 25.0, 25.0, 25.0)
+
+ val email = Text(user.email)
+ email.font = GUIFont.bold
+ gridPane.add(email, 0, 0)
+
+ val password = Text(user.password)
+ password.font = GUIFont.bold
+ gridPane.add(password, 1, 0)
+
+ return Scene(gridPane, 150.0, 50.0)
+ }
+}
\ No newline at end of file