lapeeh adalah framework Node.js berbasis Express dan TypeScript yang dirancang untuk kecepatan dan skalabilitas. Menggabungkan fleksibilitas Express dengan struktur solid ala Laravel dan NestJS, lapeeh memberikan pengalaman development REST API yang cepat, terstandarisasi, dan siap produksi.
Cocok untuk developer yang mencari Express boilerplate dengan fitur lengkap: Authentication, dan Zero-Config Redis.
- Production Ready: Struktur folder modular (MVC) yang mudah dikembangkan.
- TypeScript First: Full type-safety untuk mengurangi runtime error.
- Database Agnostic: Bebas pilih database dan ORM pilihan Anda.
- Standardized Structure: Controller, Service, dan Route yang terpisah rapi.
- Auto CLI Generator: Buat modul dan controller dengan satu perintah.
- Integrated Testing: Perintah
npx lapeeh tesuntuk menjalankan Jest & JSON Server otomatis. - Smart Caching: Otomatis menggunakan Redis jika tersedia, fallback ke in-memory jika tidak.
- Secure by Default: Dilengkapi Helmet, Rate Limiting, CORS, dan JWT Auth.
- Robust Validation: Validasi request otomatis menggunakan Zod.
- High Performance: Mendukung Fast-Serialization (Fastify-style) untuk response JSON super cepat.
- Scalable: Siap untuk deployment Cluster/Load Balancer dengan Redis Store.
lapeeh Framework akan terus berkembang menjadi solusi Enterprise yang lengkap. Kami memiliki rencana besar untuk fitur-fitur seperti Job Queues, Storage Abstraction (S3), Mailer, dan OpenAPI Generator.
Lihat detail rencana pengembangan di ROADMAP.md.
lapeeh adalah proyek Open Source dan kami sangat terbuka untuk kontribusi dari komunitas! Baik itu perbaikan bug, penambahan fitur, atau perbaikan dokumentasi.
Ingin ikut berkontribusi? Silakan baca Panduan Kontribusi (CONTRIBUTING.md) untuk memulai.
Kami menyusun "Learning Path" agar Anda bisa memahami framework ini dari nol hingga mahir.
- Pengenalan Framework: Mengapa framework ini ada? Apa bedanya dengan yang lain?
- Getting Started: Instalasi dan setup awal.
- Bedah Struktur Folder: Pahami fungsi setiap file dan direktori.
- Referensi Package: Penjelasan kegunaan setiap library yang terinstall.
- Cheatsheet (Contekan): Daftar perintah & kode cepat.
- CLI Tools: Percepat kerja dengan generator kode (
make:module, dll). - Tutorial Studi Kasus: Bikin API "Perpustakaan" dari nol sampai jadi.
- Fitur & Konsep Inti: Validasi, Auth, RBAC, dan Serializer.
- Performance Guide: Tips optimasi high-scale app.
- Security Best Practices: Panduan mengamankan aplikasi.
- Deployment Guide: Cara deploy ke VPS, Docker, atau Cloud.
- FAQ & Troubleshooting: Solusi masalah umum.
- Changelog: Riwayat versi.
Anda dapat menginstall framework ini menggunakan versi terbaru:
npx lapeeh@latest nama-project-andaPerintah di atas akan membuat proyek bersih (clean slate):
- Struktur folder dibuat.
- Dependensi diinstall.
- Folder
bindanlibframework tersembunyi dinode_modulesagar root proyek Anda tetap rapi.
- Struktur project dibuat (Core framework tersembunyi sebagai dependency).
- Dependencies diinstall.
- JWT Secret di-generate otomatis.
Masuk ke folder project dan jalankan:
cd nama-project-anda
npm run devCatatan: Perintah
npm run devsekarang menggunakan CLI internal framework (lapeeh dev), memberikan pengalaman development yang lebih stabil dan terstandarisasi. Core framework (bindanlib) tidak lagi memenuhi root folder Anda, tetapi tersimpan aman sebagai dependency.
Server akan berjalan di http://localhost:8000.
Framework ini didesain dengan memprioritaskan keamanan:
- Zero-Vulnerability Policy: Kami secara rutin melakukan audit dependensi (
npm audit) untuk memastikan tidak ada celah keamanan. - Framework-as-Dependency: Dengan menyembunyikan core logic di
node_modules, pembaruan framework menjadi lebih mudah (cukup update versi@lapeeh/lapeehdipackage.json) tanpa merusak kode aplikasi Anda.
Jika Anda memiliki project lama yang dibuat dengan versi lapeeh sebelumnya dan ingin memperbarui struktur, scripts, dan konfigurasi ke standar terbaru (termasuk keamanan Redis baru), Anda tidak perlu membuat project ulang.
Cukup jalankan perintah ini di dalam folder project Anda:
npx lapeeh@latest upgradePerintah ini akan secara otomatis:
- Mengupdate
scripts/(termasuk generator controller baru). - Mengupdate
docker-compose.yml(keamanan Redis). - Mengupdate dependencies di
package.json. - Menambahkan konfigurasi
.vscodedantsconfigterbaru.
Catatan: File
.envAnda tidak akan ditimpa, namun kami akan mengupdate.env.examplesebagai referensi konfigurasi terbaru.
lapeeh otomatis mendeteksi ketersediaan Redis.
- Auto-Discovery: Mencoba terhubung ke Redis URL di
.env(REDIS_URL). - Smart Fallback: Jika Redis tidak tersedia atau koneksi gagal, otomatis beralih ke In-Memory Mock.
- Tidak perlu install Redis di local development.
- Fitur rate-limiting dan caching tetap berjalan (namun data hilang saat restart).
- Production Safety: Memberikan peringatan log jika berjalan di Production menggunakan Mock.
Force Mock Mode: Anda bisa memaksa menggunakan mock (misal untuk testing) dengan menambahkan env variable:
NO_REDIS=trueJika Anda ingin menggunakan Redis yang sebenarnya di local environment, kami telah menyertakan konfigurasi docker-compose.yml yang aman (menggunakan ACL).
-
Jalankan Redis container:
docker-compose up -d
-
Uncomment konfigurasi Redis di file
.envAnda:REDIS_URL="redis://lapeeh:12341234@localhost:6379"
Credential Default:
- User:
lapeeh - Password:
12341234
- User:
API lapeeh menyediakan tools untuk mempercepat development, mirip dengan artisan di Laravel.
Membuat Controller, Service, dan Route sekaligus.
npx lapeeh make:module NamaResource
# Contoh: npx lapeeh make:module ProductCommand ini akan membuat:
src/controllers/product.controller.tssrc/services/product.service.tssrc/routes/product.route.ts(dan otomatis didaftarkan disrc/routes/index.tsjika memungkinkan)
Since the latest version, lapeeh Framework does not include a default ORM (like Prisma). We believe in giving you full control over your database stack.
You can freely choose to use:
- Prisma (Manual installation)
- TypeORM
- Drizzle ORM
- Mongoose
- Raw SQL (pg, mysql2)
The framework provides a Validator class for request validation and a Serializer for response formatting, but data persistence is up to you.
Jika Anda perlu me-refresh secret key JWT:
npm run generate:jwtMembersihkan cache framework, NPM, build artifacts, dan temporary files (sangat berguna jika mengalami isu cache aneh atau ingin reset environment development).
npm run config:clear- Menghapus
node_modules/.cache - Menghapus
dist/ - Menghapus
dump.rdb(Redis Persistence) - Membersihkan
npm cache
src/
โโโ controllers/ # Logika Request & Response
โโโ services/ # Business Logic
โโโ routes/ # Definisi Route API
โโโ middleware/ # Auth, Validation, Error Handling
โโโ schema/ # Zod Validation Schemas
โโโ utils/ # Helper Functions
โโโ index.ts # App Entry Point
MIT
- Build:
npm run build - Start (dev):
npm run start - Start (prod):
npm run start:prod
- Pastikan
.envberisi kredensial production:JWT_SECRET(gunakan string acak yang kuat)- Database credentials (sesuai pilihan ORM/DB Anda)
- Install PM2:
npm i -g pm2- Jalankan aplikasi:
pm2 start dist/src/index.js --name lapeeh-api --time- Simpan proses agar auto-start saat reboot:
pm2 save
pm2 startup- Monitoring:
pm2 status
pm2 logs lapeeh-api
pm2 restart lapeeh-api- Buat server block
/etc/nginx/sites-available/lapeeh:
server {
listen 80;
server_name example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8000;
}
}- Aktifkan:
sudo ln -s /etc/nginx/sites-available/lapeeh /etc/nginx/sites-enabled/lapeeh
sudo nginx -t
sudo systemctl reload nginx- SSL (opsional, Certbot):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com- Enable modul proxy:
sudo a2enmod proxy proxy_http headers
sudo systemctl reload apache2- Buat vhost
/etc/apache2/sites-available/lapeeh.conf:
<VirtualHost *:80>
ServerName example.com
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
ErrorLog ${APACHE_LOG_DIR}/lapeeh-error.log
CustomLog ${APACHE_LOG_DIR}/lapeeh-access.log combined
</VirtualHost>- Aktifkan:
sudo a2ensite lapeeh.conf
sudo apachectl configtest
sudo systemctl reload apache2pm2 statusmenunjukkan proses hidup- Proxy (Nginx/Apache) menuju port aplikasi (default 8000)
.envaman dan tidak di-commit ke repository