Backend API for my personal dashboard ecosystem (Home Page, Cleaning Schedule, Flash Cards, Utilities, and more)
Live - Home Page API
This is a Kotlin + Spring Boot backend API that powers multiple frontend projects by aggregating data from web sources and local repositories, then exposing that data through REST endpoints.
Primary features include:
- Cleaning schedule CRUD (H2-backed)
- Sports and event scraping (MMA, ESPN, GDQ, auction data)
- Home media search + sync from remote source files
- Flash card and spot price data endpoints
- Pending recipe submission endpoints (with API key protection on write operations)
Run the API, then call endpoints from your frontend or via cURL/Postman.
Common route groups:
/cleaning-scheduleGET /cleaning-schedule/week?startDate=YYYY-MM-DDGET /cleaning-schedulePOST /cleaning-schedule/addPOST /cleaning-schedule/editDELETE /cleaning-schedule?id={id}
/games-per-dateGET /games-per-date/basketball/todayGET /games-per-date/basketball/upcomingGET /games-per-date/football/todayGET /games-per-date/football/upcoming
/fight-cardGET /fight-card/todayGET /fight-card/upcoming
/gdqGET /gdq/upcoming
/auctionGET /auction/todayGET /auction/upcoming
/home-media-searchGET /home-media-search?criteria=...
/mediaGET /media/update
/flash-cardsGET /flash-cards
/spot-priceGET /spot-price
/recipe/pendingGET /recipe/pendingPOST /recipe/pending(requiresX-API-Keyheader)DELETE /recipe/pending/{id}(requiresX-API-Keyheader)
Example:
curl "http://localhost:8090/cleaning-schedule/week?startDate=2026-05-31"Protected write example:
curl -X POST "http://localhost:8090/recipe/pending" \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{"title":"Recipe Name","url":"https://example.com/recipe"}'- Language:
Kotlin - Framework:
Spring Boot 3 - Build Tool:
Gradle (Kotlin DSL) - Java Version:
21 - Database:
H2 (in-memory) - Parsing/Scraping:
Jsoup - Testing:
JUnit 5,Spring Boot Test,Mockito - Deployment:
Heroku
Optional environment variable for protected endpoints:
API_KEY=your_secret_key
./gradlew bootRunThe app runs on http://localhost:8090 by default.
- Unit/Integration
./gradlew test
- Single test class
./gradlew test --tests "com.projects.homepageapi.services.CleaningScheduleServiceTest"
- No GitHub hook deployment is required for local development
- Deployment is currently done through Heroku Git push flow
Run ./gradlew build to compile and package the project.
Build artifacts are generated under build/libs/.
This application is hosted on Heroku.
git push heroku masterHeroku handles SSL for the deployed app.