Postgresql - join most recent row
You can use a derived table that picks the latest movie, then join to that:

SELECT 
    Author.id,
    Author.name,
    Author.surname,
    Author.photoURL as photoURL,
    Movie.title as lastMovieTitle,
    Movie.publicationDate as lastMovieDate,
    Movie.languageID as lastMovieLanguage,
    Series.name as lastMovieSeriesName,
    UserAuthorFavourited.userID = '6F9BD058-853F-4B50-92D6-9170118A2727' as favourited,
    count(*) filter (where MovieRating.ratingUp) as ratingUp,
    count(*) filter (where MovieRating.ratingDown) as ratingDown,
    count(DISTINCT Movie.id) as movieCount 
FROM Author 
  LEFT JOIN (
      SELECT DISTINCT ON (authorid) *
      FROM movie 
      ORDER BY authorid, publicationDate DESC
    ) Movie ON Author.id = Movie.authorID 
  LEFT JOIN Series ON Movie.seriesID = Series.id 
  LEFT JOIN UserAuthorFavourited ON UserAuthorFavourited.authorID = Author.id AND UserAuthorFavourited.userID = '6F9BD058-853F-4B50-92D6-9170118A2727' 
  LEFT JOIN MovieRating ON Movie.id = MovieRating.movieID AND Movie.authorID = Author.id 
GROUP BY 
    Author.id,
    Movie.id,
    Series.id,
    UserAuthorFavourited.userID 
ORDER BY Author.surname ASC, Movie.publicationDate DESC


I also simplified the expression for the favourited column and the conditional counting.