Packages
Quillstack is 36 packages. Each is released on its own, each can be installed on its own, and none of them needs the others to be useful — the framework is what happens when you take all of them at once.
Every page here is built from that package's own README, so what you read is what ships.
Start here
The framework itself, and the skeleton to start an application from.
| Package | Install as | What it does |
|---|---|---|
| The framework | quillstack/framework | Wires the parts together: the kernel, middleware, error handling and the console. |
| The skeleton | quillstack/quillstack | A working application to start from, with routes, a controller and tests already in place. |
HTTP
Everything a request touches on its way in, and a response on its way out. PSR-7, PSR-15, PSR-17 and PSR-18 throughout.
| Package | Install as | What it does |
|---|---|---|
| Router | quillstack/router | Matches a request to a controller, and says what a path answers to when it does not. |
| Middleware | quillstack/middleware | The PSR-15 stack a request passes through. |
| Server request | quillstack/server-request | The request as it arrived, built from the globals. |
| HTTP request | quillstack/http-request | The methods, and what each of them means. |
| Response | quillstack/response | What goes back, and the status codes that go with it. |
| HTTP client | quillstack/http-client | Sending a request somewhere else, over cURL. |
| URI | quillstack/uri | Taking a URI apart and putting it back together. |
| Stream | quillstack/stream | The body of a message, read a piece at a time. |
| Header bag | quillstack/header-bag | Headers, matched without regard for case. |
| Authentication | quillstack/auth | Who is asking, enforced by the route rather than remembered by the controller. |
Data
Getting things out of a database and back into one.
| Package | Install as | What it does |
|---|---|---|
| ORM | quillstack/orm | Entities, relations, and a batching strategy that makes N+1 queries impossible. |
| Query builder | quillstack/query-builder | SQL written as method calls, with the values kept out of the string. |
| Database | quillstack/db | The connection underneath, over PDO. |
Foundation
The parts an application stands on, each usable on its own.
| Package | Install as | What it does |
|---|---|---|
| Container | quillstack/di | PSR-11, built for speed: dependencies read once and remembered. |
| Config | quillstack/config | Settings, and where they are read from. |
| Dotenv | quillstack/dotenv | The environment file, parsed strictly. |
| Dotenv expand | quillstack/dotenv-expand | Values built from other values, where an unknown name is an error rather than an empty string. |
| Events | quillstack/events | PSR-14 dispatching. |
| Cache | quillstack/cache | PSR-16, in an array or on disk. |
| Logger | quillstack/logger | PSR-3, with the message and its context kept apart. |
| Serializer | quillstack/serializer | What goes over the wire, said as what may rather than what may not. |
| Queue | quillstack/queue | Work handed to somebody else to do later. |
| Clock | quillstack/clock | PSR-20, so a test can say what time it is. |
| Date and time | quillstack/datetime | Dates that behave. |
| Parameter bag | quillstack/parameter-bag | A bag of values, asked politely. |
| Local storage | quillstack/local-storage | Files on this machine. |
| Storage interface | quillstack/storage-interface | What any storage has to answer to. |
| Validator interface | quillstack/validator-interface | What any validator has to answer to. |
| Output | quillstack/output | Writing to the terminal. |
| CLI | quillstack/cli | Commands, arguments and the console that runs them. |
Testing
The tools this framework is tested with, which are also the ones it ships.
| Package | Install as | What it does |
|---|---|---|
| Unit tests | quillstack/unit-tests | A test runner with no configuration to write. |
| Test coverage | quillstack/test-coverage | What the tests reached, and what they did not. |
| Benchmark | quillstack/benchmark | How long things take, measured rather than guessed. |
| Standards | quillstack/standards | Checks a package against the shape every Quillstack package takes. |