|
1 | | -# Java Backend Developer Training – Lab Source |
| 1 | +# Java Backend Developer Training – Reference Implementation |
2 | 2 |
|
3 | | -> 📌 **This repository contains the reference implementation of the application developed during the Java Backend Developer training.**\ |
4 | | -> Participants progressively gain access to additional branches as they progress through the course. |
| 3 | +> 📌 **This repository contains the _reference implementation_ of the application developed step-by-step during the _Java Backend Developer Training_.** |
| 4 | +> Each subsequent branch adds more functionality on top of the previous one, allowing participants to explore and compare their solutions. |
5 | 5 |
|
6 | 6 | ## 📖 Project Overview |
7 | 7 |
|
8 | | -This project is a **Spring Boot 3** application designed to serve as a **backend development reference implementation**. It follows **clean coding principles** and modern development best practices. |
| 8 | +This is a **Spring Boot 3** backend application named **_Appointment Booking System_**, created as part of hands-on backend development training. |
| 9 | +It follows modern architectural and coding practices, including **clean code**, **layered structure**, and **modular design**. |
9 | 10 |
|
10 | | -The application developed during the Java Backend Developer training is called _**Appointment Booking System**_. |
| 11 | +📄 Specification: [**AppointmentBookingAppDoc.md**](AppointmentBookingAppDoc.md) |
11 | 12 |
|
12 | | -#### Here you will find the specification: **[AppointmentBookingAppDoc.md](AppointmentBookingAppDoc.md).** |
| 13 | +## 🌱 Branch Progression |
13 | 14 |
|
14 | | -### 🛠 Tech Stack |
| 15 | +The repository grows in complexity and functionality across branches: |
| 16 | + |
| 17 | +| Branch | Description | |
| 18 | +|--------|------------------------------------------------------------------------| |
| 19 | +| `main` | Base Spring Boot setup with basic health and H2 endpoints | |
| 20 | +| `feature/1-create-new-application` | Same as main | |
| 21 | +| `feature/2-dataaccess` | Persistence layer with Spring Data JPA and H2 | |
| 22 | +| `feature/3-business-logic` | Service layer and business logic introduced | |
| 23 | +| `feature/4-services` | OpenAPI/Swagger setup for live API documentation and testing | |
| 24 | +| `feature/5-security` | Spring Security integration for basic authentication and authorization | |
| 25 | + |
| 26 | +## 🌐 Useful Endpoints |
| 27 | + |
| 28 | +After starting the application, you can access the following in your browser: |
| 29 | + |
| 30 | +| URL | Available from | Description | |
| 31 | +|-----|----------------|-------------| |
| 32 | +| [http://localhost:8080/actuator/health](http://localhost:8080/actuator/health) | `main` | Basic application health check | |
| 33 | +| [http://localhost:8080/h2-console](http://localhost:8080/h2-console) | `main` | In-memory H2 database console | |
| 34 | +| [http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html) | `feature/4-services` | OpenAPI UI for testing and exploring REST API | |
| 35 | + |
| 36 | +## 🛠 Tech Stack |
15 | 37 |
|
16 | 38 | - **Java 21** |
17 | 39 | - **Spring Boot 3** |
18 | | -- **Maven 3.9.x** as the build tool |
19 | | -- **JUnit 5 & AssertJ** for testing |
| 40 | +- **Maven 3.9+** |
| 41 | +- **JUnit 5 & AssertJ** |
| 42 | +- **H2 Database** |
| 43 | +- **OpenAPI & Swagger UI** |
| 44 | +- **Spring Security** |
20 | 45 | - **GitHub Actions** for CI/CD |
21 | 46 |
|
22 | | -## 📂 Repository Structure |
| 47 | +## 📁 Project Structure |
| 48 | + |
| 49 | + |
23 | 50 |
|
24 | 51 | ``` |
25 | 52 | java-backend-developer-app/ |
@@ -80,12 +107,17 @@ GitHub Actions is used for CI/CD, configured in \`.github/workflows/ci.yml\`. Th |
80 | 107 | - **Every push and pull request** to \`main\` and feature branches. |
81 | 108 | - **Runs tests** and generates reports. |
82 | 109 |
|
| 110 | +## 🙋 Who Is This For? |
| 111 | +This reference repo is intended for trainers and mentors to demonstrate completed solutions. |
| 112 | +🧑💻 **Each training participant works independently in a separate student repository.** This repository serves as a working example. |
| 113 | + |
83 | 114 | ## 🤝 Contribution Guidelines |
84 | 115 |
|
85 | | -1. Create a **feature branch** for any changes. |
| 116 | +1. Create a **feature branch** for any changes from a particular, possibly smallest "main" feature branch, e.g. 'feature/2-data-access'. |
86 | 117 | 2. Ensure the code **follows project conventions** and is properly tested. |
87 | | -3. Open a **Pull Request** to \`main\`. Direct pushes are restricted. |
| 118 | +3. Open a **Pull Request** to particular, corresponding "main" feature branch, e.g. 'feature/2-data-access'. Direct pushes are restricted. |
88 | 119 | 4. Wait for **CI to pass** and a **review** before merging. |
| 120 | +5. Rebase higher feature branches onto changed one, e.g. if you merged to 'feature/3-business-logic', then you should rebase 'feature/4-services' and 'feature/5-security' to have your changes there as well. |
89 | 121 |
|
90 | 122 | ## License |
91 | 123 |
|
|
0 commit comments