PHPackages                             hackpack/hackmini - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. hackpack/hackmini

ActiveLibrary[Framework](/categories/framework)

hackpack/hackmini
=================

Mini framework for Hacklang.

0.0.6(9y ago)014[1 issues](https://github.com/HackPack/HackMini/issues)MITHack

Since May 6Pushed 9y ago2 watchersCompare

[ Source](https://github.com/HackPack/HackMini)[ Packagist](https://packagist.org/packages/hackpack/hackmini)[ RSS](/packages/hackpack-hackmini/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (4)Versions (7)Used By (0)

HackMini
========

[](#hackmini)

Mini framework written in Hack

Features
--------

[](#features)

Being somewhere between a "micro" framework and a "bloated" framework, HackMini provides a balanced set of features that eases the burden on developers desiring a flexible, maintainable, clean codebase.

### Type Safety

[](#type-safety)

HackMini uses Hack's strict mode as much as possible, thus all of the framework components must be fully typed. What this means for you is that all of your code can be type safe, even when depending on HackMini's functions or classes.

Type safety is eminently important for code maintainability and flexibility. When your code is type safe and you alter the interface for any function or class, the type checker will tell you all the other places that must be updated to accommodate the new feature. It's like an entire class of integration tests already written for you!

### Router and Middleware Stack

[](#router-and-middleware-stack)

HackMini makes heavy use of user defined attributes to allow for easy routing. Attributes are also used to define route specific middleware stacks.

#### Defining a Route Handler

[](#defining-a-route-handler)

Route handlers must either be plain functions or static class methods. The route handler must be annotated with the `` attribute. The path attribute parameter must be unique application-wide.

```
