Cari Rumus
Cari Rumus, yang dikembangkan selama magang di Mejakita, adalah aplikasi seluler yang dirancang untuk membantu pengguna dengan berbagai formula dan tips. Meskipun terutama menampilkan koleksi rumus matematika yang luas, rumus ini juga mencakup rumus dari fisika, kimia, dan mata pelajaran lainnya. Aplikasi ini memberikan tips dan trik untuk perhitungan cepat dan pemecahan masalah di seluruh disiplin ilmu ini. Pengguna dapat masuk menggunakan akun Mejakita mereka untuk menambahkan kiat dan trik baru, serta memasukkan formula baru, menjadikannya sumber daya kolaboratif dan komprehensif bagi siswa dan peserta didik.
2023
Aplikasi Mobile
ASP.NET Core 7, C#, Entity Framework Core, SQL Server, REST API
Masalah
Siswa sekolah sering kesulitan mengingat dan mencari rumus-rumus sains serta trik hitung cepat saat belajar mandiri atau mengerjakan tugas sekolah. Buku cetak rumus umumnya tebal, tidak praktis dicari berdasarkan kata kunci, dan bersifat statis tanpa ruang interaksi antarsiswa. Aplikasi mobile Cari Rumus dirancang oleh Mejakita untuk menyediakan repositori rumus multi-mata pelajaran (Matematika, Fisika, Kimia) yang interaktif dan dapat diperkaya oleh komunitas pengguna (user-generated content). Tantangan utama pada backend adalah merancang API yang mampu menangani sintaks rumus matematika (LaTeX), menyediakan algoritma pencarian multi-kata kunci yang cepat, serta memoderasi konten yang diunggah pengguna secara otomatis agar bebas dari kata-kata kasar atau konten yang tidak pantas.
Peran saya
Proyek ini saya kembangkan saat menjalani magang di PT Mejakita Edunusa Mandiri sebagai Backend Developer, bertanggung jawab penuh atas perancangan basis data SQL Server dan pengembangan RESTful Web API menggunakan ekosistem .NET 7:
- Perancangan Basis Data Relasional (SQL Server): Merancang skema tabel data menggunakan Entity Framework Core 7 (
User,Mapel,Rumus,Tag,rumus_tag,Tips,Comment,Like, danBadwords). - Pengembangan RESTful API (ASP.NET Core 7): Membangun controller modular untuk manajemen rumus, mata pelajaran, tagging, tips belajar, dan sistem interaksi (komentar serta voting like).
- Algoritma Pencarian Multi-Kata Kunci (Search Engine): Mengimplementasikan logika pencarian berbasis pemecahan kata (split space) yang mencocokkan query secara fleksibel terhadap judul, deskripsi, dan tag rumus menggunakan kueri LINQ teroptimasi.
- Sistem Moderasi Otomatis (Filter Badwords): Merancang mekanisme sensor otomatis yang memeriksa teks deskripsi terhadap kamus kata terlarang di database sebelum rumus dipublikasikan secara publik.
- Autentikasi Terintegrasi SSO Mejakita: Mengintegrasikan autentikasi berbasis klaim JWT (
ClaimTypes.Email) yang terhubung langsung ke akun ekosistem Mejakita.
Arsitektur sistem
Backend dibangun dengan performa tinggi menggunakan framework ASP.NET Core:
- ASP.NET Core 7 Web API: Mengelola HTTP request, binding data form/URL-encoded, dan memvalidasi model state secara ketat sebelum diteruskan ke database.
- Entity Framework Core 7 (ORM): Memanfaatkan LINQ untuk eksekusi query relasional yang aman dari SQL Injection, dengan eager loading (
.Include()) untuk menyertakan data pembuat dan mata pelajaran terkait. - Soft-Delete Invariant: Menjaga keutuhan relasi data historis dengan menandai bendera
is_deletedalih-alih menghapus baris tabel secara fisik. - Microsoft SQL Server: Menyediakan persistensi data relasional yang kokoh untuk relasi banyak-ke-banyak antara rumus dan tag pencarian.
Endpoint utama
| Method | Path | Fungsi & Otorisasi |
|---|---|---|
GET |
/rumus |
Mengambil katalog rumus (filter mata pelajaran, pagination, dan keyword pencarian) |
GET |
/rumus/{id} |
Mengambil detail rumus lengkap dengan sintaks matematika & profil kontributor |
POST |
/rumus |
Kontributor menambahkan rumus baru (Auth: User role, auto badword scan) |
PUT |
/rumus/{id} |
Memperbarui rumus milik sendiri (validasi duplikasi rumus & judul) |
DELETE |
/rumus/{id} |
Menandai rumus sebagai dihapus (soft-delete) |
GET |
/tips & POST /tips |
Eksplorasi kiat dan trik cepat penyelesaian soal sains |
POST |
/like/rumus/{id} |
Memberikan voting like/apresiasi pada kegunaan rumus |
POST |
/comment/rumus/{id} |
Menambahkan komentar diskusi dan tanya-jawab seputar rumus |
GET |
/mapel |
Mengambil daftar kategori mata pelajaran aktif |
Tantangan teknis
1. Pencarian multi-kata kunci yang fleksibel pada LINQ to Entities.
Ketika pengguna mencari “rumus luas segitiga sama kaki”, pencarian teks tunggal sering gagal jika urutan kata tidak persis sama. Solusinya, query controller memecah input string menjadi array kata kunci, lalu mencocokkan setiap token ke judul rumus, isi deskripsi, maupun tag relasional. Hasil pencarian digabungkan ke dalam HashSet<Rumus> untuk mengeliminasi duplikasi sebelum dipaginasi.
2. Moderasi konten otomatis (Badwords filtering).
Karena pengguna umum dapat menambahkan rumus dan tips belajar, platform rentan disalahgunakan dengan bahasa yang tidak pantas. Dibuat algoritma moderasi berbasis database: saat rumus di-submit atau diperbarui, deskripsi dipecah menjadi kata-kata dan dicocokkan dengan tabel Badwords. Jika terdeteksi kata terlarang, bendera is_badword otomatis diaktifkan menjadi true sehingga rumus disembunyikan dari hasil pencarian publik sampai disetujui kurator.
3. Pencegahan duplikasi formula dan judul panjang.
Untuk menjaga kualitas repositori, controller memeriksa apakah teks rumus (r.rumus == input.rumus) atau judul sudah pernah diunggah oleh pengguna lain sebelum data baru disimpan. Selain itu, panjang judul dibatasi maksimal 50 karakter untuk memastikan tampilan kartu pada aplikasi mobile tetap rapi.
Yang ingin saya perbaiki
- Mengimplementasikan Full-Text Search SQL Server untuk pencarian formula skala besar yang lebih cepat dibanding operasi string
Contains. - Menambahkan parser sintaks LaTeX di backend untuk memvalidasi keabsahan notasi matematika sebelum disimpan ke database.
- Menyediakan endpoint ekspor rumus dan tips belajar ke dokumen PDF siap cetak.
Proyek Lainnya

Situs tiket dan FAQ untuk dukungan pengguna Mejakita, dibangun dengan ASP.NET dan SQL Server.
- ASP.NET
- SQL Server
- Git

Website profil sekolah buatan tim dengan halaman berita, guru, dan ekstrakurikuler.
- PHP Native
- MVC
- MySQL
- +2

Blog latihan Laravel dengan migration, seeder, dan Tailwind CSS.
- Laravel
- MySQL
- Git