Babushka is a recipe-sharing application created by four students as a study project. The idea is simple: users can create recipes, browse recipes from other users, save favorites, and organize recipes by categories.
The project is split into three parts:
- Babushka Android: the mobile app used by users.
- Babushka Django: the active backend API used by the Android app.
- Babushka Spring: the first backend version, kept as a legacy project after the backend was moved to Django.
Babushka Spring is the old backend prototype for the project. It was selected at the beginning of development, but the active backend was later moved to Django. Because of that, this server is kept only as a reference for the first backend structure and endpoint design.
The Android app does not currently work with this Spring backend. For the working application flow, use Babushka Django.
- Babushka Android: the mobile client that users interact with.
- Babushka Django: the active backend REST API used by Android.
- Babushka Spring: this legacy backend prototype.
This backend contains early implementations for:
- user registration;
- user login;
- user disabling;
- recipe creation;
- recipe loading;
- recipe pagination;
- recipe search;
- recipe update;
- recipe deletion;
- recipe image loading;
- basic test and health endpoints.
It is useful for understanding the first backend design, but it is not the backend used by the current Android application.
- Java 25.
- Spring Boot 4.
- Spring Web.
- Spring Data JPA.
- Hibernate.
- Jakarta Validation.
- Lombok.
- PostgreSQL.
- Gradle Kotlin DSL.
Babushka-backend-spring/src/main/java/com/babushka/babushka/
module/test/
controller/ Test health and motivation endpoints
service/ Test response creation
entity/ Test DTO
module/user/
controller/ User registration, login, list, disable endpoints
service/ User creation, login, and disable logic
entity/ User entity
repository/ User repository
dto/ User DTO
module/recipe/
controller/ Recipe CRUD and image endpoints
service/ Recipe business logic
entity/ Recipe entity
repository/ Recipe repository
dto/ Recipe DTO
Test:
GET /test/healthGET /test/motivation
Users:
POST /users/createPOST /users/loginGET /usersPOST /users/{id}/disable
Recipes:
POST /recipe/createGET /recipe/get-allGET /recipe/get-pageGET /recipe/get-by-id/{id}PUT /recipe/update-by-id/{id}DELETE /recipe/delete-by-id/{id}GET /recipe/{id}/get-image
Recipe pagination supports optional query parameters:
GET /recipe/get-page?page=0&size=6
GET /recipe/get-page?page=0&size=6&search=pasta
Recipe images are returned as JPEG bytes:
GET /recipe/{id}/get-image
User login returns a token string when the credentials are valid.