diff --git a/README.md b/README.md
index 6dbeaf2e14b33512544488d79227272df624c1c9..70fce03cf58aa37235ccd46b0eb98a4288213c60 100644
--- a/README.md
+++ b/README.md
@@ -1,93 +1,4 @@
-# PKPL-Individu-2306165805-Anindya Nabila Syifa
+## 🔐 Credential Akun Admin
 
-
-
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.cs.ui.ac.id/anindya.nabila/pkpl-individu-2306165805-anindya-nabila-syifa.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.cs.ui.ac.id/anindya.nabila/pkpl-individu-2306165805-anindya-nabila-syifa/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+- **Username:** admin  
+- **Password:** Admin@2025
\ No newline at end of file
diff --git a/main/admin.py b/main/admin.py
index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..9768fe5ea6e53af99ef1978c124f98acedef8779 100644
--- a/main/admin.py
+++ b/main/admin.py
@@ -1,3 +1,20 @@
 from django.contrib import admin
+from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
+from .models import User
 
-# Register your models here.
+class UserAdmin(BaseUserAdmin):
+    fieldsets = BaseUserAdmin.fieldsets + (
+        ('Informasi Tambahan', {
+            'fields': (
+                'name',
+                'date_of_birth',
+                'phone_number',
+                'blog_url',
+                'self_description',
+                'entry_year',
+                'study_program_code',
+            ),
+        }),
+    )
+
+admin.site.register(User, UserAdmin)
diff --git a/main/forms.py b/main/forms.py
index 4a653a2d1abbdca51c41ff816d4f6e83ff54d2b4..d91fdc3ca2f843128cdc97711d947f1bca09cea9 100644
--- a/main/forms.py
+++ b/main/forms.py
@@ -6,7 +6,6 @@ import re
 from .models import User
 
 class UserRegistrationForm(forms.ModelForm):
-    # Password field with validation
     password = forms.CharField(
         widget=forms.PasswordInput(),
         validators=[
@@ -16,12 +15,12 @@ class UserRegistrationForm(forms.ModelForm):
             )
         ]
     )
-    
+
     class Meta:
         model = User
-        fields = ['name', 'password', 'date_of_birth', 
-                 'phone_number', 'email', 'blog_url', 'self_description', 
-                 'entry_year', 'study_program_code']
+        fields = ['username', 'name', 'password', 'date_of_birth',
+                  'phone_number', 'email', 'blog_url', 'self_description',
+                  'entry_year', 'study_program_code']
         widgets = {
             'date_of_birth': forms.DateInput(attrs={'type': 'date'}),
             'self_description': forms.Textarea(attrs={'rows': 4}),
diff --git a/main/main.html b/main/main.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/main/models.py b/main/models.py
index c68f3880ec5ed9f3127409ba87c692db565bdde9..b953c4fbec4660ba3020acb676e865f3ea684969 100644
--- a/main/models.py
+++ b/main/models.py
@@ -76,4 +76,7 @@ class User(AbstractUser):
                 from django.core.exceptions import ValidationError
                 raise ValidationError({'date_of_birth': f'Usia pengguna minimal {min_age} tahun'})
         
-        super().clean()
\ No newline at end of file
+        super().clean()
+
+    REQUIRED_FIELDS = ['email', 'date_of_birth', 'phone_number', 'blog_url', 
+                       'self_description', 'entry_year', 'study_program_code', 'name']
\ No newline at end of file
diff --git a/main/templates/admin_dashboard.html b/main/templates/admin_dashboard.html
new file mode 100644
index 0000000000000000000000000000000000000000..a874ab40df5782272d1f606ffe2a04c08a414c0f
--- /dev/null
+++ b/main/templates/admin_dashboard.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<html lang="id">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Admin Dashboard</title>
+    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
+    <style>
+        :root {
+            --primary-color: #4361ee;
+            --success-color: #4cc9f0;
+            --danger-color: #ef476f;
+            --dark-color: #2b2d42;
+            --light-color: #f8f9fa;
+            --bg-color: #f1faee;
+            --success-bg: #d4edda;
+            --success-border: #c3e6cb;
+            --success-text: #155724;
+        }
+        * {
+            margin: 0;
+            padding: 0;
+            box-sizing: border-box;
+        }
+        body {
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background-color: var(--bg-color);
+            color: var(--dark-color);
+            line-height: 1.6;
+        }
+        .container {
+            max-width: 800px;
+            margin: 2rem auto;
+            padding: 2rem;
+            background-color: white;
+            border-radius: 12px;
+            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
+        }
+        header {
+            margin-bottom: 2rem;
+            text-align: center;
+        }
+        .success-icon {
+            font-size: 4rem;
+            color: #48bb78;
+            margin-bottom: 1rem;
+            animation: pulse 2s infinite;
+        }
+        @keyframes pulse {
+            0% { transform: scale(1); }
+            50% { transform: scale(1.1); }
+            100% { transform: scale(1); }
+        }
+        h1 {
+            color: var(--success-text);
+            margin-bottom: 0.5rem;
+            font-size: 2rem;
+        }
+        .subtitle {
+            color: #666;
+            font-size: 1rem;
+            margin-bottom: 1.5rem;
+        }
+        .card {
+            background-color: white;
+            border-radius: 10px;
+            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
+            overflow: hidden;
+            margin-bottom: 2rem;
+        }
+        .card-header {
+            background-color: var(--primary-color);
+            color: white;
+            padding: 1rem;
+            font-weight: bold;
+            font-size: 1.2rem;
+        }
+        .card-body {
+            padding: 0;
+        }
+        .info-list {
+            list-style: none;
+        }
+        .info-item {
+            padding: 1rem;
+            display: flex;
+            border-bottom: 1px solid #eee;
+        }
+        .info-item:last-child {
+            border-bottom: none;
+        }
+        .info-label {
+            width: 30%;
+            font-weight: 600;
+            color: var(--dark-color);
+            display: flex;
+            align-items: center;
+        }
+        .info-label i {
+            margin-right: 10px;
+            color: var(--primary-color);
+            width: 24px;
+            text-align: center;
+        }
+        .info-value {
+            width: 70%;
+            word-break: break-word;
+        }
+        .button-group {
+            display: flex;
+            justify-content: center;
+            gap: 1rem;
+            margin-top: 2rem;
+        }
+        .btn {
+            padding: 12px 24px;
+            border: none;
+            border-radius: 6px;
+            font-size: 1rem;
+            font-weight: 600;
+            cursor: pointer;
+            display: inline-flex;
+            align-items: center;
+            justify-content: center;
+            min-width: 150px;
+        }
+        .btn i {
+            margin-right: 8px;
+        }
+        .btn-outline {
+            background-color: transparent;
+            color: var(--primary-color);
+            border: 2px solid var(--primary-color);
+        }
+        .btn-outline:hover {
+            background-color: rgba(67, 97, 238, 0.1);
+            transform: translateY(-2px);
+        }
+        .footer {
+            text-align: center;
+            margin-top: 2rem;
+            padding-top: 1rem;
+            border-top: 1px solid #eee;
+            color: #777;
+            font-size: 0.9rem;
+        }
+    </style>
+</head>
+<body>
+    <div class="container">
+        <header>
+            <div class="success-icon">
+                <i class="fas fa-user-shield"></i>
+            </div>
+            <h1>Dashboard Admin</h1>
+            <p class="subtitle">Anda login sebagai admin: <strong>{{ user.username }}</strong></p>
+        </header>
+
+        <div class="card">
+            <div class="card-header">
+                <i class="fas fa-id-card"></i> Data Profil Admin
+            </div>
+            <div class="card-body">
+                <ul class="info-list">
+                    <li class="info-item"><div class="info-label"><i class="fas fa-user"></i> Nama</div><div class="info-value">{{ user.name }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-envelope"></i> Email</div><div class="info-value">{{ user.email }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-calendar-alt"></i> Tanggal Lahir</div><div class="info-value">{{ user.date_of_birth }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-phone"></i> Nomor HP</div><div class="info-value">{{ user.phone_number }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-globe"></i> URL Blog</div><div class="info-value"><a href="{{ user.blog_url }}" target="_blank">{{ user.blog_url }}</a></div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-calendar-check"></i> Tahun Masuk</div><div class="info-value">{{ user.entry_year }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-code"></i> Kode Prodi</div><div class="info-value">{{ user.study_program_code }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-comment-alt"></i> Deskripsi</div><div class="info-value">{{ user.self_description }}</div></li>
+                </ul>
+            </div>
+        </div>
+
+        <div class="button-group">
+            <form method="post" action="{% url 'logout' %}">
+                {% csrf_token %}
+                <button type="submit" class="btn btn-outline">
+                    <i class="fas fa-sign-out-alt"></i> Logout
+                </button>
+            </form>
+        </div>
+
+        <div class="footer">
+            <p>© 2025 Sistem Pendaftaran Pengguna. Semua hak dilindungi.</p>
+        </div>
+    </div>
+</body>
+</html>
+
diff --git a/main/templates/login.html b/main/templates/login.html
new file mode 100644
index 0000000000000000000000000000000000000000..fad03fd7bf3b611d0a4c9e1719d4fdafb748355d
--- /dev/null
+++ b/main/templates/login.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="id">
+<head>
+    <meta charset="UTF-8">
+    <title>Login Pengguna</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
+    <style>
+        body {
+            background-color: #f1f5f9;
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            height: 100vh;
+        }
+        .login-container {
+            background-color: white;
+            padding: 2rem;
+            border-radius: 12px;
+            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
+            width: 100%;
+            max-width: 400px;
+        }
+        h2 {
+            text-align: center;
+            margin-bottom: 1.5rem;
+            color: #2b2d42;
+        }
+        .form-group {
+            margin-bottom: 1rem;
+        }
+        label {
+            display: block;
+            margin-bottom: 0.3rem;
+            font-weight: bold;
+            color: #333;
+        }
+        input {
+            width: 100%;
+            padding: 10px;
+            border-radius: 6px;
+            border: 1px solid #ccc;
+            font-size: 1rem;
+        }
+        button {
+            width: 100%;
+            padding: 12px;
+            background-color: #4361ee;
+            color: white;
+            border: none;
+            border-radius: 6px;
+            font-weight: bold;
+            font-size: 1rem;
+            cursor: pointer;
+            transition: 0.3s;
+        }
+        button:hover {
+            background-color: #364fc7;
+        }
+        .error {
+            color: red;
+            font-size: 0.9rem;
+            margin-bottom: 1rem;
+            text-align: center;
+        }
+        .register-link {
+            text-align: center;
+            margin-top: 1rem;
+            font-size: 0.95rem;
+        }
+        .register-link a {
+            color: #4361ee;
+            text-decoration: none;
+            font-weight: bold;
+        }
+        .register-link a:hover {
+            text-decoration: underline;
+        }
+    </style>
+</head>
+<body>
+    <div class="login-container">
+        <h2>Login</h2>
+
+        {% if error %}
+            <div class="error">{{ error }}</div>
+        {% endif %}
+
+        <form method="post">
+            {% csrf_token %}
+            <div class="form-group">
+                <label for="username">Username</label>
+                <input type="text" name="username" id="username" required placeholder="Masukkan username">
+            </div>
+            <div class="form-group">
+                <label for="password">Password</label>
+                <input type="password" name="password" id="password" required placeholder="Masukkan password">
+            </div>
+            <button type="submit">Login</button>
+        </form>
+
+        <div class="register-link">
+            Belum punya akun?
+            <a href="{% url 'register' %}">Daftar di sini</a>
+        </div>
+    </div>
+</body>
+</html>
diff --git a/main/templates/register.html b/main/templates/register.html
index 6e58c8a61add8e75328cb62d84ccf22f98d8e5d9..7cfd6bf39fcf71ed16ac98ab12a4e82352d13465 100644
--- a/main/templates/register.html
+++ b/main/templates/register.html
@@ -313,6 +313,17 @@
             </div>
             
             <div class="form-row">
+                <!-- Username -->
+                <div class="form-group">
+                    <label for="{{ form.username.id_for_label }}">Username</label>
+                    <div class="input-group">
+                        <i class="fas fa-user-tag"></i>
+                        {{ form.username }}
+                    </div>
+                    <div class="field-help">Minimal 3 karakter, unik</div>
+                    {{ form.username.errors }}
+                </div>
+                
                 <!-- Password -->
                 <div class="form-group">
                     <label for="{{ form.password.id_for_label }}">Password</label>
diff --git a/main/templates/success.html b/main/templates/success.html
index 6dc6fcecbfd75992417f801e749535d56e70f08e..7c4b6ace80fd16e6bfedcab730cf3de960cb9a71 100644
--- a/main/templates/success.html
+++ b/main/templates/success.html
@@ -334,13 +334,22 @@
             <button onclick="window.print()" class="btn print-button">
                 <i class="fas fa-print"></i> Cetak
             </button>
+        
             <a href="/" class="btn btn-primary">
                 <i class="fas fa-home"></i> Kembali ke Beranda
             </a>
+        
             <button onclick="copyToClipboard()" class="btn btn-outline">
                 <i class="fas fa-copy"></i> Salin Data
             </button>
-        </div>
+        
+            <form method="post" action="{% url 'logout' %}">
+                {% csrf_token %}
+                <button type="submit" class="btn btn-outline">
+                    <i class="fas fa-sign-out-alt"></i> Logout
+                </button>
+            </form>
+        </div>        
         
         <div class="footer">
             <p>© 2025 Sistem Pendaftaran Pengguna. Semua hak dilindungi.</p>
diff --git a/main/templates/user_dashboard.html b/main/templates/user_dashboard.html
new file mode 100644
index 0000000000000000000000000000000000000000..e66b4891d9e4c5fa9d165ecede53f4a751aa2c6c
--- /dev/null
+++ b/main/templates/user_dashboard.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html>
+<html lang="id">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Dashboard Pengguna</title>
+    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
+    <style>
+        :root {
+            --primary-color: #4361ee;
+            --success-color: #4cc9f0;
+            --danger-color: #ef476f;
+            --dark-color: #2b2d42;
+            --light-color: #f8f9fa;
+            --bg-color: #f1faee;
+            --success-bg: #d4edda;
+            --success-border: #c3e6cb;
+            --success-text: #155724;
+        }
+        * {
+            margin: 0;
+            padding: 0;
+            box-sizing: border-box;
+        }
+        body {
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background-color: var(--bg-color);
+            color: var(--dark-color);
+            line-height: 1.6;
+        }
+        .container {
+            max-width: 800px;
+            margin: 2rem auto;
+            padding: 2rem;
+            background-color: white;
+            border-radius: 12px;
+            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
+        }
+        header {
+            margin-bottom: 2rem;
+            text-align: center;
+        }
+        .success-icon {
+            font-size: 4rem;
+            color: #48bb78;
+            margin-bottom: 1rem;
+            animation: pulse 2s infinite;
+        }
+        @keyframes pulse {
+            0% { transform: scale(1); }
+            50% { transform: scale(1.1); }
+            100% { transform: scale(1); }
+        }
+        h1 {
+            color: var(--success-text);
+            margin-bottom: 0.5rem;
+            font-size: 2rem;
+        }
+        .subtitle {
+            color: #666;
+            font-size: 1rem;
+            margin-bottom: 1.5rem;
+        }
+        .card {
+            background-color: white;
+            border-radius: 10px;
+            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
+            overflow: hidden;
+            margin-bottom: 2rem;
+        }
+        .card-header {
+            background-color: var(--primary-color);
+            color: white;
+            padding: 1rem;
+            font-weight: bold;
+            font-size: 1.2rem;
+        }
+        .card-body {
+            padding: 0;
+        }
+        .info-list {
+            list-style: none;
+        }
+        .info-item {
+            padding: 1rem;
+            display: flex;
+            border-bottom: 1px solid #eee;
+        }
+        .info-item:last-child {
+            border-bottom: none;
+        }
+        .info-label {
+            width: 30%;
+            font-weight: 600;
+            color: var(--dark-color);
+            display: flex;
+            align-items: center;
+        }
+        .info-label i {
+            margin-right: 10px;
+            color: var(--primary-color);
+            width: 24px;
+            text-align: center;
+        }
+        .info-value {
+            width: 70%;
+            word-break: break-word;
+        }
+        .button-group {
+            display: flex;
+            justify-content: center;
+            gap: 1rem;
+            margin-top: 2rem;
+        }
+        .btn {
+            padding: 12px 24px;
+            border: none;
+            border-radius: 6px;
+            font-size: 1rem;
+            font-weight: 600;
+            cursor: pointer;
+            display: inline-flex;
+            align-items: center;
+            justify-content: center;
+            min-width: 150px;
+        }
+        .btn i {
+            margin-right: 8px;
+        }
+        .btn-outline {
+            background-color: transparent;
+            color: var(--primary-color);
+            border: 2px solid var(--primary-color);
+        }
+        .btn-outline:hover {
+            background-color: rgba(67, 97, 238, 0.1);
+            transform: translateY(-2px);
+        }
+        .footer {
+            text-align: center;
+            margin-top: 2rem;
+            padding-top: 1rem;
+            border-top: 1px solid #eee;
+            color: #777;
+            font-size: 0.9rem;
+        }
+    </style>
+</head>
+<body>
+    <div class="container">
+        <header>
+            <div class="success-icon">
+                <i class="fas fa-user"></i>
+            </div>
+            <h1>Dashboard Pengguna</h1>
+            <p class="subtitle">Anda login sebagai pengguna: <strong>{{ user.username }}</strong></p>
+        </header>
+
+        <div class="card">
+            <div class="card-header">
+                <i class="fas fa-id-card"></i> Data Profil Pengguna
+            </div>
+            <div class="card-body">
+                <ul class="info-list">
+                    <li class="info-item"><div class="info-label"><i class="fas fa-user"></i> Nama</div><div class="info-value">{{ user.name }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-envelope"></i> Email</div><div class="info-value">{{ user.email }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-calendar-alt"></i> Tanggal Lahir</div><div class="info-value">{{ user.date_of_birth }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-phone"></i> Nomor HP</div><div class="info-value">{{ user.phone_number }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-globe"></i> URL Blog</div><div class="info-value"><a href="{{ user.blog_url }}" target="_blank">{{ user.blog_url }}</a></div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-calendar-check"></i> Tahun Masuk</div><div class="info-value">{{ user.entry_year }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-code"></i> Kode Prodi</div><div class="info-value">{{ user.study_program_code }}</div></li>
+                    <li class="info-item"><div class="info-label"><i class="fas fa-comment-alt"></i> Deskripsi</div><div class="info-value">{{ user.self_description }}</div></li>
+                </ul>
+            </div>
+        </div>
+
+        <div class="button-group">
+            <form method="post" action="{% url 'logout' %}">
+                {% csrf_token %}
+                <button type="submit" class="btn btn-outline">
+                    <i class="fas fa-sign-out-alt"></i> Logout
+                </button>
+            </form>
+        </div>
+
+        <div class="footer">
+            <p>© 2025 Sistem Pendaftaran Pengguna. Semua hak dilindungi.</p>
+        </div>
+    </div>
+</body>
+</html>
diff --git a/main/urls.py b/main/urls.py
index b9cb0faff8217a8e41eae8771de75eb4878a0d77..6d98787d99b3cc660a3a08776705a6bdd9da80dc 100644
--- a/main/urls.py
+++ b/main/urls.py
@@ -2,6 +2,10 @@ from django.urls import path
 from . import views
 
 urlpatterns = [
+    path('', views.user_login, name='home'),
+    path('login/', views.user_login, name='login'),
+    path('logout/', views.user_logout, name='logout'),
     path('register/', views.register, name='register'),
-    path('', views.register, name='home'),
+    path('admin-dashboard/', views.admin_dashboard, name='admin_dashboard'),
+    path('user-dashboard/', views.user_dashboard, name='user_dashboard'),
 ]
\ No newline at end of file
diff --git a/main/views.py b/main/views.py
index b4ce1eb87e14575c2b0e0fe55cd4f9c560247f41..d32e65b95c9c700a7e53bb1aaa3f15cd9dd5781a 100644
--- a/main/views.py
+++ b/main/views.py
@@ -1,17 +1,62 @@
 from django.shortcuts import render, redirect
-from django.contrib import messages
 from .forms import UserRegistrationForm
+from django.contrib.auth import authenticate, login, logout
+from django.shortcuts import render
+from django.contrib.auth.hashers import make_password
+from django.contrib.auth.decorators import user_passes_test
+from django.contrib.auth.decorators import login_required
 
 def register(request):
     if request.method == 'POST':
         form = UserRegistrationForm(request.POST)
         if form.is_valid():
             user_data = form.cleaned_data
-            # Hapus field password dari output untuk keamanan
             if 'password' in user_data:
                 del user_data['password']
             return render(request, 'success.html', {'user_data': user_data})
     else:
         form = UserRegistrationForm()
     
-    return render(request, 'register.html', {'form': form})
\ No newline at end of file
+    return render(request, 'register.html', {'form': form})
+
+def user_login(request):
+    if request.method == 'POST':
+        username = request.POST.get('username')
+        password = request.POST.get('password')
+        user = authenticate(request, username=username, password=password)
+
+        if user:
+            login(request, user)
+            if user.is_superuser:  # jika admin
+                return redirect('admin_dashboard')
+            else:  # jika user biasa
+                return redirect('user_dashboard')
+        else:
+            return render(request, 'login.html', {'error': 'Username atau password salah'})
+    
+    return render(request, 'login.html')
+
+def user_logout(request):
+    logout(request)
+    return redirect('login')
+
+def register(request):
+    if request.method == 'POST':
+        form = UserRegistrationForm(request.POST)
+        if form.is_valid():
+            user = form.save(commit=False)
+            user.password = make_password(form.cleaned_data['password'])  # Enkripsi password
+            user.save()
+            return render(request, 'success.html', {'user_data': form.cleaned_data})
+    else:
+        form = UserRegistrationForm()
+    
+    return render(request, 'register.html', {'form': form})
+
+@user_passes_test(lambda u: u.is_superuser, login_url='login')
+def admin_dashboard(request):
+    return render(request, 'admin_dashboard.html', {'user': request.user})
+
+@login_required(login_url='login')
+def user_dashboard(request):
+    return render(request, 'user_dashboard.html', {'user': request.user})
\ No newline at end of file
diff --git a/weekly_individual_assignment/urls.py b/weekly_individual_assignment/urls.py
index 83e71c36ffde43114fd45b5b0d8217d703e65a4e..e6ac4f8cd5c6532729cd6c8abacba6cde2689c6b 100644
--- a/weekly_individual_assignment/urls.py
+++ b/weekly_individual_assignment/urls.py
@@ -2,6 +2,6 @@ from django.contrib import admin
 from django.urls import path, include
 
 urlpatterns = [
-    path('admin/', admin.site.urls),
-    path('', include('main.urls')),
-]
\ No newline at end of file
+    path('admin/', admin.site.urls),      # Akses ke Django Admin
+    path('', include('main.urls')),       # Include semua URL dari app `main`
+]