diff --git a/lib/src/models/kontak.dart b/lib/src/models/kontak.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ab3c2fcd50e8462b1498ff890e4ae014c5270fff
--- /dev/null
+++ b/lib/src/models/kontak.dart
@@ -0,0 +1,32 @@
+import 'package:equatable/equatable.dart';
+import 'package:json_annotation/json_annotation.dart';
+import 'package:to_string/to_string.dart';
+
+part 'kontak.g.dart';
+
+@JsonSerializable()
+@ToString()
+class Kontak extends Equatable {
+  final String email;
+  final String jabatan;
+  final String nama;
+  final String telepon;
+
+  Kontak({
+    this.email,
+    this.jabatan,
+    this.nama,
+    this.telepon,
+  });
+
+  factory Kontak.fromJson(Map<String, dynamic> json) =>
+      _$KontakFromJson(json);
+
+  Map<String, dynamic> toJson() => _$KontakToJson(this);
+
+  @override
+  List<Object> get props => [nama, telepon];
+
+  @override
+  String toString() => _$KontakToString(this);
+}
diff --git a/lib/src/models/kontak.g.dart b/lib/src/models/kontak.g.dart
new file mode 100644
index 0000000000000000000000000000000000000000..c29b9c3a454ee068bc01d57047d8f631108a6b85
--- /dev/null
+++ b/lib/src/models/kontak.g.dart
@@ -0,0 +1,31 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'kontak.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+Kontak _$KontakFromJson(Map<String, dynamic> json) {
+  return Kontak(
+    email: json['email'] as String,
+    jabatan: json['jabatan'] as String,
+    nama: json['nama'] as String,
+    telepon: json['telepon'] as String,
+  );
+}
+
+Map<String, dynamic> _$KontakToJson(Kontak instance) => <String, dynamic>{
+      'email': instance.email,
+      'jabatan': instance.jabatan,
+      'nama': instance.nama,
+      'telepon': instance.telepon,
+    };
+
+// **************************************************************************
+// ToStringGenerator
+// **************************************************************************
+
+String _$KontakToString(Kontak o) {
+  return """Kontak{email: ${o.email}, jabatan: ${o.jabatan}, nama: ${o.nama}, telepon: ${o.telepon}}""";
+}
diff --git a/lib/src/repositories/kontak_repository.dart b/lib/src/repositories/kontak_repository.dart
new file mode 100644
index 0000000000000000000000000000000000000000..6d1573debd67275556b84d036350079c615b07d6
--- /dev/null
+++ b/lib/src/repositories/kontak_repository.dart
@@ -0,0 +1,18 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:flutter/widgets.dart';
+import 'package:mobile_apps/src/models/kontak.dart';
+
+class KontakRepository {
+  CollectionReference kontakCollections(String institusiId) =>
+      Firestore.instance.collection('waspada/covid19/institusi/${institusiId}/kontak');
+
+  Stream<QuerySnapshot> kontakSnapshots(String institusiId) =>
+      kontakCollections(institusiId).snapshots();
+
+  List<Kontak> semuaKontak(AsyncSnapshot<QuerySnapshot> snapshot) {
+    if (!snapshot.hasData || snapshot.hasError) return [];
+    return snapshot.data.documents
+        .map<Kontak>((document) => Kontak.fromJson(document.data))
+        .toList();
+  }
+}