MiniServe adalah sebuah API server yang dibangun menggunakan Rust dengan framework Actix Web dan database SQLite. Aplikasi ini menyediakan fitur-fitur dasar seperti registrasi, login, manajemen pengguna, dan autentikasi menggunakan JWT (JSON Web Token).
- Registrasi Pengguna: Buat akun baru dengan nama, email, dan sandi.
- Login Pengguna: Dapatkan token JWT untuk akses terproteksi.
- Manajemen Pengguna:
- Baca daftar pengguna.
- Perbarui informasi pengguna.
- Hapus pengguna.
- Autentikasi JWT: Proteksi endpoint dengan token JWT.
- Bahasa Pemrograman: Rust
- Framework Web: Actix Web
- Database: SQLite
- Autentikasi: JWT (JSON Web Token)
- Hashing Password: Argon2
- Environment Management: dotenv
- Logging: env_logger
- Rust: Pastikan Rust terinstal. Jika belum, instal dari rustup.rs.
- SQLx CLI: Instal SQLx CLI untuk migrasi database:
cargo install sqlx-cli
-
Clone Repositori:
git clone https://github.com/Kynonim/MiniServe.git cd MiniServe -
Setup Environment: Buat file
.envdi root direktori dan isi dengan:JWT_KEY="secret_key" JWT_DURASI=10000 # 10000 detik DATABASE_URL="imphnen.db"
-
Jalankan Migrasi Database:
sqlx database create sqlx migrate run
-
Jalankan Server:
cargo run
Server akan berjalan di
http://127.0.0.1:2025.
Endpoint: POST /api/public/signup
Body:
{
"nama": "Riky Ripaldo",
"email": "riky@imphnen.scroll",
"sandi": "Admin#123"
}Endpoint: POST /api/public/signin
Body:
{
"email": "riky@imphnen.scroll",
"sandi": "Admin#123"
}Endpoint: GET /api/private/users
Header:
Authorization: Bearer <JWT Token>Endpoint: PUT /api/private/users/:id
Header:
Authorization: Bearer <JWT Token>Body:
{
"nama": "Riky Ripaldo",
"email": "riky@imphnen.malas",
"sandi": "321#nimdA"
}Endpoint: DELETE /api/private/users/:id
Header:
Authorization: Bearer <JWT Token>Body (Optional):
{
"nama": "Riky Ripaldo",
"email": "riky@imphnen.scroll",
"sandi": "Admin#123"
}curl -X POST http://localhost:2025/api/public/signup \
-H "Content-Type: application/json" \
-d '{
"nama": "Riky Ripaldo",
"email": "riky@imphnen.scroll",
"sandi": "Admin#123"
}'curl -X POST http://localhost:2025/api/public/signin \
-H "Content-Type: application/json" \
-d '{
"email": "riky@imphnen.scroll",
"sandi": "Admin#123"
}'curl -X GET http://localhost:2025/api/private/users \
-H "Authorization: Bearer <JWT Token>"- Password Hashing: Sandi pengguna di-hash menggunakan Argon2.
- JWT: Autentikasi menggunakan token JWT dengan waktu ekspirasi.
- Environment Variables: Konfigurasi sensitif disimpan di file
.env. - Custom Logging: Log hanya mencatat informasi penting seperti IP, URL, Method, Speed, Request Code.
Kami sangat menerima kontribusi! Jika Anda ingin berkontribusi, silakan buka issue atau kirim pull request.
Proyek ini dilisensikan di bawah MIT License. Lihat file LICENSE untuk detail lebih lanjut.
Terima kasih telah menggunakan MiniServe! Jika Anda memiliki pertanyaan atau masukan, silakan buka issue atau hubungi kami.