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
Requires
- php: >=8.1
- illuminate/database: ^10.0
- illuminate/events: ^10.0
- illuminate/translation: ^10.0
- illuminate/validation: ^10.0
- symfony/console: ^6.4
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^11.0
- vimeo/psalm: ^5.0
This package is auto-updated.
Last update: 2025-09-30 11:15:12 UTC
README
A lightweight, fast PHP microframework for building APIs quickly.
- 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 responsesQuikAPI\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-aliasdev-master
→0.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