Skip to content

yogaarrd/uas_mobile_programing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

89 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Moreps Logo

πŸ’ͺ MOREPS

Your Personal Workout Tracker & Strength Analyzer

Flutter Dart Supabase License


Moreps adalah aplikasi pelacak kebugaran (workout tracker) komprehensif yang dirancang untuk membantu pengguna mencatat sesi angkat beban, melacak perkembangan kekuatan fisik, dan memonitor perubahan berat badan. Dilengkapi dengan fitur deteksi Personal Record (PR) otomatis dan sistem analitik visual berbasis grafik untuk memotivasi pengguna mencapai target kebugaran mereka.


πŸ“– Dokumentasi PRD Β· 🎬 Demo Video Β· πŸ“Έ Screenshots Β· πŸ”— Official Website



πŸ‘₯ Profile Pengembang

No Nama NIM Role
1 Komang Yoga Ardiana 2401010105 πŸ“‹ PM & Fullstack Developer
2 Gede Adprian Pratama 2401010117 🎨 UI/UX & Fullstack Developer
3 I Putu Nova Perwira Andika 2401010112 πŸ’» Fullstack Developer


πŸ› οΈ Tech Stack

Layer Teknologi Keterangan
Frontend Flutter Dart Framework UI cross-platform (Android & iOS)
Backend Supabase BaaS β€” PostgreSQL Database, Auth, Storage
State Management Riverpod Reactive state management (Notifier, AsyncNotifier)
Routing GoRouter Deklaratif routing dengan deep linking support
UI Charts fl_chart Grafik interaktif (Progress & PR Tracker)
Design 🎨 Dark Mode + Glassmorphism Palet #010102 dengan aksen hijau neon #CFFF4B


πŸ“ Struktur Folder lib/

lib/
β”œβ”€β”€ main.dart                     # Entry point aplikasi, inisialisasi provider & routing
β”‚
β”œβ”€β”€ core/                         # Konfigurasi inti & utilitas global
β”‚   β”œβ”€β”€ navigation/               # Setup bottom navigation & main wrapper shell
β”‚   β”œβ”€β”€ services/                 # Service layer (notifikasi lokal, vibration, dsb.)
β”‚   └── theme/                    # Tema aplikasi (warna, ukuran, dark mode config)
β”‚
β”œβ”€β”€ features/                     # Modul fitur (dipisah per domain bisnis)
β”‚   β”œβ”€β”€ auth/                     # Autentikasi (Login, Register, Onboarding)
β”‚   β”‚   β”œβ”€β”€ models/               # Data model untuk user & auth state
β”‚   β”‚   β”œβ”€β”€ pages/                # Halaman UI (Sign In, Sign Up, Onboarding)
β”‚   β”‚   β”œβ”€β”€ providers/            # State management (auth notifier/provider)
β”‚   β”‚   └── services/             # Repository akses Supabase Auth
β”‚   β”‚
β”‚   β”œβ”€β”€ home/                     # Dashboard utama
β”‚   β”‚   └── pages/                # Halaman Home (Workout Templates & Library)
β”‚   β”‚
β”‚   β”œβ”€β”€ workout/                  # Manajemen sesi latihan
β”‚   β”‚   β”œβ”€β”€ models/               # Model data (Workout, Exercise, Set)
β”‚   β”‚   β”œβ”€β”€ pages/                # Halaman Builder, Active Session, Summary
β”‚   β”‚   β”œβ”€β”€ providers/            # State workout session & timer
β”‚   β”‚   β”œβ”€β”€ repositories/         # Akses data Supabase (CRUD workout)
β”‚   β”‚   └── widgets/              # Komponen UI reusable (exercise card, set row)
β”‚   β”‚
β”‚   β”œβ”€β”€ history/                  # Riwayat latihan
β”‚   β”œβ”€β”€ progress/                 # Analitik & pelacakan progres (PR, Body Weight)
β”‚   └── profile/                  # Manajemen profil pengguna & BMI Calculator
β”‚
└── shared/                       # Komponen & utilitas yang digunakan lintas fitur
    └── widgets/                  # Widget reusable global (buttons, cards, dialogs)

Arsitektur: Menggunakan Feature-First Structure dengan Repository/Service Pattern untuk memisahkan logika bisnis dari UI layer.



✨ Daftar Fitur

Kategori Fitur Deskripsi
πŸ” Autentikasi Sign Up & Sign In Registrasi & login via Email/Password atau Google OAuth
Smart Session Check Auto-redirect berdasarkan status sesi pengguna di Splash Screen
Onboarding Profil Pengumpulan data awal: Nama, Tanggal Lahir, Berat, Tinggi, Fitness Goal
🏠 Dashboard Premium Greeting Card Sapaan dinamis berdasarkan waktu (Pagi/Siang/Malam) dengan tanggal Indonesia
Workout Templates Buat, edit, hapus template latihan dengan estimasi durasi & target otot
Exercise Library Direktori gerakan dengan filter ChoiceChips berdasarkan grup otot
πŸ‹οΈ Sesi Latihan Workout Builder Rakit template dengan drag-and-drop, penambahan set, konversi KG ↔ LBS
Active Tracker Pencatatan real-time: timer, reps, beban, spontaneous exercise
Rest Timer & Motivasi Countdown istirahat dengan notifikasi, getaran, & kutipan motivasi
Session Summary Ringkasan pasca-latihan: volume, durasi, set, dan highlight PR baru
πŸ“… Riwayat Workout Calendar Kalender visual dengan marker neon pada tanggal latihan
Infinite Scroll History Daftar riwayat dengan pagination untuk performa optimal
Detail Sesi Lihat kembali detail gerakan, set, reps, dan beban sesi lampau
πŸ“Š Progress Statistik Overview Total sesi, volume angkatan, durasi, konsistensi per minggu
Body Weight Tracker Grafik fluktuasi berat badan dengan filter 1B / 3B / Semua
Exercise PR Chart Personal Record per gerakan dengan grafik lintasan & highlight rekor
πŸ‘€ Profil Manajemen Akun Update metrik fisik, fitness goal, dan foto profil (avatar)
Kalkulator BMI Perhitungan otomatis Body Mass Index berdasarkan data terkini


πŸš€ Cara Menjalankan Aplikasi

Prasyarat

  • Flutter SDK β‰₯ 3.x (Install Flutter)
  • Dart SDK β‰₯ 3.x (bundled with Flutter)
  • Akun Supabase (supabase.com)
  • Android Studio / VS Code dengan Flutter extension
  • Emulator atau perangkat fisik (Android/iOS)

Langkah Instalasi

# 1. Clone repository
git clone https://github.com/yogaarrd/uas_mobile_programing.git
cd uas_mobile_programing

# 2. Install dependencies
flutter pub get

# 3. Buat file .env di root project
#    Isi dengan konfigurasi Supabase Anda:
cat > .env << EOF
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
EOF

Setup Database Supabase

Buka Supabase Dashboard β†’ SQL Editor, lalu jalankan file SQL dari folder SQL/ dengan urutan berikut:

πŸ“‹ Tahap 1 β€” Import Tabel (sesuai urutan)

Urutan File Keterangan
1️⃣ SQL/table/table_profiles_supabase.sql Tabel profil pengguna
2️⃣ SQL/table/table_excercise_supabase.sql Tabel daftar gerakan latihan
3️⃣ SQL/table/storage_avatars_supabase.sql Konfigurasi Supabase Storage untuk avatar
4️⃣ SQL/table/table_workout_template.sql Tabel template & detail workout
5️⃣ SQL/table/table_workout_sessions.sql Tabel sesi latihan & history
6️⃣ SQL/table/table_body_measurements.sql Tabel pencatatan berat badan

⚠️ Penting: Urutan import harus sesuai karena terdapat relasi foreign key antar tabel.

🌱 Tahap 2 β€” Import Seeder

File Keterangan
SQL/seeder/seeder_excercise.sql Data awal daftar gerakan latihan (exercise library)
SQL/seeder/seeder_progress_tracking.sql Data awal untuk progress tracking

πŸ”‘ Setup Google OAuth Login

Agar fitur Login dengan Google berfungsi, ikuti langkah-langkah berikut:

1. Aktifkan Google Provider di Supabase

  1. Buka Supabase Dashboard β†’ Authentication β†’ Providers
  2. Cari dan aktifkan Google
  3. Anda akan membutuhkan Client ID dan Client Secret dari Google Cloud Console

2. Buat OAuth Credentials di Google Cloud Console

  1. Buka Google Cloud Console
  2. Buat project baru atau pilih project yang sudah ada
  3. Navigasi ke APIs & Services β†’ Credentials
  4. Klik Create Credentials β†’ OAuth Client ID
  5. Pilih Web application sebagai application type
  6. Tambahkan Authorized redirect URI dari Supabase:
    https://<YOUR_SUPABASE_PROJECT>.supabase.co/auth/v1/callback
    
  7. Copy Client ID dan Client Secret, lalu paste ke konfigurasi Google Provider di Supabase Dashboard

3. Konfigurasi Redirect URL di Supabase

  1. Buka Supabase Dashboard β†’ Authentication β†’ URL Configuration
  2. Tambahkan deep link berikut ke Redirect URLs:
    io.supabase.gymapp://login-callback/
    

4. Konfigurasi Deep Link Android

Deep link sudah dikonfigurasi di AndroidManifest.xml dengan scheme:

<data android:scheme="io.supabase.gymapp" android:host="login-callback" />

5. Konfigurasi untuk Web (flutter run -d chrome)

Jika menjalankan aplikasi di web, tambahkan konfigurasi berikut:

  1. Buka Supabase Dashboard β†’ Authentication β†’ URL Configuration
  2. Set Site URL ke URL aplikasi web Anda:
    http://localhost:PORT
    

    Ganti PORT dengan port yang digunakan Flutter web (default biasanya port random, cek di terminal saat flutter run -d chrome)

  3. Tambahkan juga URL tersebut ke Redirect URLs:
    http://localhost:PORT
    

πŸ“ Catatan: Pastikan scheme pada AndroidManifest.xml, Supabase Redirect URLs, dan kode auth_service.dart konsisten. Untuk mobile gunakan io.supabase.gymapp://login-callback/, untuk web gunakan Site URL yang sudah dikonfigurasi.

Jalankan Aplikasi

flutter run

πŸ’‘ Tip: Gunakan flutter run --release untuk menjalankan versi production dengan performa optimal.



πŸ“¦ Daftar Package yang Digunakan

Package Versi Kegunaan
supabase_flutter ^2.12.4 Backend-as-a-Service: Database, Authentication, dan Storage
flutter_riverpod ^3.3.1 State management reaktif (Notifier, AsyncNotifier, FutureProvider)
go_router ^17.2.3 Deklaratif routing dengan dukungan deep linking & OAuth redirect
flutter_dotenv ^6.0.1 Manajemen environment variable untuk keamanan API Key
fl_chart ^1.2.0 Grafik interaktif (Line Chart untuk progress & PR tracking)
table_calendar ^3.2.0 Widget kalender visual untuk riwayat latihan
flutter_local_notifications ^22.0.1 Notifikasi lokal untuk rest timer antar set
vibration ^3.2.0 Feedback getaran saat rest timer selesai
image_picker ^1.2.2 Pengambilan foto dari galeri/kamera untuk avatar profil
intl ^0.20.2 Internasionalisasi & format tanggal Bahasa Indonesia
provider ^6.1.5+1 State management sederhana untuk navigasi bottom bar
cupertino_icons ^1.0.8 Ikon gaya iOS (Cupertino design)


🎬 Demo Video



πŸ“Έ Screenshot Halaman

πŸ” Autentikasi

Login Register

🏠 Dashboard

Home β€” My Workouts Home β€” Workout Library

πŸ‹οΈ Workout Management

Create Workout Workout Detail Choose Exercise
Configure Set & Reps Workout Created

⏱️ Active Session

Workout Session Rest Session Workout Finished

πŸ“… Riwayat

Workout Calendar Session Details

πŸ“Š Progress & Analytics

Progress Overview Body Weight Tracker Body Weight Scroll
Add Body Weight Personal Record (PR)

πŸ‘€ Profil

Profile Edit Profile


Built with πŸ’š using Flutter & Supabase

Β© 2026 Moreps Team

About

Aplikasi pelacak latihan gym berbasis Flutter dengan deteksi Personal Record otomatis, grafik progres, dan desain dark mode premium.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Contributors