As you have stated, pages aren’t meant to have categories. I would rather look into custom post types and taxonomies, but the implementation is still up to you as I don’t know your structures
I have never tried this before, neither do I know if this will actually work, but you can try the pre_get_posts
action to amend the main query to display pages on your category.php
template
add_action( 'pre_get_posts', function ( $query ) {
if ( !is_admin() && $query->is_category() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'page' ) );
}
});