🇬🇧 English version below
🇷🇺 Русская версия ниже
Backend service for managing tasks in a scalable system (similar to Jira or Trello).
The service is built using a reactive approach with Spring WebFlux and provides high-performance database access via direct SQL queries. It demonstrates production-ready backend patterns including layered architecture, validation, error handling, and comprehensive testing.
- Reactive REST API (Spring WebFlux)
- Task management (CRUD operations)
- Pagination and filtering
- Partial updates (PATCH endpoints)
- Centralized error handling
- Input validation
- High test coverage (unit + integration)
- Controller → Service → Repository layers
- Reactive processing (Mono / Flux)
- Direct database access via JdbcClient (no ORM)
- Database migrations with Flyway
- Kotlin
- Spring Boot (WebFlux)
- PostgreSQL
- Docker
docker-compose up -d./gradlew bootRuncurl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{"title":"Test","description":"Test task"}'curl "http://localhost:8080/api/tasks?page=0&size=10&status=NEW"Run all tests:
./gradlew test- Unit tests: service logic and controller validation
- Integration tests: database interaction using Testcontainers
src/main/kotlin/ru/pavelq/taskcatalog/
├── controller
├── service
├── repository
├── model
├── dto
└── exception
Бэкенд-сервис для управления задачами (аналог Jira / Trello).
Сервис реализован с использованием реактивного стека Spring WebFlux и прямого доступа к базе данных через SQL. Проект демонстрирует production-подходы: слоистую архитектуру, валидацию, обработку ошибок и полноценное тестирование.
- Реактивный REST API (Spring WebFlux)
- CRUD-операции для задач
- Пагинация и фильтрация
- Частичные обновления (PATCH)
- Централизованная обработка ошибок
- Валидация входных данных
- Высокое покрытие тестами (unit + integration)
- Слои Controller → Service → Repository
- Реактивная обработка (Mono / Flux)
- Прямой доступ к БД через JdbcClient (без ORM)
- Миграции базы данных через Flyway
- Kotlin
- Spring Boot (WebFlux)
- PostgreSQL
- Docker
docker-compose up -d./gradlew bootRuncurl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{"title":"Test","description":"Test task"}'curl "http://localhost:8080/api/tasks?page=0&size=10&status=NEW"Запуск всех тестов:
./gradlew test- Unit-тесты: проверка бизнес-логики и контроллеров
- Интеграционные тесты: работа с БД через Testcontainers
src/main/kotlin/ru/pavelq/taskcatalog/
├── controller
├── service
├── repository
├── model
├── dto
└── exception