# Weekly Individual Assignment 06

Vinka Alrezky As - 2206820200

A simple Django web app that validates form inputs and instantly shows errors and feedback.

## Features

### Form Fields
- Username and Email (Django's built-in User model)
- Password with confirmation (Django's UserCreationForm)
- Phone Number
  - Must start with country code
  - Length: 8-15 digits
  - Format: +[country code][number]
- Birth Date
  - Selectable date with dropdown menus
  - Minimum age validation: 12 years old
  - Year range: 1900-2025
- Blog URL
  - Must be a valid URL format
- Description
  - Minimum length: 5 characters
  - Maximum length: 1000 characters
- Chassis Number
  - Must be 15 characters
  - Format: 5 letters followed by 10 alphanumeric characters
- SIM Number
  - Must be 16 digits
  - Numbers only

### Validation Features
- Real-time error display
- Form reset after successful submission
- Submitted data display in a separate panel
- All fields are required
- Custom validation messages

## Setup and Installation

1. Clone the repository
```bash
git clone https://gitlab.cs.ui.ac.id/vinka.alrezky/pkpl-individu-2206820200-vinka-alrezky-as.git
```
```bash
cd <<project_folder>>
```

2. Create and activate virtual environment
```bash
python -m venv env
source env/bin/activate  # On Windows use: env\Scripts\activate
```

3. Install dependencies
```bash
pip install requirements.txt
```

4. Apply migrations
```bash
python manage.py makemigrations
python manage.py migrate
```

5. Run the development server
```bash
python manage.py runserver
```

6. Access the application at `http://localhost:8000`



## Form Validation Rules

### Phone Number
- Must start with country code (+XX)
- Total length: 8-15 digits
- Example: +628123456789

### Birth Date
- Three dropdown menus (day, month, year)
- Must be at least 12 years old
- Year range: 1900-2025

### Chassis Number
- Exactly 15 characters
- First 5 characters must be capital letters
- Remaining 10 characters can be letters or numbers
- Example: ABCDE1234567890

### SIM Number
- Exactly 16 digits
- Numbers only
- Example: 1234567890123456