Every feature of your web app, named from its code and checked against its screens.
A feature inventory is the list of everything an app lets a person do. featkpr reads it from the code (the routes, the checks on them, the forms and the words at one commit), crawls a running copy, and names each feature with the code and screens behind it: 298 features in 13 modules on BookStack. What it cannot place yet, it lists for a person.
BookStack development code · commit 0f5164ec · featkpr's records, exported 20 Oct 2026
Five sources in, one named feature out #
Each source is read at one commit. A model names the features from what was read; everything else is read mechanically. The counts are from the missed-items check, which ran again from a fresh start with no help.
- The route list
php artisan route:list343of 359 routes read - Permission checks
each handler and its middleware193of 194 checks found - Forms
the templates' forms62of 93 forms placed - Words
language files, release notescited with file and line - Screens
a crawl of a running copy167screens captured
revision-view-all · …/Permission.php:L2v26.05: Revision … · …release-v26-05.md:L1Revisions · …en/entities.php:L2
GET /books/…/page/{pageSlug}/revisionsGET /books/…/revisions/{revId}
What no feature cites yet is listed for a person to name, set aside or put back: 231 of the 587 things the naming should have cited.
What you get for each feature #
Every feature opens on one page: the words it is known by, where it lives, what is tested and which flows end there.

- What it isits name and module, and the words it is known by, each with the file and line it came from
- Where it liveseach route with the real screen the crawl captured
- What is testedits cases, how many a test covers, and the test files that cover them
- Flowsthe drafted flows that end on it
Works today, and not yet #
Works today #
- Features named from the codeModules and features named from the repository, each with the routes and permission checks behind it.298 features in 13 modules on BookStack · since 22 Sep
- A crawl of a running copyEvery page a signed-in admin can reach, and the create forms it is allowed to send, captured as real screens.167 screens, 8 forms sent, read from the app on 25 Sep 2026 · since 25 Sep
- The crawl edits and deletes what it madeSo edit and delete forms get screens too. It only touches what it created itself.verified on a test copy of BookStack on 27 Sep: 4 edited, 4 deleted, nothing else touched · since 27 Sep
- The missed-items checkfeatkpr runs again from a fresh start with no help and compares each step with an answer key, naming every miss.BookStack: 605 missed of 2,372 · since 26 Sep
- How complex each goal isFlows, inputs, preconditions, outside calls, waiting and roles, drafted by featkpr for you to correct.drafted from what drives it; your word is feedback on the draft · since 27 Sep
Not yet #
- Goals found in the codefeatkpr finds what each goal needs by itself: its inputs, its preconditions and the calls it makes to other services.decided, no week yet
- Node and Django readersPHP (Laravel, Mezzio), Python (FastAPI, click) and React are read today; Node and Django come next, Uptime Kuma and Paperless-ngx first.decided, no week yet
- Owners on featuresA person named per feature, not per module.decided, no week yet
from our plan of 1 Oct 2026 · every part on the roadmap
See the feature map of BookStack #
On a 30-minute call we walk BookStack's map feature by feature, then look at what reading your repository would take.