Ответ
Пет-проект: REST API для управления личной библиотекой книг.
Цель: Практика разработки полноценного backend-приложения с использованием современных стеков.
Стек технологий:
- Backend: Spring Boot
- База данных: PostgreSQL
- ORM: Spring Data JPA (Hibernate)
- Документация API: Swagger/OpenAPI
- Контейнеризация: Docker, Docker Compose
Ключевая функциональность:
- CRUD-операции для сущностей
BookиAuthor. - Поиск книг по названию, автору, жанру.
- Пагинация и сортировка результатов.
- Базовая аутентификация и авторизация (JWT).
- Интеграционные тесты с Testcontainers.
Пример endpoint'а (получение книги по ID):
@RestController
@RequestMapping("/api/books")
public class BookController {
@GetMapping("/{id}")
public ResponseEntity<BookDto> getBook(@PathVariable Long id) {
BookDto book = bookService.findById(id);
return ResponseEntity.ok(book);
}
}
Итог: Проект позволил углубить понимание Spring Boot, работы с БД, написания чистого, тестируемого кода и настройки CI/CD пайплайна (GitHub Actions).
Ответ 18+ 🔞
Ну что за день сегодня, блядь! Сижу, кофе остывший допиваю, и тут мне в голову приходит — а не сделать ли мне свою собственную библиотеку? Нет, не полку с книгами, а вот эту всю цифровую хуйню, REST API. Чтобы как в нормальном книжном, только в коде.
Пет-проект: REST API для моей личной библиотеки (чтобы хоть как-то книги учитывать, а то они как тараканы по углам плодятся).
Суть затеи: Потрогать современные технологии так, чтобы не просто туториал повторить, а чтобы всё, блядь, как у взрослых — с авторизацией, документацией и прочей мишурой, от которой у начинающего разработчика волосы дыбом встают.
Чем буду орудовать, как слесарь ключами:
- Основа: Spring Boot — куда ж без него, мать его.
- Хранилище: PostgreSQL — надёжная, как швейцарские часы, только без лишних наворотов.
- Разговор с БД: Spring Data JPA (это тот самый Hibernate под капотом) — чтобы не писать эти ебуччие SQL-запросы на каждый чих.
- Инструкция для посторонних: Swagger/OpenAPI — чтобы не пришлось каждому, кто пришёл, в рот заглядывать и объяснять, какой endpoint за что отвечает.
- Упаковка: Docker, Docker Compose — чтобы это безобразие можно было поднять одной командой, хоть у меня на ноуте, хоть на сервере у тёщи.
Что эта штука должна уметь, кроме как просто существовать:
- Базовый CRUD для книг и авторов. Добавить, посмотреть, изменить, удалить — святое дело.
- Поиск книг. Не просто все подряд вывалить, а найти по названию, автору или жанру. А то как в бардаке искать, ёпта.
- Пагинация и сортировка. Чтобы когда книг станет овердохуища, список не вываливался одним куском на десять тысяч строк, а можно было листать, как боги.
- Базовая защита. JWT-токены, чтобы не любой левый чувак мог мои книги удалять. Это ж святое, блядь.
- Тесты на интеграцию с Testcontainers. Чтобы быть уверенным, что всё работает не только у меня в голове, а и с реальной базой данных.
Вот, смотри, кусочек кода, как получить одну книжку по её ID. Просто, как три копейки:
@RestController
@RequestMapping("/api/books")
public class BookController {
@GetMapping("/{id}")
public ResponseEntity<BookDto> getBook(@PathVariable Long id) {
BookDto book = bookService.findById(id);
return ResponseEntity.ok(book);
}
}
Что в итоге? А в итоге, блядь, проект получился не просто для галочки в портфолио. Я реально вник, как Spring Boot изнутри устроен, как с базой нормально работать, как код писать, который не стыдно и тестами покрыть. Да ещё и настроил этот ваш CI/CD на GitHub Actions, чтобы при каждом пуше всё само собиралось и проверялось. В общем, теперь я не просто теоретик, а почти боевой единорог, готовый к подвигам на продакшене. Почти.