Proyek backend aplikasi Masakin ini bertujuan untuk menyediakan platform yang memudahkan pengguna dalam menemukan dan berbagi resep makanan dari berbagai negara. Aplikasi ini akan membantu pengguna mengeksplorasi berbagai masakan internasional, mempelajari teknik memasak baru, dan membagikan pengalaman mereka dengan komunitas global.
Fitur | Deskripsi |
---|---|
Database Resep | Menyediakan berbagai resep dari berbagai negara dengan informasi lengkap seperti bahan, langkah-langkah, waktu memasak, dan tingkat kesulitan. |
Pengguna dan Otentikasi | Menggunakan JWT untuk mengamankan akses pengguna, dengan fitur registrasi, login, dan pengelolaan profil. |
Pencarian dan Kategori | Memungkinkan pengguna untuk mencari resep berdasarkan negara asal, jenis masakan, bahan utama, dan lain-lain. |
Favorit dan Ulasan | Pengguna dapat menyimpan resep favorit dan memberikan ulasan serta rating untuk setiap resep. |
Integrasi API | Menyediakan API yang memungkinkan pengembang lain untuk mengakses data resep untuk keperluan integrasi dengan aplikasi lain. |
Teknologi | Deskripsi |
---|---|
Framework | Flask sebagai framework utama untuk pengembangan backend. |
Manajemen Dependensi | Poetry sebagai aplikasi utama untuk instalasi dependensi yang akan dipakai backend. |
Database | PostgreSQL untuk penyimpanan data resep dan pengguna pakai supabase dan dbeaver. |
ORM | SQLAlchemy untuk mengelola interaksi dengan database. |
Autentikasi | JSON Web Tokens (JWT) untuk mengamankan rute API. |
Penyimpanan Gambar | Menggunakan layanan penyimpanan cloud dari Supabase untuk database gambar resep, bahan, alat masak, langkah masak. |
Docker | Untuk containerisasi aplikasi guna memudahkan deployment dan skala. |
- Models: Definisi model database untuk resep, pengguna, dan ulasan.
- Routes: Pengaturan rute API untuk berbagai operasi seperti pengelolaan resep, otentikasi pengguna, dan fitur komunitas.
- Services: Layanan untuk logika bisnis seperti pencarian resep, pengelolaan favorit/ bookmark.
Untuk menyiapkan proyek secara lokal, ikuti langkah-langkah berikut:
- Clone repositori.
- Install dependensi menggunakan Poetry.
- Menghubungkan ke Supabase PostgreSQL.
- Tambahkan flask-migrate.
- Konfigurasikan variabel lingkungan.
- Jalankan aplikasi.
- Tambahkan pengaturan database PostgreSQL dari Supabase ke dalam file .env proyekmu:
DB_NAME=your_database_name DB_USER=your_user DB_PASSWORD=your_password DB_HOST=your_host DB_PORT=your_port DATABASE_URI=postgresql://your_user:your_password@your_host:your_port/your_database_name
- Update Konfigurasi Aplikasi
Pastikan aplikasi Flask kamu dikonfigurasi untuk menggunakan URI PostgreSQL yang telah ditentukan di .env. Di file konfigurasi utama aplikasi Flask, pastikan kamu memuat variabel lingkungan dari .env menggunakan python-dotenv:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from dotenv import load_dotenv import os load_dotenv() # Memuat variabel lingkungan dari .env app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URI') db = SQLAlchemy(app) # Import models setelah inisialisasi from your_application import models
-
Pastikan variabel lingkungan Anda dikonfigurasi dengan benar. Contoh
DATABASE_URI
untuk PostgreSql:DATABASE_URI = f"{DB_TYPE}://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
-
Install paket yang diperlukan menggunakan "poetry add":
poetry add flask sqlalchemy psycopg2-binary
-
Jalankan aplikasi
Flask
Anda:poetry run flask --app app run
Dengan mengikuti langkah-langkah ini, Anda seharusnya dapat terhubung dengan sukses ke database PostgreSQL Anda menggunakan SQLAlchemy dalam aplikasi Flask Anda.
-
Install Flask-Migrate Pertama, pastikan Flask-Migrate terinstal sebagai dependensi proyek. Kamu bisa menambahkannya ke proyek menggunakan Poetry:
poetry add flask-migrate
-
Konfigurasi Aplikasi Flask Pastikan aplikasi Flask kamu dikonfigurasi dengan Flask-Migrate. Di file konfigurasi utama aplikasi Flask kamu, tambahkan kode berikut:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from dotenv import load_dotenv load_dotenv() # Memuat variabel lingkungan dari .env app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/dbname' db = SQLAlchemy(app) migrate = Migrate(app, db) # Import models setelah inisialisasi from your_application import models #Gantilah postgresql://user:password@localhost/dbname dengan URI database PostgreSQL kamu yang sesuai.
-
Inisialisasi Flask-Migrate Untuk memulai menggunakan Flask-Migrate, inisialisasi folder migrasi dengan perintah berikut:
poetry run flask db init #Ini akan membuat folder migrations di direktori proyek kamu
-
Membuat Migrasi, Mengaplikasikan Migrasi dan Rollback Migrasi(Opsional) Setelah kamu membuat atau memodifikasi model database, buatlah skrip migrasi dengan perintah berikut:
poetry run flask db migrate -m "Deskripsi migrasi" #Gantilah "Deskripsi migrasi" dengan deskripsi yang relevan tentang perubahan yang dilakukan.
Terapkan migrasi yang telah dibuat ke database dengan perintah berikut:
poetry run flask db upgrade
Jika kamu perlu membatalkan migrasi, kamu bisa menggunakan:
poetry run flask db downgrade
Dengan mengikuti langkah-langkah ini, kamu dapat mengkonfigurasi dan menggunakan Flask-Migrate dengan Poetry dalam proyek Flask kamu. Ini memungkinkan kamu untuk mengelola perubahan skema database secara efisien.
Aplikasi backend ini telah dideploy menggunakan layanan Vercel dan dapat diakses melalui URL berikut: https://masakinprojectbe.vercel.app/. URL ini dapat digunakan oleh aplikasi frontend untuk mengakses berbagai endpoint yang disediakan oleh backend, seperti manajemen resep, otentikasi pengguna, dan lain-lain.
Untuk mempermudah akses dan penggunaan API, dokumentasi API aplikasi Masakin tersedia di Postman.
Kamu dapat mengimpor koleksi Postman menggunakan url ini https://documenter.getpostman.com/view/32137902/2sA3e1DAgX#intro
dan dapat juga menggunakan Swagger dengan url ini untuk ujicoba : https://masakinprojectbe.vercel.app/swagger/.
Dokumentasi ini mencakup:
- Endpoint API: Deskripsi lengkap setiap endpoint, metode HTTP, parameter, dan contoh permintaan serta respons.
- Autentikasi: Panduan penggunaan JWT untuk autentikasi API (Bearer Token).
- Contoh Permintaan: Contoh permintaan GET, POST, PUT, DELETE untuk berbagai endpoint.
Nama | Peran | Kontak |
---|---|---|
Iman Maris | Pengembang Backend (Setup Database, Relasi antar models, dll) | [email protected] |
Yosaphat Harwindra | Pengembang Backend (CRUD API , tester/ debuger) | [email protected] |
Semoga proyek ini dapat berjalan dengan lancar dan memberikan manfaat pembelajaran bagi kami sebagai pengembang. Terima kasih semua.
Made by the Masakin Project Team (July 2024).
Powered by Vercel and Supabase.