# Migrasi dari Next.js ke Laravel: Panduan untuk Developer JavaScript

Developer yang sudah terbiasa dengan Next.js sering kali bertanya-tanya, "Bagaimana cara saya bermigrasi ke Laravel dengan mulus, terutama jika saya ingin membuat aplikasi yang lebih fleksibel seperti backend API untuk mobile app atau SPA?" Artikel ini akan membahas perbandingan konsep antara Next.js dan Laravel, serta memberikan panduan praktis untuk migrasi.

---

## 1\. Mengapa Migrasi dari Next.js ke Laravel?

Beberapa alasan umum mengapa developer bermigrasi dari Next.js ke Laravel:

* Butuh struktur backend yang kuat dan mature
    
* Ingin membuat backend API yang bisa digunakan oleh mobile app
    
* Laravel menawarkan banyak fitur built-in: autentikasi, validasi, ORM, dll
    
* Lebih cocok untuk tim atau proyek yang ingin memisahkan frontend dan backend
    

---

## 2\. Perbandingan Konsep: Next.js vs Laravel

| Konsep | Next.js | Laravel |
| --- | --- | --- |
| Routing | Folder-based | File `routes/web.php` dan `api.php` |
| API | File di `pages/api` | Controller dengan route API |
| Server-side rendering | `getServerSideProps` | Blade / JSON response |
| State management | React state / Tanstack / Redux | Vue (jika pakai Inertia) / JSON API |
| Database ORM | Prisma / Custom | Eloquent ORM |
| Middleware | `middleware.ts` | Middleware Laravel |
| Auth | NextAuth, Custom | Laravel Sanctum, Breeze, Jetstream |
| Validation | Zod, Yup | Built-in request validation |

---

## 3\. Setup Laravel sebagai Backend API

Jika kamu ingin Laravel hanya sebagai backend:

1. Buat project Laravel
    

```bash
composer create-project laravel/laravel backend-api
```

2. Buat route di `routes/api.php`
    

```php
Route::get('/users', [UserController::class, 'index']);
```

3. Buat controller:
    

```bash
php artisan make:controller Api/UserController
```

4. Isi controllernya:
    

```php
public function index() {
    return response()->json(User::all());
}
```

5. Test via Postman atau frontend app
    

---

## 4\. Autentikasi API dengan Laravel Sanctum

Laravel Sanctum sangat cocok untuk API:

### Instalasi

```bash
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
```

### Setup Middleware

Tambahkan ke grup `api` di `app/Http/Kernel.php`:

```php
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class
```

### Endpoint Login

```php
public function login(Request $request) {
    $credentials = $request->validate([
        'email' => 'required|email',
        'password' => 'required',
    ]);

    if (!auth()->attempt($credentials)) {
        return response()->json(['message' => 'Invalid credentials'], 401);
    }

    $token = auth()->user()->createToken('api-token')->plainTextToken;

    return response()->json(['token' => $token]);
}
```

---

## 5\. Contoh: Migrasi Halaman Next.js ke Laravel API + Frontend

### Next.js

```tsx
export async function getServerSideProps() {
  const res = await fetch('http://localhost:8000/api/users');
  const users = await res.json();
  return { props: { users } };
}
```

### Laravel + Vue/React (frontend bebas)

```php
// routes/api.php
Route::get('/users', fn() => User::all());
```

Frontend tinggal fetch ke API [`http://localhost:8000/api/users`](http://localhost:8000/api/users)

---

## 6\. Tips Migrasi

* Pisahkan logic frontend dan backend dengan jelas
    
* Buat dokumentasi API sejak awal
    
* Gunakan Laravel Resource untuk response JSON yang rapi
    
* Gunakan Postman untuk testing endpoint
    
* Bisa kombinasikan Laravel dengan Vue (tanpa Inertia) atau React
    

---

## Kesimpulan

Migrasi dari Next.js ke Laravel bukan berarti meninggalkan semua yang telah dipelajari, tapi memperluas kemampuan. Laravel memberi kamu kekuatan backend yang solid, sementara kamu tetap bisa pakai frontend favoritmu seperti Next.js atau Flutter.

Jika kamu sudah nyaman dengan JavaScript, Laravel akan terasa familiar karena banyak konsep serupa — hanya saja ditulis dalam PHP. Selamat mencoba!
