Для этого вы можете использовать HTML, CSS и JavaScript, а также библиотеки, такие как jQuery и Bootstrap. Фотографии и видео можно загружать на сервер и хранить их в специальной папке.
Бэкенд может быть написан на различных языках программирования, включая Python. Вы можете использовать фреймворки, такие как Flask или Django, чтобы создать API, которое будет взаимодействовать с фронтендом и обрабатывать запросы на загрузку или просмотр файлов. Например, на бэкенд можно создать путь для запроса списка файлов в папке и отсылки клиенту их метаданных (имя, размер, тип и др.), а также отдельный метод для загрузки файлов на сервер.
Для просмотра фотографий и видео вы можете использовать библиотеки на фронтенде, такие как Fancybox, Justified Gallery, PhotoSwipe и другие. Они предоставляют готовые шаблоны и скрипты для отображения изображений в галерее и переключения между ними.