diff --git a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
index 0b4612b9c2d47fbf2d56c5a8a89eb8b1b2fdeac2..1fafd6d3e42a1f563bb64d9e1493b8b03f5cabc4 100644
--- a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
+++ b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
@@ -2,11 +2,13 @@ package com.futo.circles.feature.validate_email
 
 import android.os.Bundle
 import android.view.View
+import androidx.core.widget.doAfterTextChanged
 import androidx.fragment.app.Fragment
 import by.kirich1409.viewbindingdelegate.viewBinding
 import com.futo.circles.R
 import com.futo.circles.core.HasLoadingState
 import com.futo.circles.databinding.ValidateEmailFragmentBinding
+import com.futo.circles.extensions.showDialog
 import org.koin.androidx.viewmodel.ext.android.viewModel
 
 class ValidateEmailFragment : Fragment(R.layout.validate_email_fragment), HasLoadingState {
@@ -17,7 +19,39 @@ class ValidateEmailFragment : Fragment(R.layout.validate_email_fragment), HasLoa
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
+        setupViews()
+        setupObservers()
+    }
+
+    private fun setupViews() {
+        with(binding) {
+            tilEmail.editText?.doAfterTextChanged {
+                it?.let { btnSendCode.setButtonEnabled(it.isNotEmpty()) }
+            }
+            tilEmail.setEndIconOnClickListener {
+                showDialog(
+                    R.string.email,
+                    R.string.email_usage_explanation
+                )
+            }
+            tilValidationCode.setEndIconOnClickListener {
+                showDialog(
+                    R.string.validation_code,
+                    R.string.validation_code_explanation
+                )
+            }
+            btnSendCode.setOnClickListener {
+                startLoading(btnSendCode)
+                viewModel.sendCode(tilEmail.editText?.text?.toString()?.trim() ?: "")
+            }
+            btnValidate.setOnClickListener {
+                startLoading(btnValidate)
+                viewModel.validateEmail(tilValidationCode.editText?.text?.toString()?.trim() ?: "")
+            }
+        }
+    }
 
+    private fun setupObservers() {
     }
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailViewModel.kt b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailViewModel.kt
index 8832b2e8bfb3fb764a57cd695e513a7bbaff1e94..e0f61b8e3221128fc4ebc04de8226046d4b66742 100644
--- a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailViewModel.kt
+++ b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailViewModel.kt
@@ -7,5 +7,13 @@ class ValidateEmailViewModel(
     private val dataSource: ValidateEmailDataSource
 ) : ViewModel() {
 
+    fun sendCode(email: String) {
+
+    }
+
+    fun validateEmail(code: String) {
+
+    }
+
 
 }
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index aa19f981f7760907ab397c51480a47fe2d75c5c7..7e2b862c836304a08523480ea46f0b7e8baf31f7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -71,6 +71,8 @@
     <string name="email">Email</string>
     <string name="validation_code">Validation code</string>
     <string name="send_validation_code">Send validation code</string>
+    <string name="email_usage_explanation">Must be a currently valid and active address.\n\nDon\'t worry - we will only use this address for security and other alerts about your account. We don't send spam, and we don't sell your address.</string>
+    <string name="validation_code_explanation">We sent a 6-digit code to your email address to validate your account.\n\nEnter the code here to verify that this address belongs to you.</string>
 
     <plurals name="member_plurals">
         <item quantity="one">%d member</item>