Quick Start¶
This guide will walk you through creating your first Tusk application in under 5 minutes.
Create a Project¶
php tusk.phar init my-api
cd my-api
This generates:
- composer.json - Dependency configuration
- docker-compose.yml - Local development environment
- public/index.php - Application entry point
- src/Controller/HomeController.php - Sample controller
Install Dependencies¶
composer install
Run the Server¶
Option 1: Native Server (Development)¶
php ../tusk.phar run public/index.php
Visit http://localhost:8080
Option 2: Docker (Production-like)¶
docker-compose up
Visit http://localhost:8000
Your First Endpoint¶
The generated project includes a sample controller:
<?php
namespace App\Controller;
use Tusk\Web\Attribute\Route;
use Tusk\Web\Http\Request;
use Tusk\Web\Http\Response;
class HomeController
{
#[Route('/', methods: ['GET'])]
public function index(Request $request): Response
{
return new Response(200, ['Content-Type' => 'application/json'], json_encode([
'message' => 'Welcome to Tusk!',
'version' => '0.7.0'
]));
}
}
Add a New Route¶
Create src/Controller/UserController.php:
<?php
namespace App\Controller;
use Tusk\Web\Attribute\Route;
use Tusk\Web\Http\Request;
use Tusk\Web\Http\Response;
class UserController
{
#[Route('/users', methods: ['GET'])]
public function list(Request $request): Response
{
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
];
return new Response(200, ['Content-Type' => 'application/json'],
json_encode($users));
}
}
Register it in public/index.php:
$router->registerControllers([
\App\Controller\HomeController::class,
\App\Controller\UserController::class, // Add this
]);
Visit http://localhost:8080/users to see your new endpoint!
Next Steps¶
- Learn about Your First App with database integration
- Explore the Architecture
- Read the CLI Usage Guide