8 Projek Sederhana Flutter untuk pemula

8 Projek Sederhana Flutter untuk pemula

Berikut adalah beberapa ide proyek Flutter yang dapat digunakan oleh pemula untuk memulai dan mengasah keterampilan mereka di GitHub:

1. Aplikasi To-Do List

Deskripsi: Buat aplikasi To-Do List sederhana untuk mengelola tugas harian. Pengguna bisa menambah, mengedit, dan menghapus tugas.

  • Fitur utama:
    • Menambah dan menghapus tugas
    • Menandai tugas yang telah selesai
    • Menyimpan data menggunakan shared_preferences atau sqflite
  • Tujuan pembelajaran: Mengenal widget dasar Flutter, penggunaan local storage, dan pemahaman tentang state management.

Repository GitHub contoh: To-Do List App

2. Aplikasi Kalkulator

Deskripsi: Aplikasi kalkulator sederhana untuk melakukan operasi dasar seperti penjumlahan, pengurangan, perkalian, dan pembagian.

  • Fitur utama:
    • Tombol untuk angka dan operator
    • Menampilkan hasil operasi
    • Menyediakan fungsi clear untuk menghapus input
  • Tujuan pembelajaran: Pemahaman dasar widget, logika kalkulator, dan penggunaan state management.

Repository GitHub contoh: Flutter Calculator

3. Aplikasi Catatan (Notes App)

Deskripsi: Aplikasi untuk mencatat ide atau informasi penting yang dapat disimpan dan dihapus.

  • Fitur utama:
    • Menambah, mengedit, dan menghapus catatan
    • Menyimpan catatan menggunakan SQLite atau cloud storage seperti Firebase
  • Tujuan pembelajaran: Pemahaman penggunaan SQLite, Firebase, atau penyimpanan data lokal dan antarmuka pengguna.

Repository GitHub contoh: Notes App Flutter

4. Aplikasi Cuaca

Deskripsi: Aplikasi yang menampilkan informasi cuaca terkini berdasarkan lokasi pengguna.

  • Fitur utama:
    • Mengambil data cuaca dari API (misalnya OpenWeatherMap)
    • Menampilkan suhu, kelembaban, dan deskripsi cuaca
    • Menggunakan lokasi pengguna untuk mendapatkan cuaca secara otomatis
  • Tujuan pembelajaran: Mengakses API eksternal, penggunaan package HTTP, dan pengelolaan state berdasarkan data dinamis.

Repository GitHub contoh: Weather App Flutter

5. Aplikasi Gallery Foto

Deskripsi: Aplikasi yang menampilkan galeri foto dengan kemampuan untuk menambahkan foto dari galeri perangkat.

  • Fitur utama:
    • Menampilkan daftar gambar dari galeri perangkat
    • Mengambil gambar menggunakan kamera atau galeri
    • Menyimpan gambar secara lokal
  • Tujuan pembelajaran: Penggunaan package seperti image_picker dan pengelolaan data media perangkat.

Repository GitHub contoh: Flutter Photo Gallery

6. Aplikasi Pengingat Waktu Sholat (Islamic Prayer Times)

Deskripsi: Aplikasi yang menampilkan waktu sholat berdasarkan lokasi pengguna.

  • Fitur utama:
    • Menampilkan waktu sholat harian berdasarkan lokasi pengguna
    • Notifikasi untuk mengingatkan waktu sholat
    • Dapat mengatur zona waktu
  • Tujuan pembelajaran: Menggunakan API untuk waktu sholat (misalnya Aladhan API), penggunaan notifikasi lokal, dan pengelolaan lokasi.

Repository GitHub contoh: Flutter Prayer Times

7. Aplikasi Kalkulator IMT (Indeks Massa Tubuh)

Deskripsi: Aplikasi untuk menghitung IMT berdasarkan berat badan dan tinggi badan pengguna.

  • Fitur utama:
    • Input berat badan dan tinggi badan
    • Hitung IMT dan kategorikan hasilnya (kurus, normal, gemuk, obesitas)
  • Tujuan pembelajaran: Memahami pengolahan data input dan logika untuk menghitung hasil berdasarkan rumus matematika.

Repository GitHub contoh: Flutter BMI Calculator

8. Aplikasi Quiz atau Trivia

Deskripsi: Aplikasi kuis sederhana yang menampilkan pertanyaan dan pilihan jawaban.

  • Fitur utama:
    • Menampilkan pertanyaan dengan pilihan jawaban
    • Menghitung skor pengguna
    • Menampilkan hasil akhir setelah kuis selesai
  • Tujuan pembelajaran: Mengelola data dinamis (pertanyaan dan jawaban), menghitung skor, dan berinteraksi dengan pengguna.

Repository GitHub contoh: Flutter Quiz App


Semua proyek di atas cocok untuk pemula yang baru mulai belajar Flutter dan bisa ditemukan banyak contoh kode di GitHub. Untuk memulai, pilih salah satu proyek dan kembangkan dengan menambahkan fitur tambahan sesuai dengan kemajuan belajar Anda. Jika Anda membutuhkan referensi atau tutorial lebih lanjut, saya siap membantu!

Membuat Aplikasi Kompres PDF dengan Python di Google Colab

Membuat Aplikasi Kompres PDF dengan Python di Google Colab

Membuat aplikasi untuk mengompres file PDF adalah salah satu cara untuk mempermudah pengelolaan file berukuran besar. Artikel ini akan membahas langkah-langkah pembuatan aplikasi kompres PDF menggunakan Python di Google Colab. Artikel ini juga dirancang untuk memberikan panduan yang mudah dipahami oleh mahasiswa, dengan penjelasan teknis yang terstruktur dan sistematis.

Pendahuluan

Pada artikel ini, Anda akan mempelajari:

  • Cara menggunakan library Python populer, yaitu PyMuPDF (fitz) dan PyPDF2.
  • Langkah-langkah menyusun aplikasi Python untuk mengompres file PDF di Google Colab.
  • Penjelasan rinci tentang kode yang digunakan, lengkap dengan alasan dan teknik penerapannya.

Artikel ini dirancang agar anda dapat memahami proses kompresi PDF secara mendalam, serta memberikan solusi praktis untuk digunakan dalam berbagai kebutuhan akademik maupun profesional.

Struktur Kode

Berikut adalah struktur kode lengkap untuk aplikasi kompres PDF:

1. Library yang Digunakan

import fitz # PyMuPDF
from PyPDF2 import PdfReader, PdfWriter
import shutil
import os

Penjelasan library yang digunakan:

  • fitz (PyMuPDF): Library untuk membaca dan memanipulasi file PDF, termasuk mengubah skala halaman dengan resolusi tertentu.

  • PyPDF2: Library yang berfungsi untuk mengoptimalkan struktur file PDF setelah diproses oleh PyMuPDF.

  • shutil, os: Library tambahan untuk pengelolaan file sementara selama proses kompresi.

2. Fungsi Kompresi PDF

def compress_pdf(input_file, output_file, compression_percentage):

  • Parameter yang Digunakan:

    • input_file: Jalur file PDF yang akan dikompresi.

    • output_file: Jalur tempat menyimpan file PDF yang telah dikompresi.

    • compression_percentage: Persentase kompresi yang diinginkan (nilai antara 1-100).

  • Validasi Input: Fungsi akan memverifikasi apakah persentase kompresi berada dalam rentang yang diizinkan, yaitu antara 1 hingga 100.

3. Teknik Kompresi

Teknik 1: Menggunakan PyMuPDF

def compress_with_fitz(input_file, temp_file, compression_percentage):
compression_factor = compression_percentage / 100.0
pdf_document = fitz.open(input_file)
compressed_document = fitz.open()

for page_num in range(len(pdf_document)):
page = pdf_document[page_num]
pix = page.get_pixmap(matrix=fitz.Matrix(compression_factor, compression_factor))
compressed_document.new_page(-1, width=pix.width, height=pix.height)
compressed_document[-1].insert_image(compressed_document[-1].rect, pixmap=pix)

compressed_document.save(temp_file)
compressed_document.close()
pdf_document.close()

Penjelasan Teknik:

  • fitz.Matrix: Digunakan untuk mengubah skala halaman PDF berdasarkan faktor kompresi.

  • PixMap: Menyediakan representasi raster dari halaman PDF yang dapat diubah ukurannya.

  • new_page & insert_image: Menambahkan halaman baru dan menyisipkan gambar hasil render dari PixMap.

Teknik 2: Menggunakan PyPDF2

def optimize_with_pypdf2(temp_file, output_file):
reader = PdfReader(temp_file)
writer = PdfWriter()

for page in reader.pages:
writer.add_page(page)

with open(output_file, “wb”) as f:
writer.write(f)

Penjelasan Teknik:

  • PdfReader: Berfungsi untuk membaca file PDF yang telah diproses.

  • PdfWriter: Digunakan untuk membuat dan menyimpan file PDF yang terkompresi.

  • Tujuan: Menghapus metadata atau elemen tidak penting dari file PDF, sehingga ukuran file menjadi lebih kecil.

4. Integrasi di Google Colab

from google.colab import files

if __name__ == “__main__”:
compression_percentage = int(input(“Enter compression percentage (1-100, where 100 is no compression): “))

print(“Please upload the PDF file to compress:”)
uploaded = files.upload()

for input_file in uploaded.keys():
output_file = input_file.replace(“.pdf”, “_compressed.pdf”)
compress_pdf(input_file, output_file, compression_percentage)

print(f”Compressed file {output_file} is ready for download.”)
files.download(output_file)

Fitur Utama di Google Colab:

  • files.upload(): Memungkinkan pengguna untuk mengunggah file PDF dari perangkat mereka.

  • files.download(): Memungkinkan pengguna untuk mengunduh file PDF yang telah dikompresi.

5. Keunggulan Teknik

  • PyMuPDF: Memberikan fleksibilitas untuk mengurangi resolusi halaman, cocok untuk dokumen yang memiliki banyak elemen visual seperti gambar.

  • PyPDF2: Memastikan struktur dokumen tetap utuh dan metadata tidak relevan dihapus.

Hasil Akhir

Dengan aplikasi ini, mahasiswa dapat:

  1. Mengunggah file PDF mereka ke Google Colab.

  2. Menentukan tingkat kompresi yang sesuai.

  3. Mengunduh file PDF hasil kompresi dengan ukuran lebih kecil namun tetap berkualitas baik.

Kesimpulan

Aplikasi Python ini adalah solusi praktis yang dirancang untuk membantu anda dan profesional dalam mengelola file PDF besar. Dengan memanfaatkan PyMuPDF dan PyPDF2, aplikasi ini menghasilkan file yang terkompresi dengan optimal tanpa kehilangan elemen penting. Artikel ini juga menyoroti pentingnya struktur dan teknik SEO dalam menjangkau pembaca yang relevan.

Proses Pembuatan Aplikasi Web Laravel SIM Hibah UNHASY Tahap Satu

Proses Pembuatan Aplikasi Web Laravel SIM Hibah UNHASY Tahap Satu

Pembuatan aplikasi web Sistem Informasi Manajemen Hibah Universitas Hasyim Asy’ari (SIM HIBAH UNHASY) menggunakan framework Laravel dilakukan secara bertahap untuk memastikan setiap komponen aplikasi berjalan optimal. Artikel ini membahas langkah-langkah yang dilakukan pada tahap pertama proses pengembangan, dengan penekanan pada teknik SEO-friendly agar aplikasi mudah ditemukan oleh pengguna di mesin pencari.

1. Analisis Kebutuhan dan Perencanaan Sistem

Tahap pertama dalam pengembangan SIM Hibah adalah analisis kebutuhan. Langkah ini mencakup:

  • Identifikasi kebutuhan pengguna:

    • Memahami alur pengelolaan hibah di UNHASY.

    • Mengidentifikasi data yang perlu dikelola, seperti data proposal, penerima hibah, dan laporan penggunaan dana.

  • Perancangan awal:

    • Membuat flowchart dan diagram alur proses aplikasi.

    • Menyusun fitur-fitur utama seperti pendaftaran hibah, verifikasi, dan pelaporan.

Hasil analisis ini menjadi dasar pembuatan dokumentasi teknis untuk pengembangan aplikasi.

2. Persiapan Lingkungan Pengembangan

Langkah berikutnya adalah menyiapkan lingkungan kerja untuk pengembangan aplikasi Laravel:

  • Instalasi Laravel:

    • Mengunduh versi terbaru Laravel melalui Composer.

    • Mengatur konfigurasi awal seperti file .env untuk koneksi database.

  • Database:

    • Mendesain struktur database menggunakan MySQL atau MariaDB.

    • Membuat tabel utama seperti tabel pengguna, tabel proposal, dan tabel laporan.

  • Integrasi Git:

    • Menggunakan sistem kontrol versi Git untuk mencatat setiap perubahan kode.

3. Pengembangan Fitur Dasar

Pada tahap pertama ini, pengembangan fokus pada fitur dasar yang menjadi inti dari SIM Hibah:

  • Autentikasi Pengguna:

    • Menggunakan fitur bawaan Laravel untuk login, registrasi, dan manajemen peran pengguna (admin, reviewer, penerima hibah).

  • Dashboard Admin:

    • Menyediakan panel admin untuk mengelola data pengguna, proposal, dan laporan hibah.

  • Formulir Pendaftaran Hibah:

    • Membuat form dinamis untuk pengajuan hibah.

    • Validasi input menggunakan fitur Laravel Validator.

Kesimpulan

Tahap pertama dalam pengembangan aplikasi SIM Hibah UNHASY berfokus pada perencanaan, pengembangan fitur dasar, dan optimasi SEO. Dengan fondasi ini, pengembangan ke tahap berikutnya dapat dilakukan dengan lebih efisien. Aplikasi ini diharapkan mampu mempermudah pengelolaan hibah di UNHASY sekaligus meningkatkan transparansi dan efisiensi proses administrasi.

Keyword: Laravel, SIM Hibah, UNHASY, pembuatan aplikasi, sistem informasi, optimasi SEO.

Membuat RESTful API Chat Multi-User Menggunakan Laravel: Panduan Lengkap

Membuat RESTful API Chat Multi-User Menggunakan Laravel: Panduan Lengkap

Laravel adalah framework PHP yang kuat dan fleksibel, menjadikannya pilihan terbaik untuk membangun aplikasi seperti sistem chat multi-user. Dalam tutorial ini, Anda akan mempelajari cara membuat RESTful API untuk mendukung fitur chat multi-user menggunakan Laravel.

1. Persiapan Awal

Langkah pertama adalah memastikan Laravel terinstal di sistem Anda. Jika belum, instal Laravel menggunakan Composer:

composer create-project –prefer-dist laravel/laravel chat-api
cd chat-api
php artisan serve

Laravel akan berjalan di server lokal. Selanjutnya, kita mulai membangun API chat multi-user.

2. Struktur Database

Sistem chat multi-user memerlukan tabel berikut:

  1. Users: Menyimpan informasi pengguna.
  2. Messages: Menyimpan pesan chat.
  3. Chat Rooms (opsional): Jika sistem mendukung chat dalam grup.

Membuat Model dan Migrasi

Gunakan perintah berikut untuk membuat model dan migrasi:

php artisan make:model User -m
php artisan make:model Message -m
php artisan make:model ChatRoom -m

Kemudian, edit file migrasi:

  • Tabel users (bawaan Laravel, hanya tambahkan kolom jika perlu):

Schema::create(‘users’, function (Blueprint $table) {
$table->id();
$table->string(‘name’);
$table->string(’email’)->unique();
$table->timestamp(’email_verified_at’)->nullable();
$table->string(‘password’);
$table->timestamps();
});

Tabel messages

Schema::create(‘messages’, function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger(‘sender_id’);
$table->unsignedBigInteger(‘receiver_id’)->nullable(); // Untuk pesan langsung
$table->unsignedBigInteger(‘chat_room_id’)->nullable(); // Untuk pesan grup
$table->text(‘message’);
$table->timestamps();

$table->foreign(‘sender_id’)->references(‘id’)->on(‘users’)->onDelete(‘cascade’);
$table->foreign(‘receiver_id’)->references(‘id’)->on(‘users’)->onDelete(‘cascade’);
$table->foreign(‘chat_room_id’)->references(‘id’)->on(‘chat_rooms’)->onDelete(‘cascade’);
});

Tabel chat_rooms:

Schema::create(‘chat_rooms’, function (Blueprint $table) {
$table->id();
$table->string(‘name’);
$table->timestamps();
});

Jalankan migrasi:

php artisan migrate

3. Membuat API Endpoint

Buka file routes/api.php dan tambahkan route berikut:

User Authentication

Tambahkan endpoint untuk registrasi dan login:

use App\Http\Controllers\UserController;

Route::post(‘/register’, [UserController::class, ‘register’]);
Route::post(‘/login’, [UserController::class, ‘login’]);

Pesan

Tambahkan endpoint untuk mengirim dan mengambil pesan:

use App\Http\Controllers\MessageController;

Route::middleware(‘auth:sanctum’)->group(function () {
Route::get(‘/messages’, [MessageController::class, ‘index’]); // Ambil semua pesan
Route::post(‘/messages’, [MessageController::class, ‘store’]); // Kirim pesan
});

Chat Room (opsional)

Jika mendukung grup chat:

use App\Http\Controllers\ChatRoomController;

Route::middleware(‘auth:sanctum’)->group(function () {
Route::get(‘/chat-rooms’, [ChatRoomController::class, ‘index’]);
Route::post(‘/chat-rooms’, [ChatRoomController::class, ‘store’]);
});

4. Membuat Controller

UserController

Tambahkan logika registrasi dan login:

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
public function register(Request $request)
{
$user = User::create([
‘name’ => $request->name,
’email’ => $request->email,
‘password’ => Hash::make($request->password),
]);
return response()->json($user, 201);
}

public function login(Request $request)
{
$user = User::where(’email’, $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
$token = $user->createToken(‘chat-api-token’)->plainTextToken;
return response()->json([‘token’ => $token], 200);
}
return response()->json([‘error’ => ‘Invalid credentials’], 401);
}
}

MessageController

Tambahkan logika untuk pesan:

namespace App\Http\Controllers;

use App\Models\Message;
use Illuminate\Http\Request;

class MessageController extends Controller
{
public function index(Request $request)
{
$messages = Message::where(‘receiver_id’, $request->user()->id)
->orWhere(‘sender_id’, $request->user()->id)
->get();
return response()->json($messages);
}

public function store(Request $request)
{
$message = Message::create([
‘sender_id’ => $request->user()->id,
‘receiver_id’ => $request->receiver_id,
‘message’ => $request->message,
]);
return response()->json($message, 201);
}
}

buatkan ChatRoomController:

namespace App\Http\Controllers;

use App\Models\ChatRoom;
use Illuminate\Http\Request;

class ChatRoomController extends Controller
{
public function index()
{
return response()->json(ChatRoom::all());
}

public function store(Request $request)
{
$chatRoom = ChatRoom::create($request->all());
return response()->json($chatRoom, 201);
}
}

 

5. Pengujian API

Gunakan Postman atau cURL untuk menguji endpoint. Berikut contoh:

  • POST /register: Daftarkan pengguna.
  • POST /login: Login dan dapatkan token.
  • GET /messages: Ambil semua pesan.
  • POST /messages: Kirim pesan baru.
6. Keamanan API

Gunakan Laravel Sanctum untuk autentikasi berbasis token. Instal dan konfigurasikan Sanctum:

composer require laravel/sanctum
php artisan vendor:publish –provider=”Laravel\Sanctum\SanctumServiceProvider”
php artisan migrate

use App\Http\Controllers\MessageController;

Route::middleware(‘auth:sanctum’)->group(function () {
Route::get(‘/messages’, [MessageController::class, ‘index’]); // Ambil semua pesan
Route::post(‘/messages’, [MessageController::class, ‘store’]); // Kirim pesan
Route::delete(‘/messages/{id}’, [MessageController::class, ‘destroy’]); // Hapus pesan
});

 

use App\Http\Controllers\MessageController;
use App\Http\Controllers\AuthController;

Route::post(‘/login’, [AuthController::class, ‘login’]);

Route::middleware(‘auth:sanctum’)->group(function () {
Route::get(‘/messages’, [MessageController::class, ‘index’]);
Route::post(‘/messages’, [MessageController::class, ‘store’]);
Route::delete(‘/messages/{id}’, [MessageController::class, ‘destroy’]);
});