Index: frontend/src/pages/Register/Register.jsx
===================================================================
--- frontend/src/pages/Register/Register.jsx	(revision 6fa5831b8e2ae83049ad95bf899fba2f0a35fbf4)
+++ frontend/src/pages/Register/Register.jsx	(revision 37307aadda57d1e5b86180b9b2b8a6318ec36095)
@@ -21,9 +21,26 @@
     setError("");
     setIsSubmitting(true);
+
+    const normalizedEmail = email.trim().toLowerCase();
+    const normalizedUsername = username.trim();
+    const normalizedPassword = password;
+
+    if (normalizedUsername.length < 3 || normalizedUsername.length > 50) {
+      setError("Username must be between 3 and 50 characters");
+      setIsSubmitting(false);
+      return;
+    }
+
+    if (normalizedPassword.length < 6) {
+      setError("Password must be at least 6 characters");
+      setIsSubmitting(false);
+      return;
+    }
+
     try {
       const res = await api.post("/auth/register", {
-        email,
-        username,
-        password,
+        email: normalizedEmail,
+        username: normalizedUsername,
+        password: normalizedPassword,
       });
       localStorage.setItem("authToken", res.data.token);
@@ -38,7 +55,9 @@
       navigate("/dashboard");
     } catch (err) {
+      const fieldErrors = err?.response?.data?.errors ?? {};
+      const firstFieldError = Object.values(fieldErrors)[0];
       const message =
+        firstFieldError ||
         err?.response?.data?.message ||
-        Object.values(err?.response?.data?.errors ?? {})[0] ||
         "Registration failed";
       setError(message);
@@ -75,4 +94,6 @@
           onChange={(e) => setUsername(e.target.value)}
           autoComplete="username"
+          minLength={3}
+          maxLength={50}
           required
         />
@@ -86,4 +107,5 @@
           onChange={(e) => setPassword(e.target.value)}
           autoComplete="new-password"
+          minLength={6}
           required
         />
