Get category name of custom post type

The following code should return you the correct category names, however I am not clear what you’re actually trying to achieve. I think you’re using the foreach loop in wrong way. Are you trying to add all the category names as css classes for the div or something else?

<div class="row masonary-wrap">

<?php 
$args = array(
    'post_type' => 'project',
    'post_status' => 'publish',
    'posts_per_page' => '6'
);

$query = new WP_Query( $args );

if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();

        $categories = get_the_category ( $post->ID ); 

        foreach ( $categories as $cat ) : ?>

            <div class="col-lg-4 col-md-6 col-12 port-item mb-30 <?php echo esc_attr( $cat['name'] ); ?>">    
                <div class="project">
                    <div class="proj-img">
                        <div class="proj-overlay">
                            <h5><?php the_title(); ?></h5>                          
                        </div>
                    </div>
                </div>
            </div>

        <?php
        endforeach;
    endwhile;
    wp_reset_postdata();
endif; ?>

</div>