quikapi/framework

QuikAPI - a lightweight, fast PHP microframework for building APIs quickly.

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:project

pkg:composer/quikapi/framework

v0.1.2 2025-09-30 11:14 UTC

This package is auto-updated.

Last update: 2025-09-30 11:15:12 UTC


README

A lightweight, fast PHP microframework for building APIs quickly.

Packagist Version PHP from Packagist Downloads License CI

  • Simple: Minimal concepts. Define routes and controllers that return arrays.
  • Fast: Tiny core with zeroheavy dependencies at runtime.
  • Modern: PSR-4, middleware, JSON-first, PDO-ready, .env support.
  • Productive: Built-in CLI to scaffold controllers/models/modules.

Requirements

  • PHP >= 8.1
  • ext-PDO (e.g., pdo_mysql)

Installation

Option A — Create a fresh project (recommended):

composer create-project quikapi/framework my-api
cd my-api
# .env will be auto-copied by composer scripts; if not:
cp .env.example .env

Option B — Use in an existing repo:

composer install
cp .env.example .env

Then edit .env for your DB and CORS settings.

Quickstart (Dev Server)

Run QuikAPI on PHP's built-in server:

php -S 127.0.0.1:8082 QuikAPI/server.php

Visit http://127.0.0.1:8082/health

{"status":"ok","time":"..."}

Routing

Add routes in QuikAPI/routes.php:

use QuikAPI\Controllers\HealthController;

$router->get('/health', [HealthController::class, 'index']);

Supported verbs: get, post, put, patch, delete. Path params: /users/{id} → available in $req->params['id'].

Controllers

Controllers are simple classes returning arrays. Example:

namespace QuikAPI\Controllers;

use QuikAPI\Http\Request;

class UserController {
    public function index(Request $req): array { return ['items' => []]; }
    public function show(Request $req): array { return ['id' => $req->params['id'] ?? null]; }
}

Middleware

Global middleware is registered in QuikAPI/index.php:

  • QuikAPI\Middleware\ErrorHandler → JSON error responses
  • QuikAPI\Middleware\Cors → CORS headers / OPTIONS

You can also pass route-specific middleware in Router::add().

Database (PDO)

Configure in .env:

DB_DSN=mysql:host=127.0.0.1;dbname=app;charset=utf8mb4
DB_USER=root
DB_PASS=

Use QuikAPI\Database\Connection::get() to obtain a shared PDO instance.

Security

Use QuikAPI\Security\Password for password hashing and verification:

$hash = Password::hash($plain);
$ok = Password::verify($plain, $hash);

CLI

Built-in simple CLI to scaffold modules:

php quikapi make:controller User
php quikapi make:model User
php quikapi make:module Post

This will append REST routes to QuikAPI/routes.php and create the controller/model.

Project Structure

QuikAPI/
  Controllers/
  Database/
  Http/
  Middleware/
  Security/
  routes.php
  index.php
  server.php
  cli.php

Roadmap

  • Symfony Console based CLI (route:list, serve, etc.)
  • Request/Response interfaces and typed responses
  • Validation utilities
  • Auth middleware (JWT/session)

Support & Policy

  • Branching: Default branch is master. Dev stability via branch-alias dev-master0.1.x-dev.
  • Versioning: Semantic Versioning. Breaking changes only in major releases.
  • Backward compatibility: No breaking changes in minor releases; deprecations announced one minor before removal.
  • Security: See SECURITY.md and report privately before disclosure.

License

MIT