Dokumentasi - Final Project EAS ( Muhammad Farhan Arya Wicaksono | 50542310111)
FinSight - Aplikasi Manajemen Keuangan UMKM
Tanggal: Juni 26, 2025
Tim Pengembang:
- 5054231006 - Muhammad Naufal Arifin
- 5054231011 - Muhammad Farhan Arya Wicaksono
- 5054231027 - Jeremia Kevin Alexander Jagardo Malau
Link Terkait
Link Blogspot Dokumentasi Pemrograman WebLink Google Drive
Link GitHub
Link Hosting Proyek
Link Youtube Dokumentasi
Deskripsi Studi Kasus
Sejumlah pelaku Usaha Mikro, Kecil, dan Menengah (UMKM) di Indonesia sering menghadapi berbagai tantangan dalam mengelola keuangan secara efektif. Keterbatasan waktu, kurangnya pengetahuan keuangan, serta minimnya sumber daya manusia menjadi hambatan utama dalam mencatat, memantau, dan menganalisis kondisi finansial usaha mereka. Akibatnya, tidak jarang pelaku UMKM mengalami masalah likuiditas, pengambilan keputusan yang tidak berdasarkan data, hingga potensi kegagalan dalam mempertahankan keberlangsungan usahanya.
Menjawab permasalahan tersebut, FinSight hadir sebagai solusi inovatif berbasis web yang dirancang khusus untuk membantu para pelaku UMKM mengelola keuangan secara lebih cerdas dan efisien. Aplikasi ini menyediakan Dashboard interaktif yang intuitif, menampilkan ringkasan keuangan secara real-time seperti total pemasukan, pengeluaran, dan laba rugi. Gambaran menyeluruh ini didukung oleh fitur inti Manajemen Keuangan, yang memungkinkan pengguna mencatat setiap transaksi harian secara detail. Sistem secara otomatis mengelompokkan transaksi ini ke dalam kategori tertentu, sehingga memudahkan analisis pengeluaran terbesar dan pola pendapatan yang dominan.
Tak hanya memotret kondisi saat ini, FinSight juga menawarkan kemampuan untuk melihat ke masa depan melalui fitur Prediksi Arus Kas. Dengan menganalisis data historis, pengguna dapat melihat proyeksi kondisi keuangan mereka dalam beberapa minggu atau bulan mendatang, sehingga dapat merencanakan strategi secara lebih matang. Kemampuan perencanaan ini diperkuat dengan fitur Rekomendasi Usaha dan Analisis Kelayakan. FinSight mampu memberikan saran ekspansi atau diversifikasi usaha yang sesuai dengan kondisi finansial pengguna, serta menyajikan analisis kelayakan ide bisnis baru berdasarkan data pasar dan tren industri terkini.
Lebih jauh lagi, FinSight memperkenalkan fitur unik Komunitas Insight. Fitur ini memberikan wawasan berharga dengan memungkinkan pengguna membandingkan kinerja keuangannya (secara anonim) dengan rata-rata industri atau UMKM sejenis dalam komunitas FinSight. Hal ini memberikan benchmark penting yang membantu pengguna memahami posisi bisnis mereka di tengah persaingan dan mengidentifikasi area untuk perbaikan.
Dengan seluruh kapabilitas ini, FinSight tidak hanya menjadi alat pencatatan dan pelaporan keuangan, tetapi bertransformasi menjadi mitra strategis digital. Aplikasi ini memberdayakan pelaku UMKM untuk mengambil keputusan bisnis yang lebih tepat, cerdas, dan berkelanjutan, mendampingi setiap langkah perkembangan usaha dari tahap awal hingga menjadi mandiri secara finansial.
Desain Arsitektur
Aplikasi yang dikembangkan merupakan sistem berbasis web dengan arsitektur client-server yang menerapkan konsep Single Page Application (SPA). Seluruh pengembangan sistem dikelola secara terintegrasi dalam satu repositori sumber kode (mono-repository), yang mencakup komponen frontend dan backend secara bersamaan. Pendekatan ini dipilih untuk mempermudah pengelolaan kode sumber, proses pengembangan, integrasi, serta deployment sistem secara keseluruhan.
Frontend
Bagian frontend dikembangkan menggunakan HTML dan CSS (Tailwind CSS). Untuk pengembangan logika antarmuka dan interaksi pengguna, digunakan bahasa pemrograman JavaScript berbasis modularisasi ES6. Seluruh komponen antarmuka pengguna dibangun secara modular sehingga memudahkan pengelolaan navigasi, pengolahan data, serta visualisasi tampilan.
Komunikasi antara frontend dengan backend dilakukan melalui protokol HTTP menggunakan skema RESTful API. Modul-modul JavaScript yang berjalan di sisi client bertanggung jawab untuk menangani proses autentikasi pengguna, pengambilan data dari server, serta memperbarui tampilan antarmuka esuai dengan hasil data yang diterima dari backend. Informasi token autentikasi pengguna disimpan sementara di sisi client menggunakan Local Storage untuk mempertahankan sesi login pengguna selama aplikasi berjalan.
Backend
Bagian backend dikembangkan menggunakan framework FastAPI Python. Backend menyediakan berbagai endpoint API yang melayani kebutuhan sistem, mencakup manajemen akun pengguna, pengelolaan transaksi keuangan, penyajian data dashboard, prediksi arus kas, rekomendasi bisnis, analisis kelayakan usaha, serta pengelolaan fitur komunitas yang terdiri dari sistem postingan, komentar, dan pemberian likes postingan antar pengguna.
Selain itu, backend juga memiliki fungsi tambahan sebagai penyaji static files untuk menghidangkan hasil build dari frontend, sehingga keseluruhan sistem dapat di-deploy secara terpusat.
Keamanan dan Autentikasi
Sistem autentikasi pengguna memanfaatkan JSON Web Token (JWT) untuk manajemen sesi dan kontrol akses, sementara penyimpanan sandi pengguna menggunakan algoritma bcrypt melalui library passlib utnuk menjamin keamanan penyimpanan data sensitif. Middleware Cross-Origin Resource Sharing (CORS) diterapkan untuk mengatur akses lintas domain secara aman.
Integrasi AI
Sistem mengintegrasikan layanan Large Language Model (LLM) melalui OpenRouter AI API. Integrasi mengintegrasikan layanan LLM eksternal (OpenRouter AI) untuk fitur rekomendasi bisnis dan insight AI pada prediksi arus kas dan analisis kelayakan
Database
Untuk Database menggunakan PostgreSQL sebagai sistem manajemen basis data relasional (Relational Database Management System - RDBMS). Interaksi dengan basis data dikelola menggunakan Object Relational Mapper (ORM) yaitu SQLAlchemy, yang memudahkan pengembangan query basis data secara terstruktur dan aman. Skema basis data dirancang untuk mencakup beberapa entitas utama, di antaranya tabel pengguna, transaksi keuangan, rekomendasi bisnis, prediksi arus kas, analisis kelayakan usaha, postingan komunitas, komentar, serta data interaksi pengguna lainnya. Proses migrasi dan pembaruan skema basis data dikelola secara otomatis menggunakan fitur bawaan ORM.
Deployment
Proses deployment sistem dilakukan melalui platform Railway. Railway merupakan platform layanan cloud berbasis containerization. Railway secara otomatis melakukan proses build Docker image dari repositori sumber kode yang telah diintegrasikan, menjalankan pipeline deployment secara kontinu setiap kali terjadi perubahan pada kode sumber, serta mengelola konfigurasi environment aplikasi secara terpusat. Selain menyediakan layanan deployment backend, Railway juga menyediakan layanan managed database PostgreSQL yang sepenuhnya terintegrasi dalam platform. Dengan demikian, baik aplikasi backend maupun basis data PostgreSQL di-deploy dan dikelola secara langsung di Railway.
Desain Antarmuka
Berikut adalah antarmuka:
Halaman Landing
Gambar di atas merupakan desain antarmuka awal yang akan ditampilkan kepada calon pengguna atau pengguna ketika mengakses website. Pada tampilan ini, disediakan dua fitur utama, yaitu login dan daftar. Pengguna yang sudah memiliki akun dapat langsung menekan tombol login untuk masuk ke dalam sistem, sedangkan pengguna baru harus terlebih dahulu melakukan proses pendaftaran melalui tombol daftar.
Halaman Login
Tampilan ini akan muncul setelah pengguna menekan tombol "Login" atau "Daftar". Bagi calon pengguna yang belum memiliki akun, dapat menekan tombol "Belum punya akun? Daftar di sini" untuk melakukan proses pendaftaran. Sementara itu, pengguna yang sudah terdaftar cukup memasukkan alamat email dan kata sandi untuk dapat mengakses aplikasi.
Halaman Registrasi
Setelah pengguna menekan tombol "Belum punya akun? Daftar di sini", calon pengguna akan diarahkan ke halaman pendaftaran dan diminta untuk mengisi beberapa informasi, yaitu Nama Lengkap, Alamat Email, dan Kata Sandi. Pada bagian kata sandi, sistem menerapkan validasi dengan ketentuan minimal enam karakter. Apabila pengguna memasukkan kata sandi yang kurang dari enam karakter, maka akan muncul notifikasi berupa pemberitahuan kesalahan untuk mengingatkan pengguna agar memenuhi syarat tersebut.
Dashboard Utama
Setelah pengguna berhasil login, sistem akan menampilkan notifikasi atau indikator bahwa proses login telah berhasil. Selanjutnya, pengguna akan langsung diarahkan ke tampilan dashboard awal. Dashboard ini menyajikan ringkasan informasi keuangan secara menyeluruh, meliputi total pemasukan, total pengeluaran, saldo saat ini, daftar transaksi pada bulan berjalan, grafik arus kas selama enam bulan terakhir, serta kategori pengeluaran. Tampilan ini dirancang untuk memberikan pengguna gambaran umum mengenai kondisi keuangan mereka secara real-time dan mudah dipahami.
Manajemen Keuangan
Pada fitur manajemen keuangan, pengguna dapat menambahkan transaksi baru berupa pemasukan maupun pengeluaran. Saat menambahkan transaksi, pengguna diminta untuk mengisi beberapa informasi penting, seperti tanggal transaksi, jumlah uang, kategori (yang dapat diisi secara bebas sesuai kebutuhan), serta deskripsi singkat mengenai transaksi tersebut. Seluruh data yang dimasukkan akan secara otomatis tersimpan dan ditampilkan pada bagian riwayat transaksi. Berikut merupakan contoh tampilan saat pengguna melakukan input transaksi.
Gambar di atas merupakan contoh saat pengguna menambahkan transaksi baru pada tanggal 23 Juni 2025 berupa pemasukan sebesar Rp2.000.000 dengan kategori "Hasil Penjualan". Setelah transaksi berhasil ditambahkan, data tersebut secara otomatis tercatat dalam riwayat transaksi. Jika pengguna ingin menghapus transaksi tersebut, maka dapat menekan ikon tempat sampah yang terdapat pada kolom aksi di daftar riwayat transaksi.
Setelah tercatat dalam riwayat transaksi, pengguna juga dapat mengunduh laporan dalam bentuk PDF, seperti ditunjukkan pada gambar di bawah ini.
Tindakan penambahan transaksi tersebut juga secara otomatis memengaruhi tampilan pada dashboard. Setelah transaksi pemasukan sebesar Rp2.000.000 ditambahkan, dashboard akan diperbarui dan menampilkan perubahan data secara real-time. Total pemasukan akan berubah menjadi Rp2.000.000, total pengeluaran masih tetap Rp0, saldo saat ini menjadi Rp2.000.000, dan jumlah transaksi pada bulan ini tercatat sebanyak 1. Berikut merupakan tampilan dashboard setelah pembaruan data tersebut.
Prediksi Arus Kas
Selanjutnya ada prediksi arus kas yang memiliki tombol Buat Prediksi Sekarang. ketika kita menekan tombol tersebut maka akan jadi seperti ini
Berdasarkan data transaksi yang telah diinput oleh pengguna melalui fitur Manajemen Keuangan, sistem akan melakukan pemrosesan data untuk menghasilkan prediksi arus kas, baik dalam bentuk pemasukan maupun pengeluaran, menggunakan model kecerdasan buatan (AI). Hasil prediksi ini digunakan untuk memberikan saran finansial kepada pengguna, seperti mengalokasikan sebagian dana ke dalam instrumen investasi likuid jangka pendek atau dana darurat, serta menyarankan penggunaan dana untuk pengembangan bisnis, misalnya pada sektor pemasaran atau peningkatan inventaris. Dengan adanya fitur ini, pengguna dapat mengambil keputusan keuangan yang lebih terarah dan strategis.
Rekomendasi Usaha
Selanjutnya, pengguna dapat mengakses fitur Rekomendasi Usaha yang dirancang untuk memberikan ide usaha berdasarkan preferensi dan kondisi pengguna. Pada fitur ini, pengguna diminta untuk mengisi beberapa input seperti jumlah modal yang dimiliki, minat terhadap bidang usaha tertentu, serta lokasi atau daerah tempat usaha akan dijalankan. Setelah seluruh data diisi dan pengguna menekan tombol "Temukan Ide Usaha", sistem akan memproses informasi tersebut dan menampilkan hasil berupa rekomendasi usaha yang paling sesuai. Gambar di atas menunjukkan hasil rekomendasi yang diberikan kepada pengguna berdasarkan data yang telah diinput sebelumnya.
Analisis Kelayakan
Selanjutnya, pengguna dapat mengakses fitur Analisis Kelayakan yang bertujuan untuk mengevaluasi potensi usaha berdasarkan data yang telah diberikan sebelumnya. Fitur ini didukung oleh sistem kecerdasan buatan (AI) yang akan menghasilkan insight atau wawasan berupa analisis kelayakan finansial dari ide usaha yang direkomendasikan. Beberapa informasi penting yang ditampilkan dalam fitur ini meliputi estimasi profit bersih per bulan, Return on Investment (ROI), serta perkiraan waktu balik modal (Break Even Point). Dengan adanya fitur ini, pengguna dapat menilai apakah suatu usaha layak untuk dijalankan dari sisi keuntungan dan efisiensi pengembalian modal.
Dan juga akan diberikan grafik nya seperti ini:
Komunitas FinSight
Fitur terakhir yang disediakan adalah Komunitas FinSight. Melalui fitur ini, pengguna dapat membuat postingan dalam bentuk teks maupun gambar untuk dibagikan kepada anggota komunitas lainnya. Selain itu, pengguna juga dapat memberikan komentar pada postingan orang lain, sehingga tercipta interaksi dan diskusi antar pengguna. Fitur komunitas ini dirancang sebagai wadah untuk berbagi pengalaman, mengajukan pertanyaan seputar bisnis, serta berdiskusi mengenai strategi usaha, tantangan yang dihadapi, hingga peluang pengembangan bisnis. Dengan adanya fitur ini, pengguna tidak hanya mendapatkan manfaat dari sisi pengelolaan keuangan, tetapi juga dari sisi jejaring dan kolaborasi dalam ekosistem pelaku UMKM.
Pada fitur Komunitas FinSight, pengguna dapat membuat postingan dengan mengisi beberapa elemen seperti judul, kategori, konten, serta foto jika diinginkan. Setelah seluruh data diisi, pengguna cukup menekan tombol "Bagikan", dan postingan akan secara otomatis terunggah dan ditampilkan di halaman komunitas FinSight. Fitur ini memudahkan pengguna untuk berbagi informasi, bertanya, atau menyampaikan ide terkait bisnis secara langsung kepada komunitas.
DEPLOYMENT
Aplikasi FinSight di-deploy provider cloud hosting Railway. Railway adalah sebuah platform cloud development yang menyediakan infrastruktur backend-as-a-service. Railway memudahkan proses deploy, hosting, dan pengelolaan aplikasi backend tanpa perlu mengelola server secara manual.
Untuk tahapan tahapan dan setup aplikasi FinSight untuk deployment sebagai berikut:
1. Persiapan Repositori
Langkah awal dilakukan dengan pembuatan dan persiapan repository lokal yang berisi seluruh kode aplikasi FinSight. Seluruh source code diinisialisasi dengan git dan kemudian dipush ke repository GitHub. Repository ini akan menjadi codebase utama untuk proses deployment di Railway.
2. Penyusunan Dockerfile
Railway menggunakan containerization, Dibuat file Dockerfile untuk membangun image backend aplikasi. Berikut isi dari Dockerfile yang digunakan:
FROM python:3.11-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements file and install dependencies
COPY requirements.txt .
RUN pip install --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# Copy application source code
COPY . .
# Expose port
EXPOSE 8000
# Command to run the application
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
Penanganan Static Files pada Deployment Railway
Karena source code backend dideploy langsung dari repository GitHub, maka seluruh struktur file project (termasuk folder static atau folder berisi file HTML, CSS, JS, gambar) akan otomatis tersalin ke dalam Docker image pada saat proses:
Dengan demikian, file-file frontend seperti index.html, style.css, maupun gambar akan tersedia di dalam container saat dijalankan.
3. Deployment ke Railway
Setelah repository tersedia di GitHub, proses deployment dilakukan dengan langkah-langkah berikut:
- Membuka dashboard project di Railway.
- Membuat projek baru dengan memilih opsi Create from GitHub dan Menghubungkan project dengan repositori aplikasi yang telah dibuat sebelumnya di Github.
- Railway secara otomatis membaca Dockerfile, melakukan build image backend, dan men-deploy aplikasi.
4. Konfigurasi Database
Railway menyediakan fitur untuk pengelolaan database. Pada implementasi ini, digunakan PostgreSQL sebagai database. Proses setup database dilakukan langsung dari dashboard Railway.
5. Integrasi Backend dan Database
Setelah database berhasil dibuat, backend aplikasi dikonfigurasi agar dapat terhubung dengan database. Hal ini dilakukan dengan mengatur connection URL pada environment variable aplikasi.
6. Konfigurasi Environment Variable
Environment variable adalah variabel yang disimpan di lingkungan eksekusi aplikasi dan digunakan untuk mengatur perilaku aplikasi tanpa perlu mengubah kode secara langsung. Railway menyediakan fitur khusus untuk menambahkan environment variable melalui dashboard-nya.
Fungsi Masing-Masing Variable:
- BASE_URL = https://finsight.up.railway.app
URL dasar dari aplikasi FinSight yang digunakan untuk keperluan internal routing, validasi URL, dan kebutuhan frontend. - DATABASE_URL= ${{Postgres.DATABASE_URL}}
Menyimpan connection string PostgreSQL yang disediakan secara otomatis oleh Railway. Ini yang digunakan oleh ORM atau driver database untuk koneksi ke database. - ENVIRONMENT= production
Menandakan bahwa aplikasi berjalan dalam mode produksi (production mode), yang mengaktifkan pengaturan keamanan dan performa tertentu. - MODEL_NAME = google/gemini-2.0-flash-001
Menyimpan nama atau ID dari model yang digunakan oleh aplikasi untuk proses AI/ML. - OPENROUTER_API_KEY = *****
Kunci API untuk mengakses layanan pihak ketiga yaitu OpenRouter. - SECRET_KEY =
Digunakan untuk enkripsi internal aplikasi seperti JWT token, session, atau fitur keamanan lainnya.
Setiap kali terdapat perubahan pada environment variable maupun perubahan isi file dalam repository Github, Railway secara otomatis melakukan proses rebuild terhadap aplikasi.
7. Konfigurasi Domain Publik
Railway secara dapat menghasilkan domain publik yang dapat diakses untuk menguji maupun menggunakan aplikasi yang telah berhasil di-deploy.
Comments
Post a Comment