LAMSIA (Layanan Manajemen Smart Medication Box IoT) adalah sistem backend untuk kotak obat pintar berbasis IoT yang membantu pengguna mengelola jadwal dan konsumsi obat secara otomatis.
- Tentang Proyek
- Tech Stack
- Struktur Proyek
- Prasyarat
- Instalasi & Konfigurasi
- Menjalankan Server
- Migrasi Database
- Troubleshooting
LAMSIA-BACKEND adalah REST API berbasis FastAPI yang menjadi jembatan komunikasi antara perangkat keras IoT (Arduino / Raspberry Pi) dan aplikasi klien. Sistem ini mengelola data pengguna, jadwal konsumsi obat, dan status kotak obat secara real-time melalui protokol MQTT dan HTTP.
| Komponen | Teknologi |
|---|---|
| Framework API | FastAPI + Uvicorn |
| ORM / Database | SQLAlchemy + PyMySQL |
| Database | MySQL 8.0 |
| Konfigurasi Env | python-dotenv |
| Utilities | inflect, faker |
LAMSIA-BACKEND/
├── app/ # Kode utama aplikasi FastAPI
├── cli/ # CLI tools (seed data, utilitas)
├── tests/ # Unit & integration tests
├── create_tables.py # Script migrasi database
├── lamsia.py # Entry point alternatif
├── requirements.txt # Daftar dependensi Python
├── .env.example # Template konfigurasi environment
└── README.md
Pastikan sudah terinstall di sistem kamu:
git clone https://github.com/achul-cos/LAMSIA-BACKEND.git
cd LAMSIA-BACKENDDuplikat file .env.example dan rename menjadi .env:
# Windows
copy .env.example .env
# macOS / Linux
cp .env.example .envKemudian isi variabel berikut di .env:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=lamsia_dbBuka terminal MySQL dan buat database baru:
# Masuk ke MySQL
mysql -u root -p
# Atau jika perlu path lengkap (Windows)
# "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p-- Buat database
CREATE DATABASE lamsia_db;
-- Verifikasi
SHOW DATABASES;Output yang diharapkan:
+--------------------+
| Database |
+--------------------+
| information_schema |
| lamsia_db | ✓
| mysql |
| performance_schema |
| sys |
+--------------------+
# Buat venv
python -m venv venv
# Aktivasi (Windows PowerShell)
.\venv\Scripts\Activate.ps1
# Aktivasi (macOS / Linux)
source venv/bin/activateCatatan: Jika muncul error aktivasi di Windows, lihat bagian Troubleshooting.
pip install -r requirements.txtuvicorn app.main:app --reloadServer akan berjalan di: http://127.0.0.1:8000
Dokumentasi API otomatis tersedia di:
- Swagger UI → http://127.0.0.1:8000/docs
- ReDoc → http://127.0.0.1:8000/redoc
Untuk keluar dari virtual environment:
deactivateTabel database dibuat otomatis saat server pertama kali dijalankan melalui create_tables.py. Untuk memverifikasi hasilnya secara manual:
USE lamsia_db;
-- Cek tabel yang tersedia
SHOW TABLES;
-- Cek struktur tabel users
DESCRIBE users;Output yang diharapkan untuk DESCRIBE users:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| username | varchar(100) | NO | | NULL | |
| telephone | varchar(100) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
Jika muncul error berikut saat aktivasi venv:
.\venv\Scripts\Activate.ps1 cannot be loaded because running scripts is disabled on this system.
Solusi 1 — Ubah execution policy untuk user saat ini (disarankan):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserSolusi 2 — Bypass untuk sesi ini saja (jika tidak punya hak admin):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassSolusi 3 — Jalankan Python langsung via path venv (tanpa aktivasi):
# Cek versi
.\venv\Scripts\python.exe --version
# Lihat package terinstall
.\venv\Scripts\python.exe -m pip list
# Jalankan server
.\venv\Scripts\python.exe -m uvicorn app.main:app --reloadDibuat dengan ❤️ oleh Nasrullah (Achul) dan Steven