A pagelist is the way I would have done it.
Overall, the structure is the same as a blog. You have a parent page which lists sub pages using a page list block. On that page are also topic/tag/date blocks which tell the page list block how to filter the sub-pages shown.
The sub pages are just pages, one per file with its associated data as attributes. These can display attributes of the page using and attribute display block.
For the actual page list, don’t mess with a custom template yet. Get it working with the default page list block + default template and populate a few pages, experiment with formats for the pages and revise. (As you add more pages, you accumulate more revision work to those pages if your ideas change). You should be able to do the individual pages without any custom code or templates.
Consider using one or more stacks to display your page attributes - that will allow centralised changes.
Once the mechanics of the list are working, you can
a) Explore alternative page list blocks which have more filtering & display options
b) Explore alternative block templates for the page list block
c) Think about whether you actually need a custom template for the page list block. A custom template would only be a few hours work for a developer, but there is an overhead of setting up to do that work. On many small jobs, it is the setup that dominates the cost.
One of the options of a pagelist is an RSS feed. Creating a custom template for the RSS is one way of providing a data export.