diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..a7c0ddd2778159eaacb709b091530123ff5885e6
--- /dev/null
+++ b/core/migrations/0001_initial.py
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.17 on 2019-11-15 12:53
+from __future__ import unicode_literals
+
+import core.lib.validators
+import core.models.accounts
+from django.conf import settings
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Application',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('cover_letter', models.TextField(blank=True, null=True)),
+                ('status', models.IntegerField(default=0)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Company',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('created', models.DateTimeField(auto_now_add=True)),
+                ('updated', models.DateTimeField(auto_now=True)),
+                ('description', models.TextField()),
+                ('status', models.IntegerField(default=0)),
+                ('logo', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_company_logo_file_path, validators=[core.lib.validators.validate_image_file_extension])),
+                ('address', models.CharField(blank=True, max_length=1000, null=True)),
+                ('category', models.CharField(default=b'Belum ada kategori perusahaan', max_length=140)),
+                ('website', models.CharField(default=b'Belum ada link website', max_length=100)),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['-updated'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Feedback',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('created', models.DateTimeField(auto_now_add=True)),
+                ('title', models.CharField(blank=True, default=b'', max_length=100)),
+                ('content', models.TextField()),
+            ],
+            options={
+                'ordering': ['created'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Student',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('created', models.DateTimeField(auto_now_add=True)),
+                ('updated', models.DateTimeField(auto_now=True)),
+                ('npm', models.IntegerField(unique=True, validators=[core.lib.validators.validate_npm])),
+                ('resume', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_resume_file_path, validators=[django.core.validators.FileExtensionValidator([b'pdf'])])),
+                ('sertifikat', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_sertifikat_file_path, validators=[core.lib.validators.validate_document_file_extension])),
+                ('phone_number', models.CharField(blank=True, db_index=True, max_length=100, null=True, validators=[django.core.validators.RegexValidator(b'^0\\d{1,11}$')])),
+                ('gender', models.CharField(blank=True, max_length=30, null=True)),
+                ('birth_place', models.CharField(blank=True, max_length=30, null=True)),
+                ('birth_date', models.DateField(blank=True, null=True)),
+                ('major', models.CharField(blank=True, max_length=30, null=True)),
+                ('batch', models.CharField(blank=True, max_length=4, null=True)),
+                ('show_transcript', models.BooleanField(default=False)),
+                ('photo', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_photo_file_path, validators=[django.core.validators.FileExtensionValidator([b'jpg', b'jpeg', b'png'])])),
+                ('self_description', models.CharField(blank=True, db_index=True, max_length=500, null=True)),
+                ('portfolio_link', models.URLField(blank=True, null=True)),
+                ('linkedin_url', models.URLField(blank=True, null=True)),
+                ('hackerrank_url', models.URLField(blank=True, null=True)),
+                ('website_url', models.URLField(blank=True, null=True)),
+                ('work_experience', models.CharField(blank=True, max_length=500, null=True)),
+                ('region', models.CharField(blank=True, max_length=30, null=True)),
+                ('alamat', models.CharField(blank=True, max_length=50, null=True)),
+                ('skills', models.CharField(blank=True, max_length=50, null=True)),
+                ('recommendations', models.CharField(blank=True, max_length=500, null=True)),
+                ('ui_ux_portofolio', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_ui_ux_portofolio_file_path, validators=[core.lib.validators.validate_document_file_extension])),
+                ('latest_work', models.CharField(blank=True, max_length=100, null=True)),
+                ('latest_work_desc', models.TextField(blank=True, null=True)),
+                ('github_url', models.URLField(blank=True, null=True)),
+                ('intro', models.CharField(blank=True, max_length=50, null=True)),
+                ('expected_salary', models.CharField(blank=True, max_length=10, null=True, validators=[django.core.validators.RegexValidator(b'^\\d{0,10}$')])),
+                ('job_seeking_status', models.CharField(blank=True, max_length=30, null=True)),
+                ('student_gpa', models.FloatField(blank=True, db_column=b'student_gpa', default=1.0, null=True, validators=[core.lib.validators.validate_student_gpa])),
+                ('volunteer', models.CharField(blank=True, max_length=100, null=True)),
+                ('awards', models.CharField(blank=True, max_length=100, null=True)),
+                ('projects', models.CharField(blank=True, max_length=100, null=True)),
+                ('certification', models.CharField(blank=True, max_length=100, null=True)),
+                ('languages', models.CharField(blank=True, max_length=100, null=True)),
+                ('seminar', models.CharField(blank=True, max_length=100, null=True)),
+                ('interests', models.CharField(blank=True, max_length=100, null=True)),
+                ('dependants', models.IntegerField(blank=True, db_column=b'dependants', default=0, null=True)),
+            ],
+            options={
+                'ordering': ['-updated'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Supervisor',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('created', models.DateTimeField(auto_now_add=True)),
+                ('updated', models.DateTimeField(auto_now=True)),
+                ('nip', models.IntegerField(unique=True, validators=[django.core.validators.MinValueValidator(100000000), django.core.validators.MaxValueValidator(9999999999)])),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['-updated'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Vacancy',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('verified', models.BooleanField(default=False)),
+                ('open_time', models.DateTimeField()),
+                ('description', models.TextField(blank=True)),
+                ('requirements', models.TextField(blank=True)),
+                ('responsibilities', models.TextField(blank=True)),
+                ('close_time', models.DateTimeField()),
+                ('created', models.DateTimeField(auto_now_add=True)),
+                ('updated', models.DateTimeField(auto_now=True)),
+                ('name', models.CharField(max_length=100)),
+                ('amount', models.IntegerField(null=True)),
+                ('max_accepted_applicants', models.IntegerField(default=0)),
+                ('benefits', models.TextField(blank=True)),
+                ('working_period', models.CharField(max_length=100, null=True)),
+                ('tag', models.TextField(blank=True)),
+                ('salary', models.IntegerField(default=0)),
+                ('recruiter_activity', models.CharField(blank=True, max_length=10, null=True)),
+                ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vacancies', to='core.Company')),
+            ],
+            options={
+                'ordering': ['-updated'],
+            },
+        ),
+        migrations.CreateModel(
+            name='VacancyMilestone',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=100)),
+                ('detail', models.TextField()),
+                ('expected_start', models.DateField()),
+                ('expected_finish', models.DateField()),
+                ('vacancy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='milestones', to='core.Vacancy')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='ReasonRejected',
+            fields=[
+                ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='core.Application')),
+                ('reason', models.TextField(default=b'Tidak memenuhi kualifikasi perusahaan.')),
+            ],
+        ),
+        migrations.AddField(
+            model_name='student',
+            name='applied_vacancies',
+            field=models.ManyToManyField(blank=True, related_name='applied_vacancies', through='core.Application', to='core.Vacancy'),
+        ),
+        migrations.AddField(
+            model_name='student',
+            name='bookmarked_vacancies',
+            field=models.ManyToManyField(blank=True, related_name='bookmarked_vacancies', to='core.Vacancy'),
+        ),
+        migrations.AddField(
+            model_name='student',
+            name='user',
+            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AddField(
+            model_name='application',
+            name='student',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Student'),
+        ),
+        migrations.AddField(
+            model_name='application',
+            name='vacancy',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Vacancy'),
+        ),
+        migrations.AlterUniqueTogether(
+            name='application',
+            unique_together=set([('student', 'vacancy')]),
+        ),
+    ]
diff --git a/core/migrations/0002_auto_20191114_2122.py b/core/migrations/0002_auto_20191114_2122.py
deleted file mode 100644
index 96e2f2934314ef4abc15c1c947e7e76ebb4cce8a..0000000000000000000000000000000000000000
--- a/core/migrations/0002_auto_20191114_2122.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.26 on 2019-11-14 14:22
-from __future__ import unicode_literals
-
-import django.core.validators
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('core', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='expected_salary',
-            field=models.CharField(blank=True, max_length=10, null=True, validators=[django.core.validators.RegexValidator(b'^\\d{0,10}$')]),
-        ),
-    ]