diff --git a/back/db.sqlite3 b/back/db.sqlite3
index 43dd0a7..85281da 100644
Binary files a/back/db.sqlite3 and b/back/db.sqlite3 differ
diff --git a/back/reimbursinator/settings.py b/back/reimbursinator/settings.py
index 503958c..8725757 100644
--- a/back/reimbursinator/settings.py
+++ b/back/reimbursinator/settings.py
@@ -45,6 +45,7 @@ INSTALLED_APPS = [
     'rest_framework.authtoken',
     'allauth',
     'allauth.account',
+    'allauth.socialaccount',
     'rest_auth',
     'rest_auth.registration',
     'corsheaders',
@@ -159,3 +160,14 @@ STATIC_URL = '/static/'
 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
 
 SITE_ID = 1
+
+# Registration
+
+ACCOUNT_USER_MODEL_USERNAME_FIELD = 'username'
+ACCOUNT_EMAIL_REQUIRED = True
+ACCOUNT_USERNAME_REQUIRED = False
+ACCOUNT_AUTHENTICATION_METHOD = 'email'
+
+REST_AUTH_REGISTER_SERIALIZERS = {
+        'REGISTER_SERIALIZER': 'users.serializers.RegisterSerializer',
+}
diff --git a/back/reimbursinator/urls.py b/back/reimbursinator/urls.py
index b39c33f..7a33b6d 100644
--- a/back/reimbursinator/urls.py
+++ b/back/reimbursinator/urls.py
@@ -14,5 +14,6 @@ urlpatterns = [
     path('api/v1/', include("backend.urls")),
     path('api/v1/account/', include('rest_auth.urls')),
     path('api/v1/account/register/', include('rest_auth.registration.urls')),
+    # path('api/v1/account/register/', NameRegistrationView.as_view()),
     path('api-auth/', include('rest_framework.urls')),
 ]
diff --git a/back/users/serializers.py b/back/users/serializers.py
new file mode 100644
index 0000000..91416a4
--- /dev/null
+++ b/back/users/serializers.py
@@ -0,0 +1,47 @@
+from rest_framework import serializers
+from allauth.account import app_settings as allauth_settings
+from allauth.utils import email_address_exists
+from allauth.account.adapter import get_adapter
+from allauth.account.utils import setup_user_email
+from django.utils.translation import gettext as _
+
+class RegisterSerializer(serializers.Serializer):
+    email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
+    first_name = serializers.CharField(required=True, write_only=True)
+    last_name = serializers.CharField(required=True, write_only=True)
+    password1 = serializers.CharField(required=True, write_only=True)
+    password2 = serializers.CharField(required=True, write_only=True)
+
+    def validate_email(self, email):
+        email = get_adapter().clean_email(email)
+        if allauth_settings.UNIQUE_EMAIL:
+            if email and email_address_exists(email):
+                raise serializers.ValidationError(
+                    _("A user is already registered with this e-mail address."))
+        return email
+
+    def validate_password1(self, password):
+        return get_adapter().clean_password(password)
+
+    def validate(self, data):
+        if data['password1'] != data['password2']:
+            raise serializers.ValidationError(
+                _("The two password fields didn't match."))
+        return data
+
+    def get_cleaned_data(self):
+        return {
+            'first_name': self.validated_data.get('first_name', ''),
+            'last_name': self.validated_data.get('last_name', ''),
+            'password1': self.validated_data.get('password1', ''),
+            'email': self.validated_data.get('email', ''),
+        }
+
+    def save(self, request):
+        adapter = get_adapter()
+        user = adapter.new_user(request)
+        self.cleaned_data = self.get_cleaned_data()
+        adapter.save_user(request, user, self)
+        setup_user_email(request, user, [])
+        user.save()
+        return user
diff --git a/back/users/views.py b/back/users/views.py
index 91ea44a..2536b37 100644
--- a/back/users/views.py
+++ b/back/users/views.py
@@ -1,3 +1 @@
 from django.shortcuts import render
-
-# Create your views here.