{"id":31699420,"url":"https://github.com/souradippatra7904/wellrested","last_synced_at":"2026-04-19T06:37:36.841Z","repository":{"id":317858751,"uuid":"1063127550","full_name":"SouradipPatra7904/WellRESTed","owner":"SouradipPatra7904","description":"An enterprise grade REST API with HATEOAS support, REST Client, SOAP communication and SOAP Client enabled. No security implemented as of yet.","archived":false,"fork":false,"pushed_at":"2025-10-03T12:52:28.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-03T14:44:16.578Z","etag":null,"topics":["hateoas","java","jaxb","rest-api","rest-client","soap","soap-client","soap-web-services","soapui","spring-boot","spring-data-jpa","spring-mvc","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SouradipPatra7904.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-24T07:49:30.000Z","updated_at":"2025-10-03T12:52:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"00f73714-01f2-468b-a9ab-9b32a8c20202","html_url":"https://github.com/SouradipPatra7904/WellRESTed","commit_stats":null,"previous_names":["souradippatra7904/wellrested"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/SouradipPatra7904/WellRESTed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SouradipPatra7904%2FWellRESTed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SouradipPatra7904%2FWellRESTed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SouradipPatra7904%2FWellRESTed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SouradipPatra7904%2FWellRESTed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SouradipPatra7904","download_url":"https://codeload.github.com/SouradipPatra7904/WellRESTed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SouradipPatra7904%2FWellRESTed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000703,"owners_count":26082806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hateoas","java","jaxb","rest-api","rest-client","soap","soap-client","soap-web-services","soapui","spring-boot","spring-data-jpa","spring-mvc","springboot"],"created_at":"2025-10-08T19:43:45.914Z","updated_at":"2025-10-08T19:43:47.900Z","avatar_url":"https://github.com/SouradipPatra7904.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WellRESTed\n\n**Enterprise-Grade REST + SOAP Application with JPA**\n\n---\n\n## 📌 Project Overview\nWellRESTed is a Spring Boot 3.5.6 application built with **Java 21** that goes far beyond CRUD. It demonstrates how REST and SOAP can seamlessly co-exist in a modern backend service, backed by **JPA + PostgreSQL**. The project emphasizes clean architecture, separation of concerns, and enterprise patterns.\n\n**Artifact:** `WellRESTed`  \n**Group:** `souradippatra`  \n**Packaging:** `jar`  \n**Build Tool:** `Maven`\n\n---\n\n## ✨ Features\n- **RESTful Endpoints:** Full CRUD with GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD.\n- **JPA with Pagination \u0026 DTO mapping:** Efficient entity handling, pagination, and response shaping.\n- **HATEOAS Links:** Hypermedia-driven responses for richer REST APIs.\n- **External REST Integration:** Fetches sleep recommendations from a mock REST API.\n- **SOAP Integration:**\n  - Exposes a SOAP endpoint (`/ws/sleepsession.wsdl`) with request/response schema.\n  - Provides a SOAP client using `WebServiceTemplate`.\n  - REST → SOAP bridge endpoint: `GET /api/sleep-sessions/{id}/soap`.\n- **Caching:** In-memory caching for repeated recommendation lookups.\n- **Actuator Config:** Health checks and basic monitoring.\n\n---\n\n## 🏗️ Architecture\n- **Entity Layer:** JPA entities mapped to PostgreSQL.\n- **DTO Layer:** Clean separation between persistence and API payloads.\n- **Service Layer:** Business logic with interfaces + implementations.\n- **Controller Layer:** REST endpoints + error handling via `@ControllerAdvice`.\n- **SOAP Layer:** `@Endpoint` annotated handlers for SOAP requests.\n- **Config Layer:** Separate configuration for Actuator, HATEOAS, and SOAP services.\n\n---\n\n## 🔧 Tech Stack\n- **Spring Boot 3.5.6**\n- **Java 21**\n- **Spring Data JPA + PostgreSQL**\n- **Spring Web + HATEOAS**\n- **Spring-WS (SOAP)**\n- **Spring Cache (in-memory)**\n- **Spring Boot Actuator**\n- **Lombok**\n\n---\n\n## 🚀 Running the Project\n1. Clone the repository.\n\n2. Configure PostgreSQL in `application.yml`.\n\n3. Run with Maven:\n   ```bash\n   mvn spring-boot:run\n   ```\n\n4. Access endpoints:\n   - REST API → `http://localhost:9595/api/sleep-sessions`\n   - SOAP WSDL → `http://localhost:9595/ws/sleepsession.wsdl`\n   - REST → SOAP bridge → `http://localhost:9595/api/sleep-sessions/{id}/soap`\n\n5. REST API specific endpoints :\n    - GET /api/sleep-sessions\n    - GET /api/sleep-sessions/{id}\n    - POST /api/sleep-sessions\n    - PATCH /api/sleep-sessions/{id}\n    - PUT /api/sleep-sessions/{id}\n    - DELETE /api/sleep-sessions/{id}\n    - HEAD /api/sleep-sessions/{id}\n    - OPTIONS /api/sleep-sessions\n\n---\n\n## 📈 Future Enhancements\n1. Security with Spring Security.\n2. Advanced JPA optimizations (Vlad Mihalcea patterns).\n3. Database migrations (Flyway/Liquibase).\n4. Docker support.\n5. Testcontainers \u0026 Profiling.\n6. Observability: Micrometer, Prometheus, Grafana.\n\n---\n\n## 🏆 Why my Project is so much more than basic \"CRUD\" apps :\nUnlike typical CRUD demos, **WellRESTed** demonstrates:\n- Advanced JPA usage.\n- Integration with both **REST** and **SOAP**.\n- Enterprise-grade separation of concerns.\n- Extensible architecture for monitoring, security, and scalability.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouradippatra7904%2Fwellrested","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsouradippatra7904%2Fwellrested","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouradippatra7904%2Fwellrested/lists"}