<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: prem Prema</title>
    <description>The latest articles on DEV Community by prem Prema (@premprema).</description>
    <link>https://dev.to/premprema</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3045436%2Fef17b9d2-9591-42a4-b7c8-bbb1adddb4c0.png</url>
      <title>DEV Community: prem Prema</title>
      <link>https://dev.to/premprema</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/premprema"/>
    <language>en</language>
    <item>
      <title>🏷 React Diaries with Thaatha</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Wed, 18 Feb 2026 13:21:41 +0000</pubDate>
      <link>https://dev.to/premprema/react-diaries-with-thaatha-4c0p</link>
      <guid>https://dev.to/premprema/react-diaries-with-thaatha-4c0p</guid>
      <description>&lt;p&gt;🏷 React Diaries with Thaatha – நாள் 1: புதிய ஆரம்பம்&lt;/p&gt;

&lt;p&gt;“காமராஜர் சிலை… இறங்குங்க!”&lt;br&gt;
என்று பேருந்து நடத்துனர் சத்தம் போட்டார்.&lt;/p&gt;

&lt;p&gt;மனசுக்குள் ஒரு சிறிய பதப்பு…&lt;br&gt;
ஆனா அதைவிட அதிகமான மகிழ்ச்சி.&lt;/p&gt;

&lt;p&gt;கையில் வாங்கி வந்திருந்த தின்பண்டங்கள்,&lt;br&gt;
அம்மாச்சிக்கும் சித்திக்கும் வாங்கிய பூப்பைகள் —&lt;br&gt;
அதைப் பாதுகாப்பாக எடுத்துக்கொண்டு பேருந்திலிருந்து இறங்கினேன்.&lt;/p&gt;

&lt;p&gt;சிறிது தூரம் நடந்தேன்…&lt;br&gt;
தாத்தா வீட்டுக்குச் சென்றேன்.&lt;/p&gt;

&lt;p&gt;“அடடே பிரேம்… வாங்க வாங்க!”&lt;br&gt;
என்று தாத்தா சிரித்துக்கொண்டே அழைத்தார்.&lt;br&gt;
“ராஜகுமாரி, யார் வந்திருக்கா பாரு!” என்று அம்மாச்சியிடம் சொன்னார்.&lt;/p&gt;

&lt;p&gt;நான் முகம் கழுவிவிட்டு வந்து,&lt;br&gt;
வீட்டின் முன்புறம் இருந்த மரப்பலகையில் தாத்தா அருகில் அமர்ந்தேன்.&lt;/p&gt;

&lt;p&gt;தாத்தா வழக்கமான கேள்விகளை கேட்டார்:&lt;/p&gt;

&lt;p&gt;“நல்லா இருக்கியா?”&lt;br&gt;
“அம்மா அப்பா எப்படி இருக்காங்க?”&lt;br&gt;
“நீ இப்ப என்ன பண்ற?”&lt;/p&gt;

&lt;p&gt;நான் மெதுவாகச் சொன்னேன்:&lt;/p&gt;

&lt;p&gt;“தாத்தா, நான் இப்ப பயிலகம் இன்ஸ்டிட்யூட்டில் React course join பண்ணிருக்கேன்.&lt;br&gt;
இன்று தான் முதல் நாள்.”&lt;/p&gt;

&lt;p&gt;Trainer பெயர் கித்தியோன்.&lt;br&gt;
நாங்க மூணு பேர் தான் trainees.&lt;/p&gt;

&lt;p&gt;இன்று introduction மட்டும் தான் நடந்தது.&lt;/p&gt;

&lt;p&gt;React என்ன?&lt;br&gt;
Frontend development என்ன?&lt;br&gt;
HTML, CSS, JavaScript, Linux OS install பண்ணுவது, GitLab use பண்ணுவது,&lt;br&gt;
மேலும் தினமும் Dev.to ல blog எழுதணும் என்று சொல்லினார்கள்.&lt;/p&gt;

&lt;p&gt;இன்று பெரிய விஷயம் எதுவும் நடக்கவில்லை.&lt;/p&gt;

&lt;p&gt;ஆனா ஒரு முக்கியமான ஆரம்பம் நடந்தது.&lt;/p&gt;

&lt;p&gt;தாத்தா…&lt;br&gt;
இன்னைக்கு நான் முதல் படி எடுத்துட்டேன்.&lt;br&gt;
நாளைக்கு இன்னும் கொஞ்சம் அதிகமா கத்துக்கிட்டு உங்களிடம் சொல்ல வர்றேன்.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Temple_Tamil</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Sun, 31 Aug 2025 14:38:06 +0000</pubDate>
      <link>https://dev.to/premprema/templetamil-m00</link>
      <guid>https://dev.to/premprema/templetamil-m00</guid>
      <description></description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Temple_english</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Sun, 31 Aug 2025 14:37:14 +0000</pubDate>
      <link>https://dev.to/premprema/templeenglish-4b03</link>
      <guid>https://dev.to/premprema/templeenglish-4b03</guid>
      <description>&lt;p&gt;Super Prem ❤️, now we are ready to lock the Full Design Document of your Donation Collection System.&lt;br&gt;
I’ll give it in a clear structured way — like a professional Software Requirement + Architecture summary — so you can use it as a guide while building..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📘 Full Design – Donation Collection System&lt;br&gt;
🎯 Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• Families can see donation history&lt;br&gt;&lt;br&gt;
• Volunteers can collect donations&lt;br&gt;&lt;br&gt;
• Admins can send bulk SMS  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ecommerce</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Sat, 30 Aug 2025 12:25:06 +0000</pubDate>
      <link>https://dev.to/premprema/ecommerce-1jpj</link>
      <guid>https://dev.to/premprema/ecommerce-1jpj</guid>
      <description>&lt;p&gt;We are going to create an E-commerce project using Spring Boot and React.&lt;br&gt;
This project will have two main parts:&lt;/p&gt;

&lt;p&gt;First, we will create the backend application using Spring Boot and connect it to a database. The Spring Boot application will fetch data from the database and provide it in JSON format.&lt;/p&gt;

&lt;p&gt;Next, we will build the React frontend, which will receive the JSON data from Spring Boot and display it on the user interface.&lt;/p&gt;

&lt;p&gt;👉 This way, Spring Boot will handle the backend and database operations, while React will handle the frontend and presentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96wsq6irb4ffzdhy7j0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96wsq6irb4ffzdhy7j0q.png" alt=" " width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is our part_1 ?&lt;/strong&gt;&lt;br&gt;
  👉 We need to create a Spring Boot application, connect it to the database, and then fetch the data from the database in JSON format. This is the first part.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;"How will the JSON format look?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99v0jzehi9e4dvw4ayb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99v0jzehi9e4dvw4ayb6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, open Spring Tool Suite. Then, click on File and select Spring Starter Project. After that, the project page will open. ✅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7t66jk35z3dlquhbimgj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7t66jk35z3dlquhbimgj.png" alt=" " width="800" height="782"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this project, I chose the name ECommerce.&lt;br&gt;
The type is set to Maven (I could use Gradle, but I’m using Maven).&lt;br&gt;
The packaging is Jar, Java version 17, and language Java – I didn’t change anything here.&lt;/p&gt;

&lt;p&gt;For the Group, I used com.example.&lt;br&gt;
The Artifact is ECommerce.&lt;br&gt;
The Version and Description I wrote as Demo Project for Spring Boot.&lt;br&gt;
For the Package, I set it as com.example.demo – I didn’t change anything here either.&lt;/p&gt;

&lt;p&gt;Then I clicked Next. ✅&lt;/p&gt;

&lt;p&gt;Next, the Dependencies page will open.&lt;br&gt;
Here we must decide which dependencies are required for our project.&lt;/p&gt;

&lt;p&gt;Since our output must be displayed on the Frontend via the web, we need Spring Web.&lt;/p&gt;

&lt;p&gt;Where will Spring Web fetch the data from? It will fetch the data from a Database (like H2, PostgreSQL, MySQL, etc.).&lt;br&gt;
By default, Spring Boot includes H2 Database.&lt;/p&gt;

&lt;p&gt;For our project, we will include both H2 Database and PostgreSQL Driver.&lt;/p&gt;

&lt;p&gt;To map the data from the database to the frontend, we need Spring Data JPA.&lt;br&gt;
Because when we create an Entity in Spring Boot, JPA automatically maps it into a Database Table.&lt;/p&gt;

&lt;p&gt;Additionally, we will include Spring Boot DevTools for easier and faster development (auto reload support).&lt;/p&gt;

&lt;p&gt;📝 Add these 5 dependencies:&lt;/p&gt;

&lt;p&gt;Spring Web&lt;/p&gt;

&lt;p&gt;Spring Data JPA&lt;/p&gt;

&lt;p&gt;H2 Database&lt;/p&gt;

&lt;p&gt;PostgreSQL Driver&lt;/p&gt;

&lt;p&gt;Spring Boot DevTools&lt;/p&gt;

&lt;p&gt;👉 In the available search box, type Web and add Spring Web.&lt;br&gt;
Then type SQL and add Spring Data JPA.&lt;br&gt;
After that, add H2 Database, PostgreSQL Driver, and Spring Boot DevTools.&lt;/p&gt;

&lt;p&gt;Once these 5 dependencies are added, click Finish. ✅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw1hcx54yl1vtqhgynkc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw1hcx54yl1vtqhgynkc.png" alt=" " width="558" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the Spring Boot Project - Dependencies diagram 🎯&lt;/p&gt;

&lt;p&gt;Spring Web → Handles HTTP requests &amp;amp; REST APIs&lt;/p&gt;

&lt;p&gt;Spring Data JPA → Maps Entities ↔ Database Tables&lt;/p&gt;

&lt;p&gt;Databases (H2 + PostgreSQL) → Where data is stored&lt;/p&gt;

&lt;p&gt;Spring Boot DevTools → Provides hot reload &amp;amp; faster development&lt;/p&gt;

&lt;p&gt;👉 All these work together inside your Spring Boot Project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxai65d6ip1nodqgl100g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxai65d6ip1nodqgl100g.png" alt=" " width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;actually what will need?&lt;/strong&gt;&lt;br&gt;
    Now, we need a Page that will display multiple Products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukx8w04mkpiva9vwsakm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukx8w04mkpiva9vwsakm.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each product will have the following details:&lt;/p&gt;

&lt;p&gt;Image&lt;/p&gt;

&lt;p&gt;Name&lt;/p&gt;

&lt;p&gt;Description&lt;/p&gt;

&lt;p&gt;Rating&lt;/p&gt;

&lt;p&gt;Price&lt;/p&gt;

&lt;p&gt;Stock&lt;/p&gt;

&lt;p&gt;So, we need to create a Java Class to hold these details. This class will later be stored in the Database as a table.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;👉 Let’s check our project structure:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Inside src/main/java, there will be a package named com.example.demo&lt;/p&gt;

&lt;p&gt;Inside it, we already have our Spring Boot Application Base Class (EcommerceApplication.java). We will not make any changes to that.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;👉 Next step:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Right-click on src/main/java → select New → Package → create a new package.&lt;/p&gt;

&lt;p&gt;The package name should be: com.example.demo.entity (✅ correct) &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;👉 Now, we will create our Entity Class:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
What table do we need in the database? → Product Table.&lt;/p&gt;

&lt;p&gt;So, we will create a class named Product.&lt;/p&gt;

&lt;p&gt;This Product class will be annotated with @Entity, so it will map to the Product Table in the database.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>RoughNote</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Mon, 25 Aug 2025 13:06:21 +0000</pubDate>
      <link>https://dev.to/premprema/roughnote-26n3</link>
      <guid>https://dev.to/premprema/roughnote-26n3</guid>
      <description>&lt;p&gt;we are creating the Donation management app using springboot+postgres+react&lt;/p&gt;

&lt;p&gt;This is Spring boot code&lt;/p&gt;

&lt;p&gt;1_________________________________________________________&lt;br&gt;
package com.maariyathaa.temple;&lt;/p&gt;

&lt;p&gt;import org.springframework.boot.SpringApplication;&lt;br&gt;
import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;/p&gt;

&lt;p&gt;@SpringBootApplication&lt;br&gt;
public class MaariyathaaApplication {&lt;br&gt;
    public static void main(String[] args) {&lt;br&gt;
        SpringApplication.run(MaariyathaaApplication.class, args);&lt;br&gt;
    }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;2________________________________________________________&lt;/p&gt;

&lt;p&gt;package com.maariyathaa.temple.config;&lt;/p&gt;

&lt;p&gt;import io.swagger.v3.oas.models.OpenAPI;&lt;br&gt;
import io.swagger.v3.oas.models.info.Info;&lt;br&gt;
import io.swagger.v3.oas.models.info.Contact;&lt;br&gt;
import io.swagger.v3.oas.models.info.License;&lt;br&gt;
import org.springframework.context.annotation.Bean;&lt;br&gt;
import org.springframework.context.annotation.Configuration;&lt;/p&gt;

&lt;p&gt;@Configuration&lt;br&gt;
public class SwaggerConfig {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()
            .info(new Info()
                    .title("Maariyathaa Temple Donation Management API")
                    .version("1.0")
                    .description("API for managing donations, families, and volunteers for the Maariyathaa Temple")
                    .contact(new Contact()
                            .name("Maariyathaa Temple Support")
                            .email("support@maariyathaatemple.com"))
                    .license(new License()
                            .name("Apache 2.0")
                            .url("https://www.apache.org/licenses/LICENSE-2.0.html")));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;3___________________________________________&lt;/p&gt;

&lt;p&gt;package com.maariyathaa.temple.config;&lt;/p&gt;

&lt;p&gt;import org.springframework.context.annotation.Bean;&lt;br&gt;
import org.springframework.context.annotation.Configuration;&lt;br&gt;
import org.springframework.web.servlet.config.annotation.CorsRegistry;&lt;br&gt;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;&lt;/p&gt;

&lt;p&gt;@Configuration&lt;br&gt;
public class WebConfig {&lt;br&gt;
    &lt;a class="mentioned-user" href="https://dev.to/bean"&gt;@bean&lt;/a&gt;&lt;br&gt;
    public WebMvcConfigurer corsConfigurer() {&lt;br&gt;
        return new WebMvcConfigurer() {&lt;br&gt;
            &lt;a class="mentioned-user" href="https://dev.to/override"&gt;@override&lt;/a&gt;&lt;br&gt;
            public void addCorsMappings(CorsRegistry registry) {&lt;br&gt;
                registry.addMapping("/*&lt;em&gt;")&lt;br&gt;
                        .allowedOrigins("&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;", "&lt;a href="http://localhost:8080%22" rel="noopener noreferrer"&gt;http://localhost:8080"&lt;/a&gt;)&lt;br&gt;
                        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")&lt;br&gt;
                        .allowedHeaders("&lt;/em&gt;")&lt;br&gt;
                        .allowCredentials(true);&lt;br&gt;
            }&lt;br&gt;
        };&lt;br&gt;
    }&lt;br&gt;
}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.domain;&lt;/p&gt;

&lt;p&gt;import jakarta.persistence.*;&lt;br&gt;
import jakarta.validation.constraints.NotNull;&lt;br&gt;
import jakarta.validation.constraints.Positive;&lt;br&gt;
import lombok.Data;&lt;br&gt;
import java.math.BigDecimal;&lt;br&gt;
import java.time.LocalDate;&lt;br&gt;
import java.time.LocalDateTime;&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/data"&gt;@data&lt;/a&gt;&lt;br&gt;
@Entity&lt;br&gt;
@Table(name = "donations")&lt;br&gt;
public class Donation {&lt;br&gt;
    &lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;&lt;br&gt;
    @GeneratedValue(strategy = GenerationType.IDENTITY)&lt;br&gt;
    private Long id;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Column(name = "serial_no", unique = true)
private String serialNo;

@NotNull(message = "Donation date is mandatory")
@Column(name = "donation_date", nullable = false)
private LocalDate donationDate;

@NotNull(message = "Family is mandatory")
@ManyToOne
@JoinColumn(name = "family_id", nullable = false)
private Family family;

@ManyToOne
@JoinColumn(name = "volunteer_id")
private Volunteer volunteer;

@NotNull(message = "Amount is mandatory")
@Positive(message = "Amount must be positive")
@Column(nullable = false)
private BigDecimal amount;

@Column(name = "payment_type")
private String paymentType; // "CASH" or "TRANSFER"

@Column(name = "installment_number")
private Integer installmentNumber;

@Column(name = "total_installments")
private Integer totalInstallments;

@Column(name = "photo_url")
private String photoUrl;

@Column(name = "giver_sign_url")
private String giverSignUrl;

@Column(name = "volunteer_sign_url")
private String volunteerSignUrl;

@Column(name = "receiver_sign_url")
private String receiverSignUrl;

private String notes;
private String status;

@Column(name = "created_at")
private LocalDateTime createdAt;

@Column(name = "updated_at")
private LocalDateTime updatedAt;

// ... rest of the class remains the same

@PrePersist
protected void onCreate() {
    createdAt = LocalDateTime.now();
    updatedAt = LocalDateTime.now();
    if (serialNo == null) {
        serialNo = "DON" + System.currentTimeMillis();
    }
    if (status == null) {
        status = "PENDING";
    }
    if (installmentNumber == null) {
        installmentNumber = 1;
    }
    if (totalInstallments == null) {
        totalInstallments = 1;
    }


}
public Family getFamily() {
    return family;
}

public void setFamily(Family family) {
    this.family = family;
}

public Volunteer getVolunteer() {
    return volunteer;
}

public void setVolunteer(Volunteer volunteer) {
    this.volunteer = volunteer;
}

@PreUpdate
protected void onUpdate() {
    updatedAt = LocalDateTime.now();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.domain;&lt;/p&gt;

&lt;p&gt;import jakarta.persistence.*;&lt;br&gt;
import jakarta.validation.constraints.NotBlank;&lt;br&gt;
import jakarta.validation.constraints.Pattern;&lt;/p&gt;

&lt;p&gt;@Entity&lt;br&gt;
@Table(name = "families")&lt;br&gt;
public class Family {&lt;br&gt;
    &lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;&lt;br&gt;
    @GeneratedValue(strategy = GenerationType.IDENTITY)&lt;br&gt;
    private Long id;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@NotBlank(message = "Family name is mandatory")
@Column(nullable = false)
private String name;

@Column(name = "house_no")
private String houseNo;

@Column(name = "street_name")
private String streetName;

private String address;

@Pattern(regexp = "^[\\+]?[1-9][\\d]{0,15}$", 
         message = "Phone number format is invalid")
private String phone;

// Default constructor
public Family() {
}

// Old constructor (backward compatibility)
public Family(String name, String address, String phone) {
    this.name = name;
    this.address = address;
    this.phone = phone;
}

// New constructor (all fields except id)
public Family(String name, String houseNo, String streetName, String address, String phone) {
    this.name = name;
    this.houseNo = houseNo;
    this.streetName = streetName;
    this.address = address;
    this.phone = phone;
}

// Getters and setters
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getHouseNo() {
    return houseNo;
}

public void setHouseNo(String houseNo) {
    this.houseNo = houseNo;
}

public String getStreetName() {
    return streetName;
}

public void setStreetName(String streetName) {
    this.streetName = streetName;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.domain;&lt;/p&gt;

&lt;p&gt;import jakarta.persistence.*;&lt;br&gt;
import jakarta.validation.constraints.NotBlank;&lt;br&gt;
import jakarta.validation.constraints.NotNull;&lt;br&gt;
import lombok.Data;&lt;br&gt;
import java.time.LocalDateTime;&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/data"&gt;@data&lt;/a&gt;&lt;br&gt;
@Entity&lt;br&gt;
@Table(name = "notifications")&lt;br&gt;
public class Notification {&lt;br&gt;
    &lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;&lt;br&gt;
    @GeneratedValue(strategy = GenerationType.IDENTITY)&lt;br&gt;
    private Long id;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@NotNull(message = "Family is mandatory")
@ManyToOne
@JoinColumn(name = "family_id", nullable = false)
private Family family;

@NotBlank(message = "Message is mandatory")
private String message;

@Column(name = "message_type")
private String messageType;

private String status;

@Column(name = "sent_at")
private LocalDateTime sentAt;

@Column(name = "created_at")
private LocalDateTime createdAt;


@PrePersist
protected void onCreate() {
    createdAt = LocalDateTime.now();
    if (status == null) {
        status = "PENDING";
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.domain;&lt;/p&gt;

&lt;p&gt;import jakarta.persistence.*;&lt;br&gt;
import jakarta.validation.constraints.NotBlank;&lt;br&gt;
import jakarta.validation.constraints.Pattern;&lt;/p&gt;

&lt;p&gt;@Entity&lt;br&gt;
@Table(name = "volunteers")&lt;br&gt;
public class Volunteer {&lt;br&gt;
    &lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;&lt;br&gt;
    @GeneratedValue(strategy = GenerationType.IDENTITY)&lt;br&gt;
    private Long id;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@NotBlank(message = "Volunteer name is mandatory")
@Column(nullable = false)
private String name;

@Pattern(regexp = "^[\\+]?[1-9][\\d]{0,15}$", message = "Phone number format is invalid")
private String phone;

// Default constructor
public Volunteer() {
}

// Parameterized constructor
public Volunteer(String name, String phone) {
    this.name = name;
    this.phone = phone;
}

// Getters and setters
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.exception;&lt;/p&gt;

&lt;p&gt;import org.springframework.http.HttpStatus;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.ControllerAdvice;&lt;br&gt;
import org.springframework.web.bind.annotation.ExceptionHandler;&lt;br&gt;
import org.slf4j.Logger;&lt;br&gt;
import org.slf4j.LoggerFactory;&lt;/p&gt;

&lt;p&gt;@ControllerAdvice&lt;br&gt;
public class GlobalExceptionHandler {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity&amp;lt;String&amp;gt; handleResourceNotFoundException(ResourceNotFoundException ex) {
    logger.warn("Resource not found: {}", ex.getMessage());
    return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}

@ExceptionHandler(ValidationException.class)
public ResponseEntity&amp;lt;String&amp;gt; handleValidationException(ValidationException ex) {
    logger.warn("Validation error: {}", ex.getMessage());
    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}

@ExceptionHandler(Exception.class)
public ResponseEntity&amp;lt;String&amp;gt; handleGeneralException(Exception ex) {
    logger.error("Unexpected error occurred: ", ex);
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
            .body("An unexpected error occurred. Please try again later.");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.exception;&lt;/p&gt;

&lt;p&gt;public class ResourceNotFoundException extends RuntimeException {&lt;br&gt;
    public ResourceNotFoundException(String message) {&lt;br&gt;
        super(message);&lt;br&gt;
    }&lt;br&gt;
}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.exception;&lt;/p&gt;

&lt;p&gt;public class ValidationException extends RuntimeException {&lt;br&gt;
    public ValidationException(String message) {&lt;br&gt;
        super(message);&lt;br&gt;
    }&lt;br&gt;
}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.repository;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Donation;&lt;br&gt;
import com.maariyathaa.temple.domain.Family;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.jpa.repository.JpaRepository;&lt;br&gt;
import org.springframework.data.jpa.repository.Query;&lt;br&gt;
import org.springframework.data.repository.query.Param;&lt;/p&gt;

&lt;p&gt;import java.util.List;&lt;/p&gt;

&lt;p&gt;public interface DonationRepository extends JpaRepository {&lt;br&gt;
    List findByFamily(Family family);&lt;br&gt;
    List findByFamilyId(Long familyId);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Pagination methods
Page&amp;lt;Donation&amp;gt; findByFamilyId(Long familyId, Pageable pageable);
Page&amp;lt;Donation&amp;gt; findAll(Pageable pageable);

// Additional pagination methods you might find useful
Page&amp;lt;Donation&amp;gt; findByStatus(String status, Pageable pageable);

@Query("SELECT d FROM Donation d WHERE d.family.id = :familyId AND d.status = :status")
Page&amp;lt;Donation&amp;gt; findByFamilyIdAndStatus(@Param("familyId") Long familyId, 
                                      @Param("status") String status, 
                                      Pageable pageable);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.repository;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Family;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.jpa.repository.JpaRepository;&lt;br&gt;
import org.springframework.data.jpa.repository.Query;&lt;br&gt;
import org.springframework.data.repository.query.Param;&lt;/p&gt;

&lt;p&gt;public interface FamilyRepository extends JpaRepository {&lt;br&gt;
    // Basic pagination&lt;br&gt;
    Page findAll(Pageable pageable);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Search with pagination
Page&amp;lt;Family&amp;gt; findByNameContainingIgnoreCase(String name, Pageable pageable);

@Query("SELECT f FROM Family f WHERE f.name LIKE %:searchTerm% OR f.address LIKE %:searchTerm%")
Page&amp;lt;Family&amp;gt; searchFamilies(@Param("searchTerm") String searchTerm, Pageable pageable);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.repository;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Notification;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.jpa.repository.JpaRepository;&lt;br&gt;
import org.springframework.data.jpa.repository.Query;&lt;br&gt;
import org.springframework.data.repository.query.Param;&lt;/p&gt;

&lt;p&gt;public interface NotificationRepository extends JpaRepository {&lt;br&gt;
    // Basic pagination&lt;br&gt;
    Page findAll(Pageable pageable);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Filter by status with pagination
Page&amp;lt;Notification&amp;gt; findByStatus(String status, Pageable pageable);

// Filter by family with pagination
Page&amp;lt;Notification&amp;gt; findByFamilyId(Long familyId, Pageable pageable);

@Query("SELECT n FROM Notification n WHERE n.family.id = :familyId AND n.status = :status")
Page&amp;lt;Notification&amp;gt; findByFamilyIdAndStatus(@Param("familyId") Long familyId, 
                                          @Param("status") String status, 
                                          Pageable pageable);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}   &lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.repository;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Volunteer;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.jpa.repository.JpaRepository;&lt;br&gt;
import org.springframework.data.jpa.repository.Query;&lt;br&gt;
import org.springframework.data.repository.query.Param;&lt;/p&gt;

&lt;p&gt;public interface VolunteerRepository extends JpaRepository {&lt;br&gt;
    // Basic pagination&lt;br&gt;
    Page findAll(Pageable pageable);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Search with pagination
Page&amp;lt;Volunteer&amp;gt; findByNameContainingIgnoreCase(String name, Pageable pageable);

@Query("SELECT v FROM Volunteer v WHERE v.name LIKE %:searchTerm% OR v.phone LIKE %:searchTerm%")
Page&amp;lt;Volunteer&amp;gt; searchVolunteers(@Param("searchTerm") String searchTerm, Pageable pageable);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.service;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Donation;&lt;br&gt;
import com.maariyathaa.temple.domain.Family;&lt;br&gt;
import com.maariyathaa.temple.domain.Volunteer;&lt;br&gt;
import com.maariyathaa.temple.exception.ResourceNotFoundException;&lt;br&gt;
import com.maariyathaa.temple.repository.DonationRepository;&lt;br&gt;
import com.maariyathaa.temple.repository.FamilyRepository;&lt;br&gt;
import com.maariyathaa.temple.repository.VolunteerRepository;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.stereotype.Service;&lt;br&gt;
import java.math.BigDecimal;&lt;br&gt;
import java.util.List;&lt;br&gt;
import java.util.Map;&lt;br&gt;
import java.util.stream.Collectors;&lt;br&gt;
import java.util.HashMap;&lt;/p&gt;

&lt;p&gt;@Service&lt;br&gt;
public class DonationService {&lt;br&gt;
    private final DonationRepository donationRepository;&lt;br&gt;
    private final FamilyRepository familyRepository;&lt;br&gt;
    private final VolunteerRepository volunteerRepository;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private static final BigDecimal TARGET_AMOUNT = new BigDecimal("3000");

public DonationService(DonationRepository donationRepository, FamilyRepository familyRepository, VolunteerRepository volunteerRepository) {
    this.donationRepository = donationRepository;
    this.familyRepository = familyRepository;
    this.volunteerRepository = volunteerRepository;
}

// Existing methods...

// Add these pagination methods:
public Page&amp;lt;Donation&amp;gt; getAllDonations(Pageable pageable) {
    return donationRepository.findAll(pageable);
}

public Page&amp;lt;Donation&amp;gt; getDonationsByFamilyId(Long familyId, Pageable pageable) {
    return donationRepository.findByFamilyId(familyId, pageable);
}

public Page&amp;lt;Donation&amp;gt; getDonationsByStatus(String status, Pageable pageable) {
    return donationRepository.findByStatus(status, pageable);
}
// ... existing methods ...

public Donation saveDonation(Donation donation) {
    // Validate family exists - USE ResourceNotFoundException
    Family family = familyRepository.findById(donation.getFamily().getId())
            .orElseThrow(() -&amp;gt; new ResourceNotFoundException("Family not found with id: " + donation.getFamily().getId()));
    donation.setFamily(family); // This line stays the same

    // Validate volunteer exists if provided - USE ResourceNotFoundException
    if (donation.getVolunteer() != null &amp;amp;&amp;amp; donation.getVolunteer().getId() != null) {
        Volunteer volunteer = volunteerRepository.findById(donation.getVolunteer().getId())
                .orElseThrow(() -&amp;gt; new ResourceNotFoundException("Volunteer not found with id: " + donation.getVolunteer().getId()));
        donation.setVolunteer(volunteer);
    } else {
        donation.setVolunteer(null);
    }

    // Rest of the method remains exactly the same
    // Get existing donations BEFORE saving the current one
    List&amp;lt;Donation&amp;gt; familyDonations = donationRepository.findByFamilyId(family.getId());

    // Calculate total paid by this family (excluding current donation)
    BigDecimal totalPaid = familyDonations.stream()
            .map(Donation::getAmount)
            .reduce(BigDecimal.ZERO, BigDecimal::add);

    // Add current donation amount to total
    totalPaid = totalPaid.add(donation.getAmount());

    // Determine payment status
    if (totalPaid.compareTo(BigDecimal.ZERO) == 0) {
        donation.setStatus("NOT_PAID");
    } else if (totalPaid.compareTo(TARGET_AMOUNT) &amp;lt; 0) {
        donation.setStatus("PARTIAL");
    } else {
        donation.setStatus("COMPLETED");
    }

    return donationRepository.save(donation);
}


public Map&amp;lt;String, Object&amp;gt; getFamilyPaymentStatus(Long familyId) {
    Family family = familyRepository.findById(familyId)
            .orElseThrow(() -&amp;gt; new RuntimeException("Family not found with id: " + familyId));

    List&amp;lt;Donation&amp;gt; donations = donationRepository.findByFamilyId(familyId);
    BigDecimal totalPaid = donations.stream()
            .map(Donation::getAmount)
            .reduce(BigDecimal.ZERO, BigDecimal::add);

    BigDecimal remainingAmount = TARGET_AMOUNT.subtract(totalPaid);
    if (remainingAmount.compareTo(BigDecimal.ZERO) &amp;lt; 0) {
        remainingAmount = BigDecimal.ZERO;
    }

    String status;
    if (totalPaid.compareTo(BigDecimal.ZERO) == 0) {
        status = "NOT_PAID";
    } else if (totalPaid.compareTo(TARGET_AMOUNT) &amp;lt; 0) {
        status = "PARTIAL";
    } else {
        status = "COMPLETED";
    }

    Map&amp;lt;String, Object&amp;gt; statusInfo = new HashMap&amp;lt;&amp;gt;();
    statusInfo.put("familyId", familyId);
    statusInfo.put("familyName", family.getName());
    statusInfo.put("totalPaid", totalPaid);
    statusInfo.put("targetAmount", TARGET_AMOUNT);
    statusInfo.put("remainingAmount", remainingAmount);
    statusInfo.put("status", status);
    statusInfo.put("installments", donations.size());
    statusInfo.put("donations", donations);

    return statusInfo;
}

public Map&amp;lt;Long, Map&amp;lt;String, Object&amp;gt;&amp;gt; getAllFamiliesPaymentStatus() {
    List&amp;lt;Family&amp;gt; families = familyRepository.findAll();
    Map&amp;lt;Long, Map&amp;lt;String, Object&amp;gt;&amp;gt; statusMap = new HashMap&amp;lt;&amp;gt;();

    for (Family family : families) {
        statusMap.put(family.getId(), getFamilyPaymentStatus(family.getId()));
    }

    return statusMap;
}

public List&amp;lt;Donation&amp;gt; getPendingPayments() {
    List&amp;lt;Donation&amp;gt; allDonations = donationRepository.findAll();
    // Filter families that haven't completed payment
    return allDonations.stream()
            .filter(donation -&amp;gt; {
                List&amp;lt;Donation&amp;gt; familyDonations = donationRepository.findByFamilyId(donation.getFamily().getId());
                BigDecimal totalPaid = familyDonations.stream()
                        .map(Donation::getAmount)
                        .reduce(BigDecimal.ZERO, BigDecimal::add);
                return totalPaid.compareTo(TARGET_AMOUNT) &amp;lt; 0;
            })
            .collect(Collectors.toList());
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;// Add these to DonationService&lt;br&gt;
    public List getAllDonations() {&lt;br&gt;
        return donationRepository.findAll();&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public Donation getDonationById(Long id) {
    return donationRepository.findById(id)
            .orElseThrow(() -&amp;gt; new RuntimeException("Donation not found with id: " + id));
}

public List&amp;lt;Donation&amp;gt; getDonationsByFamilyId(Long familyId) {
    return donationRepository.findByFamilyId(familyId);
}

public void deleteDonation(Long id) {
    donationRepository.deleteById(id);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.service;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Family;&lt;br&gt;
import com.maariyathaa.temple.repository.FamilyRepository;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.stereotype.Service;&lt;br&gt;
import java.util.List;&lt;/p&gt;

&lt;p&gt;@Service&lt;br&gt;
public class FamilyService {&lt;br&gt;
    private final FamilyRepository familyRepository;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public FamilyService(FamilyRepository familyRepository) {
    this.familyRepository = familyRepository;
}

// Add pagination methods:
public Page&amp;lt;Family&amp;gt; getAllFamilies(Pageable pageable) {
    return familyRepository.findAll(pageable);
}

public Page&amp;lt;Family&amp;gt; searchFamilies(String searchTerm, Pageable pageable) {
    return familyRepository.searchFamilies(searchTerm, pageable);
}

// Keep existing methods:
public List&amp;lt;Family&amp;gt; getAllFamilies() {
    return familyRepository.findAll();
}

public Family getFamilyById(Long id) {
    return familyRepository.findById(id)
            .orElseThrow(() -&amp;gt; new RuntimeException("Family not found with id: " + id));
}

public Family saveFamily(Family family) {
    return familyRepository.save(family);
}

public void deleteFamily(Long id) {
    familyRepository.deleteById(id);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.service;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Notification;&lt;br&gt;
import com.maariyathaa.temple.repository.NotificationRepository;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.stereotype.Service;&lt;br&gt;
import java.util.List;&lt;/p&gt;

&lt;p&gt;@Service&lt;br&gt;
public class NotificationService {&lt;br&gt;
    private final NotificationRepository notificationRepository;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public NotificationService(NotificationRepository notificationRepository) {
    this.notificationRepository = notificationRepository;
}

// Pagination methods:
public Page&amp;lt;Notification&amp;gt; getAllNotifications(Pageable pageable) {
    return notificationRepository.findAll(pageable);
}

public Page&amp;lt;Notification&amp;gt; getNotificationsByStatus(String status, Pageable pageable) {
    return notificationRepository.findByStatus(status, pageable);
}

public Page&amp;lt;Notification&amp;gt; getNotificationsByFamilyId(Long familyId, Pageable pageable) {
    return notificationRepository.findByFamilyId(familyId, pageable);
}

// Regular methods:
public List&amp;lt;Notification&amp;gt; getAllNotifications() {
    return notificationRepository.findAll();
}

public Notification getNotificationById(Long id) {
    return notificationRepository.findById(id)
            .orElseThrow(() -&amp;gt; new RuntimeException("Notification not found with id: " + id));
}

public Notification saveNotification(Notification notification) {
    return notificationRepository.save(notification);
}

public void deleteNotification(Long id) {
    notificationRepository.deleteById(id);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.service;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Volunteer;&lt;br&gt;
import com.maariyathaa.temple.repository.VolunteerRepository;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.stereotype.Service;&lt;br&gt;
import java.util.List;&lt;/p&gt;

&lt;p&gt;@Service&lt;br&gt;
public class VolunteerService {&lt;br&gt;
    private final VolunteerRepository volunteerRepository;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public VolunteerService(VolunteerRepository volunteerRepository) {
    this.volunteerRepository = volunteerRepository;
}

// Add pagination methods:
public Page&amp;lt;Volunteer&amp;gt; getAllVolunteers(Pageable pageable) {
    return volunteerRepository.findAll(pageable);
}

public Page&amp;lt;Volunteer&amp;gt; searchVolunteers(String searchTerm, Pageable pageable) {
    return volunteerRepository.searchVolunteers(searchTerm, pageable);
}

// Keep existing methods:
public List&amp;lt;Volunteer&amp;gt; getAllVolunteers() {
    return volunteerRepository.findAll();
}

public Volunteer getVolunteerById(Long id) {
    return volunteerRepository.findById(id)
            .orElseThrow(() -&amp;gt; new RuntimeException("Volunteer not found with id: " + id));
}

public Volunteer saveVolunteer(Volunteer volunteer) {
    return volunteerRepository.save(volunteer);
}

public void deleteVolunteer(Long id) {
    volunteerRepository.deleteById(id);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.web;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Donation;&lt;br&gt;
import com.maariyathaa.temple.service.DonationService;&lt;br&gt;
import io.swagger.v3.oas.annotations.Operation;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponse;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponses;&lt;br&gt;
import jakarta.validation.Valid;&lt;br&gt;
import lombok.RequiredArgsConstructor;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.PageRequest;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.domain.Sort;&lt;br&gt;
import org.springframework.http.HttpStatus;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.*;&lt;/p&gt;

&lt;p&gt;import java.util.List;&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api/donations")&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class DonationController {&lt;br&gt;
    private final DonationService donationService;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Operation(summary = "Get all donations with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Donations retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping
public ResponseEntity&amp;lt;Page&amp;lt;Donation&amp;gt;&amp;gt; getAllDonations(
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "donationDate") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(donationService.getAllDonations(pageable));
}

@Operation(summary = "Get donation by ID")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Donation retrieved successfully"),
    @ApiResponse(responseCode = "404", description = "Donation not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/{id}")
public ResponseEntity&amp;lt;Donation&amp;gt; getDonationById(@PathVariable Long id) {
    return ResponseEntity.ok(donationService.getDonationById(id));
}

@Operation(summary = "Create a new donation")
@ApiResponses(value = {
    @ApiResponse(responseCode = "201", description = "Donation created successfully"),
    @ApiResponse(responseCode = "400", description = "Invalid input"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@PostMapping
public ResponseEntity&amp;lt;Donation&amp;gt; createDonation(@Valid @RequestBody Donation donation) {
    return new ResponseEntity&amp;lt;&amp;gt;(donationService.saveDonation(donation), HttpStatus.CREATED);
}

@Operation(summary = "Delete a donation")
@ApiResponses(value = {
    @ApiResponse(responseCode = "204", description = "Donation deleted successfully"),
    @ApiResponse(responseCode = "404", description = "Donation not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@DeleteMapping("/{id}")
public ResponseEntity&amp;lt;Void&amp;gt; deleteDonation(@PathVariable Long id) {
    donationService.deleteDonation(id);
    return ResponseEntity.noContent().build();
}

@Operation(summary = "Get donations by family ID with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Donations retrieved successfully"),
    @ApiResponse(responseCode = "404", description = "Family not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/family/{familyId}")
public ResponseEntity&amp;lt;Page&amp;lt;Donation&amp;gt;&amp;gt; getDonationsByFamily(
        @PathVariable Long familyId,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "donationDate") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(donationService.getDonationsByFamilyId(familyId, pageable));
}

@Operation(summary = "Get donations by status with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Donations retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/status/{status}")
public ResponseEntity&amp;lt;Page&amp;lt;Donation&amp;gt;&amp;gt; getDonationsByStatus(
        @PathVariable String status,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "donationDate") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(donationService.getDonationsByStatus(status, pageable));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.web;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Family;&lt;br&gt;
import com.maariyathaa.temple.service.FamilyService;&lt;br&gt;
import io.swagger.v3.oas.annotations.Operation;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponse;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponses;&lt;br&gt;
import jakarta.validation.Valid;&lt;br&gt;
import lombok.RequiredArgsConstructor;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.PageRequest;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.domain.Sort;&lt;br&gt;
import org.springframework.http.HttpStatus;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.*;&lt;/p&gt;

&lt;p&gt;import java.util.List;&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api/families")&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class FamilyController {&lt;br&gt;
    private final FamilyService familyService;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Operation(summary = "Get all families with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Families retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping
public ResponseEntity&amp;lt;Page&amp;lt;Family&amp;gt;&amp;gt; getAllFamilies(
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "name") String sortBy,
        @RequestParam(defaultValue = "asc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(familyService.getAllFamilies(pageable));
}

@Operation(summary = "Get family by ID")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Family retrieved successfully"),
    @ApiResponse(responseCode = "404", description = "Family not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/{id}")
public ResponseEntity&amp;lt;Family&amp;gt; getFamilyById(@PathVariable Long id) {
    return ResponseEntity.ok(familyService.getFamilyById(id));
}

@Operation(summary = "Create a new family")
@ApiResponses(value = {
    @ApiResponse(responseCode = "201", description = "Family created successfully"),
    @ApiResponse(responseCode = "400", description = "Invalid input"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@PostMapping
public ResponseEntity&amp;lt;Family&amp;gt; createFamily(@Valid @RequestBody Family family) {
    return new ResponseEntity&amp;lt;&amp;gt;(familyService.saveFamily(family), HttpStatus.CREATED);
}

@Operation(summary = "Delete a family")
@ApiResponses(value = {
    @ApiResponse(responseCode = "204", description = "Family deleted successfully"),
    @ApiResponse(responseCode = "404", description = "Family not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@DeleteMapping("/{id}")
public ResponseEntity&amp;lt;Void&amp;gt; deleteFamily(@PathVariable Long id) {
    familyService.deleteFamily(id);
    return ResponseEntity.noContent().build();
}

@Operation(summary = "Search families with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Families retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/search")
public ResponseEntity&amp;lt;Page&amp;lt;Family&amp;gt;&amp;gt; searchFamilies(
        @RequestParam String searchTerm,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "name") String sortBy,
        @RequestParam(defaultValue = "asc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(familyService.searchFamilies(searchTerm, pageable));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.web;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Notification;&lt;br&gt;
import com.maariyathaa.temple.service.NotificationService;&lt;br&gt;
import io.swagger.v3.oas.annotations.Operation;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponse;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponses;&lt;br&gt;
import lombok.RequiredArgsConstructor;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.PageRequest;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.domain.Sort;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.*;&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api/notifications")&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class NotificationController {&lt;br&gt;
    private final NotificationService notificationService;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Operation(summary = "Get all notifications with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Notifications retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping
public ResponseEntity&amp;lt;Page&amp;lt;Notification&amp;gt;&amp;gt; getAllNotifications(
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "createdAt") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(notificationService.getAllNotifications(pageable));
}

@Operation(summary = "Get notifications by status with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Notifications retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/status/{status}")
public ResponseEntity&amp;lt;Page&amp;lt;Notification&amp;gt;&amp;gt; getNotificationsByStatus(
        @PathVariable String status,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "createdAt") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(notificationService.getNotificationsByStatus(status, pageable));
}

@Operation(summary = "Get notifications by family ID with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Notifications retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/family/{familyId}")
public ResponseEntity&amp;lt;Page&amp;lt;Notification&amp;gt;&amp;gt; getNotificationsByFamilyId(
        @PathVariable Long familyId,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "createdAt") String sortBy,
        @RequestParam(defaultValue = "desc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(notificationService.getNotificationsByFamilyId(familyId, pageable));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.web;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.service.DonationService;&lt;br&gt;
import io.swagger.v3.oas.annotations.Operation;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponse;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponses;&lt;br&gt;
import lombok.RequiredArgsConstructor;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.*;&lt;/p&gt;

&lt;p&gt;import java.util.Map;&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api/payments")&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class PaymentController {&lt;br&gt;
    private final DonationService donationService;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Operation(summary = "Get payment status for a family")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Payment status retrieved successfully"),
    @ApiResponse(responseCode = "404", description = "Family not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/status/family/{familyId}")
public ResponseEntity&amp;lt;Map&amp;lt;String, Object&amp;gt;&amp;gt; getFamilyPaymentStatus(@PathVariable Long familyId) {
    return ResponseEntity.ok(donationService.getFamilyPaymentStatus(familyId));
}

@Operation(summary = "Get payment status for all families")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Payment statuses retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/status/all")
public ResponseEntity&amp;lt;Map&amp;lt;Long, Map&amp;lt;String, Object&amp;gt;&amp;gt;&amp;gt; getAllFamiliesPaymentStatus() {
    return ResponseEntity.ok(donationService.getAllFamiliesPaymentStatus());
}

@Operation(summary = "Get pending payments")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Pending payments retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/pending")
public ResponseEntity&amp;lt;?&amp;gt; getPendingPayments() {
    return ResponseEntity.ok(donationService.getPendingPayments());
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;




&lt;p&gt;package com.maariyathaa.temple.web;&lt;/p&gt;

&lt;p&gt;import com.maariyathaa.temple.domain.Volunteer;&lt;br&gt;
import com.maariyathaa.temple.service.VolunteerService;&lt;br&gt;
import io.swagger.v3.oas.annotations.Operation;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponse;&lt;br&gt;
import io.swagger.v3.oas.annotations.responses.ApiResponses;&lt;br&gt;
import jakarta.validation.Valid;&lt;br&gt;
import lombok.RequiredArgsConstructor;&lt;br&gt;
import org.springframework.data.domain.Page;&lt;br&gt;
import org.springframework.data.domain.PageRequest;&lt;br&gt;
import org.springframework.data.domain.Pageable;&lt;br&gt;
import org.springframework.data.domain.Sort;&lt;br&gt;
import org.springframework.http.HttpStatus;&lt;br&gt;
import org.springframework.http.ResponseEntity;&lt;br&gt;
import org.springframework.web.bind.annotation.*;&lt;/p&gt;

&lt;p&gt;import java.util.List;&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api/volunteers")&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class VolunteerController {&lt;br&gt;
    private final VolunteerService volunteerService;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Operation(summary = "Get all volunteers with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Volunteers retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping
public ResponseEntity&amp;lt;Page&amp;lt;Volunteer&amp;gt;&amp;gt; getAllVolunteers(
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "name") String sortBy,
        @RequestParam(defaultValue = "asc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(volunteerService.getAllVolunteers(pageable));
}

@Operation(summary = "Get volunteer by ID")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Volunteer retrieved successfully"),
    @ApiResponse(responseCode = "404", description = "Volunteer not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/{id}")
public ResponseEntity&amp;lt;Volunteer&amp;gt; getVolunteerById(@PathVariable Long id) {
    return ResponseEntity.ok(volunteerService.getVolunteerById(id));
}

@Operation(summary = "Create a new volunteer")
@ApiResponses(value = {
    @ApiResponse(responseCode = "201", description = "Volunteer created successfully"),
    @ApiResponse(responseCode = "400", description = "Invalid input"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@PostMapping
public ResponseEntity&amp;lt;Volunteer&amp;gt; createVolunteer(@Valid @RequestBody Volunteer volunteer) {
    return new ResponseEntity&amp;lt;&amp;gt;(volunteerService.saveVolunteer(volunteer), HttpStatus.CREATED);
}

@Operation(summary = "Delete a volunteer")
@ApiResponses(value = {
    @ApiResponse(responseCode = "204", description = "Volunteer deleted successfully"),
    @ApiResponse(responseCode = "404", description = "Volunteer not found"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@DeleteMapping("/{id}")
public ResponseEntity&amp;lt;Void&amp;gt; deleteVolunteer(@PathVariable Long id) {
    volunteerService.deleteVolunteer(id);
    return ResponseEntity.noContent().build();
}

@Operation(summary = "Search volunteers with pagination")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Volunteers retrieved successfully"),
    @ApiResponse(responseCode = "500", description = "Internal server error")
})
@GetMapping("/search")
public ResponseEntity&amp;lt;Page&amp;lt;Volunteer&amp;gt;&amp;gt; searchVolunteers(
        @RequestParam String searchTerm,
        @RequestParam(defaultValue = "0") int page,
        @RequestParam(defaultValue = "10") int size,
        @RequestParam(defaultValue = "name") String sortBy,
        @RequestParam(defaultValue = "asc") String direction) {

    Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) 
        ? Sort.Direction.DESC : Sort.Direction.ASC;
    Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));

    return ResponseEntity.ok(volunteerService.searchVolunteers(searchTerm, pageable));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;___________________________________________________________________# Application name&lt;br&gt;
spring.application.name=Maariyathaa&lt;/p&gt;

&lt;h1&gt;
  
  
  Database configuration
&lt;/h1&gt;

&lt;p&gt;spring.datasource.url=jdbc:postgresql://localhost:5432/maariyathaa&lt;br&gt;
spring.datasource.username=maariyathaa&lt;br&gt;
spring.datasource.password=maariyathaa&lt;/p&gt;

&lt;h1&gt;
  
  
  JPA configuration
&lt;/h1&gt;

&lt;p&gt;spring.jpa.hibernate.ddl-auto=update&lt;br&gt;
spring.jpa.show-sql=true&lt;br&gt;
spring.jpa.properties.hibernate.format_sql=true&lt;br&gt;
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect&lt;/p&gt;

&lt;h1&gt;
  
  
  Server port
&lt;/h1&gt;

&lt;p&gt;server.port=8080&lt;/p&gt;

&lt;h1&gt;
  
  
  Better JSON output
&lt;/h1&gt;

&lt;p&gt;spring.jackson.serialization.indent-output=true&lt;/p&gt;




&lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br&gt;

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"&amp;gt;&lt;br&gt;
    4.0.0&lt;br&gt;
    &lt;br&gt;
        org.springframework.boot&lt;br&gt;
        spring-boot-starter-parent&lt;br&gt;
        3.5.5&lt;br&gt;
         &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br&gt;
    &lt;br&gt;
    com.maariyathaa&lt;br&gt;
    maariyathaa&lt;br&gt;
    0.0.1-SNAPSHOT&lt;br&gt;
    Maariyathaa&lt;br&gt;
    Temple donation management system&lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
        &lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
        &lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
        17&lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
        &lt;br&gt;
            org.springframework.boot&lt;br&gt;
            spring-boot-starter-data-jpa&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
            org.springframework.boot&lt;br&gt;
            spring-boot-starter-web&lt;br&gt;
        &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;spring-boot-devtools&amp;lt;/artifactId&amp;gt;
        &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
        &amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.postgresql&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;postgresql&amp;lt;/artifactId&amp;gt;
        &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
        &amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;
        &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;

    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;spring-boot-starter-validation&amp;lt;/artifactId&amp;gt;
    &amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
    org.springdoc&lt;br&gt;
    springdoc-openapi-starter-webmvc-ui&lt;br&gt;
    2.8.5&lt;br&gt;
&lt;br&gt;
    &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
        &amp;lt;plugin&amp;gt;
            &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;configuration&amp;gt;
                &amp;lt;annotationProcessorPaths&amp;gt;
                    &amp;lt;path&amp;gt;
                        &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
                        &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
                    &amp;lt;/path&amp;gt;
                &amp;lt;/annotationProcessorPaths&amp;gt;
            &amp;lt;/configuration&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;configuration&amp;gt;
                &amp;lt;excludes&amp;gt;
                    &amp;lt;exclude&amp;gt;
                        &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
                        &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
                    &amp;lt;/exclude&amp;gt;
                &amp;lt;/excludes&amp;gt;
            &amp;lt;/configuration&amp;gt;
        &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
&amp;lt;/build&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;FrontEnd Section &lt;/p&gt;

&lt;p&gt;import React, { useState, useEffect } from 'react';&lt;br&gt;
import axios from 'axios';&lt;br&gt;
import './App.css';&lt;/p&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [families, setFamilies] = useState([]);&lt;br&gt;
  const [volunteers, setVolunteers] = useState([]);&lt;br&gt;
  const [activeTab, setActiveTab] = useState('families');&lt;br&gt;
  const [newFamily, setNewFamily] = useState({ name: '', address: '', phone: '' });&lt;br&gt;
  const [newVolunteer, setNewVolunteer] = useState({ name: '', phone: '' });&lt;br&gt;
  const [editingFamily, setEditingFamily] = useState(null);&lt;br&gt;
  const [editingVolunteer, setEditingVolunteer] = useState(null);&lt;br&gt;
  const [editFamilyData, setEditFamilyData] = useState({ name: '', address: '', phone: '' });&lt;br&gt;
  const [editVolunteerData, setEditVolunteerData] = useState({ name: '', phone: '' });&lt;/p&gt;

&lt;p&gt;// Fetch data from backend&lt;br&gt;
  useEffect(() =&amp;gt; {&lt;br&gt;
    fetchFamilies();&lt;br&gt;
    fetchVolunteers();&lt;br&gt;
  }, []);&lt;/p&gt;

&lt;p&gt;const fetchFamilies = async () =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      const response = await axios.get('/api/families');&lt;br&gt;
      setFamilies(response.data);&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error fetching families:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const fetchVolunteers = async () =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      const response = await axios.get('/api/volunteers');&lt;br&gt;
      setVolunteers(response.data);&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error fetching volunteers:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleAddFamily = async (e) =&amp;gt; {&lt;br&gt;
    e.preventDefault();&lt;br&gt;
    try {&lt;br&gt;
      await axios.post('/api/families', newFamily);&lt;br&gt;
      setNewFamily({ name: '', address: '', phone: '' });&lt;br&gt;
      fetchFamilies();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error adding family:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleAddVolunteer = async (e) =&amp;gt; {&lt;br&gt;
    e.preventDefault();&lt;br&gt;
    try {&lt;br&gt;
      await axios.post('/api/volunteers', newVolunteer);&lt;br&gt;
      setNewVolunteer({ name: '', phone: '' });&lt;br&gt;
      fetchVolunteers();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error adding volunteer:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;// ===== ADD EDIT AND DELETE FUNCTIONALITY HERE =====&lt;/p&gt;

&lt;p&gt;// Family functions&lt;br&gt;
  const handleEditFamily = (family) =&amp;gt; {&lt;br&gt;
    setEditingFamily(family.id);&lt;br&gt;
    setEditFamilyData({ &lt;br&gt;
      name: family.name, &lt;br&gt;
      address: family.address, &lt;br&gt;
      phone: family.phone &lt;br&gt;
    });&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleUpdateFamily = async (id) =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      await axios.put(&lt;code&gt;/api/families/${id}&lt;/code&gt;, editFamilyData);&lt;br&gt;
      setEditingFamily(null);&lt;br&gt;
      fetchFamilies();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error updating family:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleDeleteFamily = async (id) =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      await axios.delete(&lt;code&gt;/api/families/${id}&lt;/code&gt;);&lt;br&gt;
      fetchFamilies();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error deleting family:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;// Volunteer functions&lt;br&gt;
  const handleEditVolunteer = (volunteer) =&amp;gt; {&lt;br&gt;
    setEditingVolunteer(volunteer.id);&lt;br&gt;
    setEditVolunteerData({ &lt;br&gt;
      name: volunteer.name, &lt;br&gt;
      phone: volunteer.phone &lt;br&gt;
    });&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleUpdateVolunteer = async (id) =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      await axios.put(&lt;code&gt;/api/volunteers/${id}&lt;/code&gt;, editVolunteerData);&lt;br&gt;
      setEditingVolunteer(null);&lt;br&gt;
      fetchVolunteers();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error updating volunteer:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const handleDeleteVolunteer = async (id) =&amp;gt; {&lt;br&gt;
    try {&lt;br&gt;
      await axios.delete(&lt;code&gt;/api/volunteers/${id}&lt;/code&gt;);&lt;br&gt;
      fetchVolunteers();&lt;br&gt;
    } catch (error) {&lt;br&gt;
      console.error('Error deleting volunteer:', error);&lt;br&gt;
    }&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;// ===== END OF EDIT AND DELETE FUNCTIONALITY =====&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;br&gt;
        &lt;h1&gt;Maariyathaa Temple Management System&lt;/h1&gt;
&lt;br&gt;
      
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;div className="tabs"&amp;gt;
    &amp;lt;button 
      className={activeTab === 'families' ? 'active' : ''} 
      onClick={() =&amp;gt; setActiveTab('families')}
    &amp;gt;
      Families
    &amp;lt;/button&amp;gt;
    &amp;lt;button 
      className={activeTab === 'volunteers' ? 'active' : ''} 
      onClick={() =&amp;gt; setActiveTab('volunteers')}
    &amp;gt;
      Volunteers
    &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;div className="content"&amp;gt;
    {activeTab === 'families' &amp;amp;&amp;amp; (
      &amp;lt;div&amp;gt;
        &amp;lt;h2&amp;gt;Families&amp;lt;/h2&amp;gt;
        &amp;lt;form onSubmit={handleAddFamily} className="form"&amp;gt;
          &amp;lt;h3&amp;gt;Add New Family&amp;lt;/h3&amp;gt;
          &amp;lt;input
            type="text"
            placeholder="Family Name"
            value={newFamily.name}
            onChange={(e) =&amp;gt; setNewFamily({...newFamily, name: e.target.value})}
            required
          /&amp;gt;
          &amp;lt;input
            type="text"
            placeholder="Address"
            value={newFamily.address}
            onChange={(e) =&amp;gt; setNewFamily({...newFamily, address: e.target.value})}
          /&amp;gt;
          &amp;lt;input
            type="text"
            placeholder="Phone"
            value={newFamily.phone}
            onChange={(e) =&amp;gt; setNewFamily({...newFamily, phone: e.target.value})}
          /&amp;gt;
          &amp;lt;button type="submit"&amp;gt;Add Family&amp;lt;/button&amp;gt;
        &amp;lt;/form&amp;gt;

        &amp;lt;div className="list"&amp;gt;
          &amp;lt;h3&amp;gt;Family List&amp;lt;/h3&amp;gt;
          {families.length === 0 ? (
            &amp;lt;p&amp;gt;No families found&amp;lt;/p&amp;gt;
          ) : (
            &amp;lt;ul&amp;gt;
              {families.map(family =&amp;gt; (
                &amp;lt;li key={family.id}&amp;gt;
                  {editingFamily === family.id ? (
                    &amp;lt;div className="edit-form"&amp;gt;
                      &amp;lt;input
                        type="text"
                        value={editFamilyData.name}
                        onChange={(e) =&amp;gt; setEditFamilyData({...editFamilyData, name: e.target.value})}
                      /&amp;gt;
                      &amp;lt;input
                        type="text"
                        value={editFamilyData.address}
                        onChange={(e) =&amp;gt; setEditFamilyData({...editFamilyData, address: e.target.value})}
                      /&amp;gt;
                      &amp;lt;input
                        type="text"
                        value={editFamilyData.phone}
                        onChange={(e) =&amp;gt; setEditFamilyData({...editFamilyData, phone: e.target.value})}
                      /&amp;gt;
                      &amp;lt;button onClick={() =&amp;gt; handleUpdateFamily(family.id)}&amp;gt;Save&amp;lt;/button&amp;gt;
                      &amp;lt;button onClick={() =&amp;gt; setEditingFamily(null)}&amp;gt;Cancel&amp;lt;/button&amp;gt;
                    &amp;lt;/div&amp;gt;
                  ) : (
                    &amp;lt;div&amp;gt;
                      &amp;lt;strong&amp;gt;{family.name}&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;
                      {family.address &amp;amp;&amp;amp; &amp;lt;span&amp;gt;Address: {family.address}&amp;lt;br /&amp;gt;&amp;lt;/span&amp;gt;}
                      {family.phone &amp;amp;&amp;amp; &amp;lt;span&amp;gt;Phone: {family.phone}&amp;lt;/span&amp;gt;}
                      &amp;lt;div className="item-actions"&amp;gt;
                        &amp;lt;button onClick={() =&amp;gt; handleEditFamily(family)}&amp;gt;Edit&amp;lt;/button&amp;gt;
                        &amp;lt;button onClick={() =&amp;gt; handleDeleteFamily(family.id)}&amp;gt;Delete&amp;lt;/button&amp;gt;
                      &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                  )}
                &amp;lt;/li&amp;gt;
              ))}
            &amp;lt;/ul&amp;gt;
          )}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    )}

    {activeTab === 'volunteers' &amp;amp;&amp;amp; (
      &amp;lt;div&amp;gt;
        &amp;lt;h2&amp;gt;Volunteers&amp;lt;/h2&amp;gt;
        &amp;lt;form onSubmit={handleAddVolunteer} className="form"&amp;gt;
          &amp;lt;h3&amp;gt;Add New Volunteer&amp;lt;/h3&amp;gt;
          &amp;lt;input
            type="text"
            placeholder="Volunteer Name"
            value={newVolunteer.name}
            onChange={(e) =&amp;gt; setNewVolunteer({...newVolunteer, name: e.target.value})}
            required
          /&amp;gt;
          &amp;lt;input
            type="text"
            placeholder="Phone"
            value={newVolunteer.phone}
            onChange={(e) =&amp;gt; setNewVolunteer({...newVolunteer, phone: e.target.value})}
          /&amp;gt;
          &amp;lt;button type="submit"&amp;gt;Add Volunteer&amp;lt;/button&amp;gt;
        &amp;lt;/form&amp;gt;

        &amp;lt;div className="list"&amp;gt;
          &amp;lt;h3&amp;gt;Volunteer List&amp;lt;/h3&amp;gt;
          {volunteers.length === 0 ? (
            &amp;lt;p&amp;gt;No volunteers found&amp;lt;/p&amp;gt;
          ) : (
            &amp;lt;ul&amp;gt;
              {volunteers.map(volunteer =&amp;gt; (
                &amp;lt;li key={volunteer.id}&amp;gt;
                  {editingVolunteer === volunteer.id ? (
                    &amp;lt;div className="edit-form"&amp;gt;
                      &amp;lt;input
                        type="text"
                        value={editVolunteerData.name}
                        onChange={(e) =&amp;gt; setEditVolunteerData({...editVolunteerData, name: e.target.value})}
                      /&amp;gt;
                      &amp;lt;input
                        type="text"
                        value={editVolunteerData.phone}
                        onChange={(e) =&amp;gt; setEditVolunteerData({...editVolunteerData, phone: e.target.value})}
                      /&amp;gt;
                      &amp;lt;button onClick={() =&amp;gt; handleUpdateVolunteer(volunteer.id)}&amp;gt;Save&amp;lt;/button&amp;gt;
                      &amp;lt;button onClick={() =&amp;gt; setEditingVolunteer(null)}&amp;gt;Cancel&amp;lt;/button&amp;gt;
                    &amp;lt;/div&amp;gt;
                  ) : (
                    &amp;lt;div&amp;gt;
                      &amp;lt;strong&amp;gt;{volunteer.name}&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;
                      {volunteer.phone &amp;amp;&amp;amp; &amp;lt;span&amp;gt;Phone: {volunteer.phone}&amp;lt;/span&amp;gt;}
                      &amp;lt;div className="item-actions"&amp;gt;
                        &amp;lt;button onClick={() =&amp;gt; handleEditVolunteer(volunteer)}&amp;gt;Edit&amp;lt;/button&amp;gt;
                        &amp;lt;button onClick={() =&amp;gt; handleDeleteVolunteer(volunteer.id)}&amp;gt;Delete&amp;lt;/button&amp;gt;
                      &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                  )}
                &amp;lt;/li&amp;gt;
              ))}
            &amp;lt;/ul&amp;gt;
          )}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    )}
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default App;&lt;/p&gt;




&lt;p&gt;/* Donation Management Styles */&lt;br&gt;
.donation-management {&lt;br&gt;
  padding: 20px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.donation-stats {&lt;br&gt;
  display: flex;&lt;br&gt;
  gap: 20px;&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.stat-card {&lt;br&gt;
  background-color: #f5f5f5;&lt;br&gt;
  padding: 20px;&lt;br&gt;
  border-radius: 8px;&lt;br&gt;
  text-align: center;&lt;br&gt;
  flex: 1;&lt;br&gt;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.stat-card h3 {&lt;br&gt;
  margin: 0 0 10px 0;&lt;br&gt;
  color: #666;&lt;br&gt;
  font-size: 14px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.stat-card p {&lt;br&gt;
  margin: 0;&lt;br&gt;
  font-size: 24px;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
  color: #333;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.donation-form {&lt;br&gt;
  background-color: #f9f9f9;&lt;br&gt;
  padding: 20px;&lt;br&gt;
  border-radius: 8px;&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.form-row {&lt;br&gt;
  display: flex;&lt;br&gt;
  gap: 20px;&lt;br&gt;
  margin-bottom: 15px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.form-group {&lt;br&gt;
  flex: 1;&lt;br&gt;
  margin-bottom: 15px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.form-group label {&lt;br&gt;
  display: block;&lt;br&gt;
  margin-bottom: 5px;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.form-group input,&lt;br&gt;
.form-group select,&lt;br&gt;
.form-group textarea {&lt;br&gt;
  width: 100%;&lt;br&gt;
  padding: 8px;&lt;br&gt;
  border: 1px solid #ddd;&lt;br&gt;
  border-radius: 4px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-fields {&lt;br&gt;
  display: flex;&lt;br&gt;
  align-items: center;&lt;br&gt;
  gap: 10px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-fields input {&lt;br&gt;
  width: 60px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-fields span {&lt;br&gt;
  color: #666;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-primary {&lt;br&gt;
  background-color: #4CAF50;&lt;br&gt;
  color: white;&lt;br&gt;
  padding: 10px 20px;&lt;br&gt;
  border: none;&lt;br&gt;
  border-radius: 4px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
  font-size: 16px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-primary:hover {&lt;br&gt;
  background-color: #45a049;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.donation-list table,&lt;br&gt;
.payment-status table {&lt;br&gt;
  width: 100%;&lt;br&gt;
  border-collapse: collapse;&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.donation-list th,&lt;br&gt;
.donation-list td,&lt;br&gt;
.payment-status th,&lt;br&gt;
.payment-status td {&lt;br&gt;
  border: 1px solid #ddd;&lt;br&gt;
  padding: 12px;&lt;br&gt;
  text-align: left;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.donation-list th,&lt;br&gt;
.payment-status th {&lt;br&gt;
  background-color: #f2f2f2;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-pending {&lt;br&gt;
  color: #ff9800;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-partial {&lt;br&gt;
  color: #2196f3;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-completed {&lt;br&gt;
  color: #4CAF50;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-not-paid {&lt;br&gt;
  color: #f44336;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-fully-paid {&lt;br&gt;
  color: #4CAF50;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.action-buttons {&lt;br&gt;
  display: flex;&lt;br&gt;
  gap: 5px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-edit {&lt;br&gt;
  background-color: #2196F3;&lt;br&gt;
  color: white;&lt;br&gt;
  padding: 5px 10px;&lt;br&gt;
  border: none;&lt;br&gt;
  border-radius: 3px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-delete {&lt;br&gt;
  background-color: #f44336;&lt;br&gt;
  color: white;&lt;br&gt;
  padding: 5px 10px;&lt;br&gt;
  border: none;&lt;br&gt;
  border-radius: 3px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;/* Payment Status Styles */&lt;br&gt;
.payment-overview {&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-cards {&lt;br&gt;
  display: grid;&lt;br&gt;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));&lt;br&gt;
  gap: 20px;&lt;br&gt;
  margin-bottom: 20px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-card {&lt;br&gt;
  background-color: #f8f9fa;&lt;br&gt;
  border-radius: 8px;&lt;br&gt;
  padding: 20px;&lt;br&gt;
  text-align: center;&lt;br&gt;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-title {&lt;br&gt;
  font-size: 14px;&lt;br&gt;
  color: #6c757d;&lt;br&gt;
  margin-bottom: 10px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-value {&lt;br&gt;
  font-size: 24px;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
  color: #343a40;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-badge {&lt;br&gt;
  padding: 4px 8px;&lt;br&gt;
  border-radius: 4px;&lt;br&gt;
  font-size: 12px;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-not-paid {&lt;br&gt;
  background-color: #ffeaea;&lt;br&gt;
  color: #dc3545;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-partial {&lt;br&gt;
  background-color: #fff3cd;&lt;br&gt;
  color: #856404;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-completed {&lt;br&gt;
  background-color: #d4edda;&lt;br&gt;
  color: #155724;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.status-pending {&lt;br&gt;
  background-color: #cce5ff;&lt;br&gt;
  color: #004085;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.payment-status-table {&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.payment-status-table table {&lt;br&gt;
  width: 100%;&lt;br&gt;
  border-collapse: collapse;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.payment-status-table th,&lt;br&gt;
.payment-status-table td {&lt;br&gt;
  padding: 12px;&lt;br&gt;
  text-align: left;&lt;br&gt;
  border-bottom: 1px solid #dee2e6;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.payment-status-table th {&lt;br&gt;
  background-color: #f8f9fa;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-reminder {&lt;br&gt;
  background-color: #17a2b8;&lt;br&gt;
  color: white;&lt;br&gt;
  border: none;&lt;br&gt;
  padding: 6px 12px;&lt;br&gt;
  border-radius: 4px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
  font-size: 12px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-reminder:hover:not(:disabled) {&lt;br&gt;
  background-color: #138496;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.btn-reminder:disabled {&lt;br&gt;
  background-color: #6c757d;&lt;br&gt;
  cursor: not-allowed;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-history {&lt;br&gt;
  margin-bottom: 30px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-history table {&lt;br&gt;
  width: 100%;&lt;br&gt;
  border-collapse: collapse;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-history th,&lt;br&gt;
.installment-history td {&lt;br&gt;
  padding: 12px;&lt;br&gt;
  text-align: left;&lt;br&gt;
  border-bottom: 1px solid #dee2e6;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.installment-history th {&lt;br&gt;
  background-color: #f8f9fa;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
}&lt;br&gt;
/* Add these styles to your existing App.css */&lt;/p&gt;

&lt;p&gt;.item-actions {&lt;br&gt;
  margin-top: 10px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.item-actions button {&lt;br&gt;
  margin-right: 5px;&lt;br&gt;
  padding: 5px 10px;&lt;br&gt;
  background-color: #4CAF50;&lt;br&gt;
  color: white;&lt;br&gt;
  border: none;&lt;br&gt;
  border-radius: 3px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.item-actions button:last-child {&lt;br&gt;
  background-color: #f44336;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.edit-form {&lt;br&gt;
  display: flex;&lt;br&gt;
  flex-direction: column;&lt;br&gt;
  gap: 5px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.edit-form input {&lt;br&gt;
  padding: 5px;&lt;br&gt;
  border: 1px solid #ddd;&lt;br&gt;
  border-radius: 3px;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.edit-form button {&lt;br&gt;
  padding: 5px 10px;&lt;br&gt;
  margin-right: 5px;&lt;br&gt;
  border: none;&lt;br&gt;
  border-radius: 3px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.edit-form button:first-of-type {&lt;br&gt;
  background-color: #4CAF50;&lt;br&gt;
  color: white;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.edit-form button:last-of-type {&lt;br&gt;
  background-color: #f44336;&lt;br&gt;
  color: white;&lt;br&gt;
}&lt;br&gt;
.loading-container {&lt;br&gt;
  display: flex;&lt;br&gt;
  flex-direction: column;&lt;br&gt;
  align-items: center;&lt;br&gt;
  justify-content: center;&lt;br&gt;
  height: 50vh;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.loading-container p {&lt;br&gt;
  margin-top: 20px;&lt;br&gt;
  font-size: 18px;&lt;br&gt;
}&lt;br&gt;
.loading-container {&lt;br&gt;
  display: flex;&lt;br&gt;
  flex-direction: column;&lt;br&gt;
  align-items: center;&lt;br&gt;
  justify-content: center;&lt;br&gt;
  height: 50vh;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.loading-container p {&lt;br&gt;
  margin-top: 20px;&lt;br&gt;
  font-size: 18px;&lt;br&gt;
} &lt;/p&gt;




&lt;p&gt;const fetchData = async () =&amp;gt; {&lt;br&gt;
  try {&lt;br&gt;
    const familyRes = await axios.get("/api/families");&lt;br&gt;
    console.log("📦 Families raw data:", familyRes.data);&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ✅ If API returns { content: [...] }
const familyData = Array.isArray(familyRes.data) 
  ? familyRes.data 
  : familyRes.data.content || [];

setFamilies(familyData);

const donationRes = await axios.get("/api/donations");
console.log("📦 Donations raw data:", donationRes.data);
const donationData = Array.isArray(donationRes.data)
  ? donationRes.data
  : donationRes.data.content || [];
setDonations(donationData);

const volunteerRes = await axios.get("/api/volunteers");
console.log("📦 Volunteers raw data:", volunteerRes.data);
const volunteerData = Array.isArray(volunteerRes.data)
  ? volunteerRes.data
  : volunteerRes.data.content || [];
setVolunteers(volunteerData);

const paymentRes = await axios.get("/api/payments");
console.log("📦 Payments raw data:", paymentRes.data);
const paymentData = Array.isArray(paymentRes.data)
  ? paymentRes.data
  : paymentRes.data.content || [];
setPayments(paymentData);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;} catch (error) {&lt;br&gt;
    console.error("❌ Error fetching data:", error);&lt;br&gt;
  }&lt;br&gt;
};&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;The spring boot run result *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;.   ____          _            __ _ _&lt;br&gt;
 /\ / &lt;strong&gt;&lt;em&gt;'&lt;/em&gt; __ _ &lt;em&gt;(&lt;/em&gt;)_ __  __ _ \ \ \ \&lt;br&gt;
( ( )_&lt;/strong&gt; | '_ | '&lt;em&gt;| | '&lt;/em&gt; \/ &lt;em&gt;` | \ \ \ \&lt;br&gt;
 \/  _&lt;/em&gt;&lt;em&gt;)| |&lt;/em&gt;)| | | | | || (&lt;em&gt;| |  ) ) ) )&lt;br&gt;
  '  |&lt;/em&gt;&lt;em&gt;__| .&lt;/em&gt;&lt;em&gt;|&lt;/em&gt;| |&lt;em&gt;|&lt;/em&gt;| |&lt;em&gt;_&lt;/em&gt;, | / / / /&lt;br&gt;
 =========|&lt;em&gt;|==============|&lt;/em&gt;_&lt;em&gt;/=/&lt;/em&gt;/&lt;em&gt;/&lt;/em&gt;/&lt;/p&gt;

&lt;p&gt;[32m :: Spring Boot :: [39m              [2m (v3.5.5)[0;39m&lt;/p&gt;

&lt;p&gt;[2m2025-08-25T18:52:37.694+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mc.m.temple.MaariyathaaApplication       [0;39m [2m:[0;39m Starting MaariyathaaApplication using Java 17.0.16 with PID 27963 (/home/prem/Developer/sts/Maariyathaa/target/classes started by prem in /home/prem/Developer/sts/Maariyathaa)&lt;br&gt;
[2m2025-08-25T18:52:37.696+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mc.m.temple.MaariyathaaApplication       [0;39m [2m:[0;39m No active profile set, falling back to 1 default profile: "default"&lt;br&gt;
[2m2025-08-25T18:52:37.751+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36m.e.DevToolsPropertyDefaultsPostProcessor[0;39m [2m:[0;39m Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable&lt;br&gt;
[2m2025-08-25T18:52:37.751+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36m.e.DevToolsPropertyDefaultsPostProcessor[0;39m [2m:[0;39m For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'&lt;br&gt;
[2m2025-08-25T18:52:38.737+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36m.s.d.r.c.RepositoryConfigurationDelegate[0;39m [2m:[0;39m Bootstrapping Spring Data JPA repositories in DEFAULT mode.&lt;br&gt;
[2m2025-08-25T18:52:38.797+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36m.s.d.r.c.RepositoryConfigurationDelegate[0;39m [2m:[0;39m Finished Spring Data repository scanning in 48 ms. Found 4 JPA repository interfaces.&lt;br&gt;
[2m2025-08-25T18:52:39.327+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat initialized with port 8080 (http)&lt;br&gt;
[2m2025-08-25T18:52:39.342+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.apache.catalina.core.StandardService  [0;39m [2m:[0;39m Starting service [Tomcat]&lt;br&gt;
[2m2025-08-25T18:52:39.342+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.apache.catalina.core.StandardEngine   [0;39m [2m:[0;39m Starting Servlet engine: [Apache Tomcat/10.1.44]&lt;br&gt;
[2m2025-08-25T18:52:39.382+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.a.c.c.C.[Tomcat].[localhost].[/]      [0;39m [2m:[0;39m Initializing Spring embedded WebApplicationContext&lt;br&gt;
[2m2025-08-25T18:52:39.383+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mw.s.c.ServletWebServerApplicationContext[0;39m [2m:[0;39m Root WebApplicationContext: initialization completed in 1631 ms&lt;br&gt;
[2m2025-08-25T18:52:39.509+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.hibernate.jpa.internal.util.LogHelper [0;39m [2m:[0;39m HHH000204: Processing PersistenceUnitInfo [name: default]&lt;br&gt;
[2m2025-08-25T18:52:39.567+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36morg.hibernate.Version                   [0;39m [2m:[0;39m HHH000412: Hibernate ORM core version 6.6.26.Final&lt;br&gt;
[2m2025-08-25T18:52:39.603+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.h.c.internal.RegionFactoryInitiator   [0;39m [2m:[0;39m HHH000026: Second-level cache disabled&lt;br&gt;
[2m2025-08-25T18:52:39.829+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.s.o.j.p.SpringPersistenceUnitInfo     [0;39m [2m:[0;39m No LoadTimeWeaver setup: ignoring JPA class transformer&lt;br&gt;
[2m2025-08-25T18:52:39.862+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mcom.zaxxer.hikari.HikariDataSource      [0;39m [2m:[0;39m HikariPool-1 - Starting...&lt;br&gt;
[2m2025-08-25T18:52:40.138+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mcom.zaxxer.hikari.pool.HikariPool       [0;39m [2m:[0;39m HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1c42865c&lt;br&gt;
[2m2025-08-25T18:52:40.139+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mcom.zaxxer.hikari.HikariDataSource      [0;39m [2m:[0;39m HikariPool-1 - Start completed.&lt;br&gt;
[2m2025-08-25T18:52:40.175+05:30[0;39m [33m WARN[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36morg.hibernate.orm.deprecation           [0;39m [2m:[0;39m HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)&lt;br&gt;
[2m2025-08-25T18:52:40.192+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36morg.hibernate.orm.connections.pooling   [0;39m [2m:[0;39m HHH10001005: Database info:&lt;br&gt;
    Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']&lt;br&gt;
    Database driver: undefined/unknown&lt;br&gt;
    Database version: 14.18&lt;br&gt;
    Autocommit mode: undefined/unknown&lt;br&gt;
    Isolation level: undefined/unknown&lt;br&gt;
    Minimum pool size: undefined/unknown&lt;br&gt;
    Maximum pool size: undefined/unknown&lt;br&gt;
[2m2025-08-25T18:52:40.946+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.h.e.t.j.p.i.JtaPlatformInitiator      [0;39m [2m:[0;39m HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)&lt;br&gt;
[2m2025-08-25T18:52:41.177+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mj.LocalContainerEntityManagerFactoryBean[0;39m [2m:[0;39m Initialized JPA EntityManagerFactory for persistence unit 'default'&lt;br&gt;
[2m2025-08-25T18:52:41.417+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.s.d.j.r.query.QueryEnhancerFactory    [0;39m [2m:[0;39m Hibernate is in classpath; If applicable, HQL parser will be used.&lt;br&gt;
[2m2025-08-25T18:52:41.944+05:30[0;39m [33m WARN[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mJpaBaseConfiguration$JpaWebConfiguration[0;39m [2m:[0;39m spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning&lt;br&gt;
[2m2025-08-25T18:52:42.288+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.s.b.d.a.OptionalLiveReloadServer      [0;39m [2m:[0;39m LiveReload server is running on port 35729&lt;br&gt;
[2m2025-08-25T18:52:42.328+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port 8080 (http) with context path '/'&lt;br&gt;
[2m2025-08-25T18:52:42.339+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [  restartedMain] [0;39m[36mc.m.temple.MaariyathaaApplication       [0;39m [2m:[0;39m Started MaariyathaaApplication in 5.131 seconds (process running for 5.803)&lt;br&gt;
[2m2025-08-25T18:52:54.225+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [nio-8080-exec-1] [0;39m[36mo.a.c.c.C.[Tomcat].[localhost].[/]      [0;39m [2m:[0;39m Initializing Spring DispatcherServlet 'dispatcherServlet'&lt;br&gt;
[2m2025-08-25T18:52:54.226+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [nio-8080-exec-1] [0;39m[36mo.s.web.servlet.DispatcherServlet       [0;39m [2m:[0;39m Initializing Servlet 'dispatcherServlet'&lt;br&gt;
[2m2025-08-25T18:52:54.229+05:30[0;39m [32m INFO[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [nio-8080-exec-1] [0;39m[36mo.s.web.servlet.DispatcherServlet       [0;39m [2m:[0;39m Completed initialization in 3 ms&lt;br&gt;
Hibernate: &lt;br&gt;
    select&lt;br&gt;
        v1_0.id,&lt;br&gt;
        v1_0.name,&lt;br&gt;
        v1_0.phone &lt;br&gt;
    from&lt;br&gt;
        volunteers v1_0 &lt;br&gt;
    order by&lt;br&gt;
        v1_0.name &lt;br&gt;
    offset&lt;br&gt;
        ? rows &lt;br&gt;
    fetch&lt;br&gt;
        first ? rows only&lt;br&gt;
Hibernate: &lt;br&gt;
    select&lt;br&gt;
        f1_0.id,&lt;br&gt;
        f1_0.address,&lt;br&gt;
        f1_0.house_no,&lt;br&gt;
        f1_0.name,&lt;br&gt;
        f1_0.phone,&lt;br&gt;
        f1_0.street_name &lt;br&gt;
    from&lt;br&gt;
        families f1_0 &lt;br&gt;
    order by&lt;br&gt;
        f1_0.name &lt;br&gt;
    offset&lt;br&gt;
        ? rows &lt;br&gt;
    fetch&lt;br&gt;
        first ? rows only&lt;br&gt;
[2m2025-08-25T18:52:54.512+05:30[0;39m [33m WARN[0;39m [35m27963[0;39m [2m--- [Maariyathaa] [nio-8080-exec-1] [0;39m[36mration$PageModule$WarningLoggingModifier[0;39m [2m:[0;39m Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure!&lt;br&gt;
    For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO))&lt;br&gt;
    or Spring HATEOAS and Spring Data's PagedResourcesAssembler as documented in &lt;a href="https://docs.spring.io/spring-data/commons/reference/repositories/core-extensions.html#core.web.pageables" rel="noopener noreferrer"&gt;https://docs.spring.io/spring-data/commons/reference/repositories/core-extensions.html#core.web.pageables&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hibernate: &lt;br&gt;
    select&lt;br&gt;
        f1_0.id,&lt;br&gt;
        f1_0.address,&lt;br&gt;
        f1_0.house_no,&lt;br&gt;
        f1_0.name,&lt;br&gt;
        f1_0.phone,&lt;br&gt;
        f1_0.street_name &lt;br&gt;
    from&lt;br&gt;
        families f1_0 &lt;br&gt;
    order by&lt;br&gt;
        f1_0.name &lt;br&gt;
    offset&lt;br&gt;
        ? rows &lt;br&gt;
    fetch&lt;br&gt;
        first ? rows only&lt;br&gt;
Hibernate: &lt;br&gt;
    select&lt;br&gt;
        v1_0.id,&lt;br&gt;
        v1_0.name,&lt;br&gt;
        v1_0.phone &lt;br&gt;
    from&lt;br&gt;
        volunteers v1_0 &lt;br&gt;
    order by&lt;br&gt;
        v1_0.name &lt;br&gt;
    offset&lt;br&gt;
        ? rows &lt;br&gt;
    fetch&lt;br&gt;
        first ? rows only&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1mgcksln0vv23yg0tyk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1mgcksln0vv23yg0tyk1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>check Deplicate value - II</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Thu, 21 Aug 2025 12:25:29 +0000</pubDate>
      <link>https://dev.to/premprema/check-deplicate-value-ii-4kok</link>
      <guid>https://dev.to/premprema/check-deplicate-value-ii-4kok</guid>
      <description>&lt;p&gt;Example 1:&lt;/p&gt;

&lt;p&gt;Input: nums = [1,2,3,1], k = 3&lt;br&gt;
Output: true&lt;/p&gt;

&lt;p&gt;k வின் மதிப்பை வைத்து nums வரிசையை(Array) ஒவ்வொரு பகுதிவரிசையாக (Subarray) பிரிக்க வேண்டும்.&lt;br&gt;
பிறகு அந்த பகுதி வரிசையில் மீண்டும் வரும் (duplicate) மதிப்பு இருக்கிறதா என்று பார்க்க வேண்டும்.&lt;/p&gt;

&lt;p&gt;அங்கே duplicate மதிப்பு இருந்தால் உடனே true return செய்ய வேண்டும்.&lt;/p&gt;

&lt;p&gt;இல்லையென்றால் அடுத்த பகுதி வரிசையை பிரித்து மீண்டும் சரிபார்க்க வேண்டும்.&lt;br&gt;
எந்த பகுதியிலும் duplicate இல்லை என்றால் கடைசியில் false return செய்ய வேண்டும்.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;எப்படி Arrayவை பகுதி வரிசையாக (sub Array) பிரிப்பது?&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;முதலில் தொடங்குவதால், index 0-இல் தொடங்க வேண்டும்.&lt;br&gt;
அதில் இருந்து k = 3, எனவே 0 + 3 = 3.&lt;/p&gt;

&lt;p&gt;👉 முடிவு index = 3&lt;br&gt;
இதனால் கிடைப்பது:&lt;/p&gt;

&lt;p&gt;தொடக்கம் index = 0&lt;br&gt;
முடிவு index = 3&lt;br&gt;
👉 0 முதல் 3 வரை ஒரு பகுதி கிடைக்கும்.&lt;/p&gt;

&lt;p&gt;இந்த Array-வில் 3-வது index வரைதான் இருப்பதால், இதில் ஒரு subarray மட்டும் பிரிக்க முடியும்.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nums  : [ 1,   2,   3,   1 ]
Index : (0)   (1)  (2)  (3)
          └───────────────┘
          start=0      end=3
          Window 1 → {1, 2, 3, 1}

Subarray: {1, 2, 3, 1}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2 – நகல் (டூப்ளிகேட்) மதிப்பு இருக்கிறதா என்று எப்படி பார்க்க வேண்டும்?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;முதலில் 0வது இடத்தில் (index) உள்ள எண்ணை எடுத்துக்கொள்ள வேண்டும்.&lt;br&gt;
அதை அதற்கு அடுத்தடுத்து உள்ள மற்ற எண்களுடன் ஒப்பிட்டு பார்க்க வேண்டும்.&lt;/p&gt;

&lt;p&gt;Step 1 – ஆரம்ப மதிப்பு எடு&lt;/p&gt;

&lt;p&gt;Index 0 → Value = 1&lt;/p&gt;

&lt;p&gt;1 == 2 ❌&lt;/p&gt;

&lt;p&gt;1 == 3 ❌&lt;/p&gt;

&lt;p&gt;1 == 1 ✅ → சமம் duplicate கிடைத்துவிட்டது.&lt;br&gt;
"ஒவ்வொரு எண்களாகச் சரிபார்த்து முடித்தோம். இப்போது அந்த எண்களுக்கு தொடர்பான index மதிப்பையும் பொருத்திப் பார்க்கலாம்."&lt;/p&gt;

&lt;p&gt;1 == 2 → nums[0] == nums[1] ❌&lt;br&gt;&lt;br&gt;
1 == 3 → nums[0] == nums[2] ❌&lt;br&gt;&lt;br&gt;
1 == 1 → nums[0] == nums[3] ✅&lt;br&gt;&lt;br&gt;
Index 0 மற்றும் 3 ல் உள்ள மதிப்பு ஒன்று.&lt;/p&gt;

&lt;p&gt;அதனால் Duplicate கண்டுபிடிக்கப்பட்டது → true return செய்ய வேண்டும் ✅&lt;/p&gt;

&lt;p&gt;=======================================&lt;br&gt;
&lt;em&gt;அடுத்து ஒரு உதாரணம் பார்க்கலாமா?&lt;/em&gt;&lt;br&gt;
Example 2:&lt;/p&gt;

&lt;p&gt;Input: nums = [1,0,1,1], k = 1&lt;br&gt;
Output: true&lt;/p&gt;

&lt;p&gt;இப்போது என்ன செய்ய வேண்டும்?&lt;/p&gt;

&lt;p&gt;1-  பகுதி வரிசையாக (Subarray) பிரிக்க வேண்டும்.&lt;br&gt;
   2- மீண்டும் வரும் (duplicate) மதிப்பு இருக்கிறதா என்று பார்க்க வேண்டும்.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;பகுதி  வரிசையாக பிரிக்கலாமா ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;தொடக்கம்  index = 0 ,    இதை k ன் மதிப்போடு  கூட்ட வேண்டும 0+1 = 1&lt;/p&gt;

&lt;p&gt;முடிவு    index = 1&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Nums :  [ 1,  0,  1,  1 ]
Index:   (0) (1) (2) (3)
          └───┘
    start=0  end=1
Window = {1,0}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;*&lt;em&gt;நகல் (டூப்ளிகேட்) மதிப்பு இருக்கிறதா என பார்க்கலாமா?&lt;br&gt;
*&lt;/em&gt;&lt;/em&gt;&lt;br&gt;
Step 1 – ஆரம்ப மதிப்பு எடு&lt;br&gt;
Index 0 → Value = 1&lt;/p&gt;

&lt;p&gt;1 == 0  இல்லை&lt;/p&gt;

&lt;p&gt;இந்தப் பகுதியில் duplicate இல்லை அதனால் அடுத்த பகுதியை பிரிக்கலாம். &lt;/p&gt;

&lt;p&gt;subArray - 2&lt;/p&gt;

&lt;p&gt;இப்பொழுது தொடக்க index இதற்கு முன்னாடி உள்ள இன்டெக்ஸ்   விட 1 ஒன்று அதிகமாக இருக்க வேண்டும்&lt;br&gt;
தொடக்கம் index = 0&lt;br&gt;&lt;br&gt;
தொடக்கம் index = தொடக்கம் index + 1&lt;br&gt;&lt;br&gt;
                 = 0 + 1 &lt;br&gt;
                 = 1 &lt;/p&gt;

&lt;p&gt;முடிவு இன்டெக்ஸ்  கண்டுபிடிக்க தெரியுமா ?&lt;/p&gt;
&lt;h2&gt;
  
  
     தெரியுமே, தொடக்க index லிருந்து kயின் மதிப்பை கூட்டினால் முடிவு இண்டெக்ஸ் கிடைக்கும்
&lt;/h2&gt;

&lt;p&gt;முடிவு index = தொடக்கம் index + k&lt;br&gt;&lt;br&gt;
                    = 1 + 1&lt;br&gt;&lt;br&gt;
                        = 2&lt;br&gt;&lt;br&gt;
ஆக, தொடக்கம் index = 1&lt;br&gt;&lt;br&gt;
      முடிவு index   = 2 &lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nums : [ 1, 0, 1, 1 ]

Index: (0) (1) (2) (3)

            └──┘

  start=1 end=2
Window = {0,1}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;எண்கள் சமமாக இருக்கிறதா என்ன பார்க்கலாம் &lt;/p&gt;

&lt;p&gt;0==1  &lt;/p&gt;

&lt;p&gt;//  இங்கே சமமாக இல்லை அதனால் அடுத்த  பகுதியை உருவாக்கலாம்&lt;/p&gt;

&lt;p&gt;subArray - 3&lt;/p&gt;

&lt;p&gt;இப்போ தொடக்க இன்டெக்ஸ் கண்டுபிடிக்க தெரியுமா? &lt;br&gt;
 தெரியுமா,  முன்னாடி உள்ள தொடக்க இன்டெக்ஸ் ஒன்று  கூடுதல் செய்ய வேண்டும்&lt;br&gt;
 அப்படி செய்தால், &lt;br&gt;
                 தொடக்கம் index = 2&lt;br&gt;
                 முடிவு  index  = 3&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nums :[ 1,  0,  1,  1 ]
Index: (0) (1) (2) (3)
                └──┘
  start=2 end=3
Window = {1,1}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;1==1 //  இப்போது இரண்டு மதிப்புகளும் சமமாக   இருப்பதால் true  திருப்பி அனுப்பலாம்&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Test_Practice</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Thu, 10 Jul 2025 12:26:02 +0000</pubDate>
      <link>https://dev.to/premprema/testpractice-49i2</link>
      <guid>https://dev.to/premprema/testpractice-49i2</guid>
      <description>&lt;p&gt;This forces black background and white text&lt;/p&gt;

</description>
      <category>css</category>
      <category>theme</category>
    </item>
    <item>
      <title>LeetCode-ProblemSolving</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Thu, 10 Jul 2025 11:48:41 +0000</pubDate>
      <link>https://dev.to/premprema/leetcode-problemsolving-43o9</link>
      <guid>https://dev.to/premprema/leetcode-problemsolving-43o9</guid>
      <description>&lt;p&gt;&lt;strong&gt;1353. Maximum Number of Events That Can Be Attended&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are given an array of events where events[i] = [startDayi, endDayi]. Every event i starts at startDayi and ends at endDayi.&lt;/p&gt;

&lt;p&gt;You can attend an event i at any day d where startDayi &amp;lt;= d &amp;lt;= endDayi. You can only attend one event at any time d.&lt;/p&gt;

&lt;p&gt;Return the maximum number of events you can attend.&lt;/p&gt;

&lt;p&gt;Example 1:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fni47hr9ktnk9djdq2sg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fni47hr9ktnk9djdq2sg4.png" alt=" " width="450" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Input: events = [[1,2],[2,3],[3,4]]&lt;br&gt;
Output: 3&lt;br&gt;
Explanation: You can attend all the three events.&lt;br&gt;
One way to attend them all is as shown.&lt;br&gt;
Attend the first event on day 1.&lt;br&gt;
Attend the second event on day 2.&lt;br&gt;
Attend the third event on day 3.&lt;br&gt;
Example 2:&lt;/p&gt;

&lt;p&gt;Input: events= [[1,2],[2,3],[3,4],[1,2]]&lt;br&gt;
Output: 4&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Java Introduction</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Mon, 14 Apr 2025 18:13:45 +0000</pubDate>
      <link>https://dev.to/premprema/java-introduction-1kmk</link>
      <guid>https://dev.to/premprema/java-introduction-1kmk</guid>
      <description>&lt;p&gt;முத்து:  நிரலாக்க மொழி பற்றி பேசலாமா? 😊&lt;/p&gt;

&lt;p&gt;தமிழ் வளவன்:  நிரலாக்க மொழி  என்றால் என்ன?&lt;/p&gt;

&lt;p&gt;முத்து:    நிரல் என்றால் நிகழ்ச்சி  இதை ஆங்கிலத்தில் புரோகிராம் ( program )  என்று பெயர்,  மொழி என்றால் உங்களுக்கு தெரிய வாய்ப்பு இருக்கிறது,  நீங்கள் நினைத்தது போல் அது ஆங்கிலத்தில் லாங்குவேஜ்( language)  என பெயர் .&lt;/p&gt;

&lt;p&gt;நிரல் +  மொழி =  நிரல் மொழி&lt;br&gt;
   program + language = program language&lt;/p&gt;

&lt;p&gt;நிரலாக்கம் +  மொழி =  நிரலாக்க மொழி.&lt;br&gt;
   programming  + language = programming language.&lt;/p&gt;

&lt;p&gt;முத்து:  நிரலாக்கம் (programming ) என்றால் என்ன ?&lt;/p&gt;

&lt;p&gt;தமிழ் வளவன்:    programming என்றால் set of instruction,  &lt;/p&gt;

&lt;p&gt;முத்து: நிரலாக்கம் என்றால் கட்டளைகளின் தொகுப்பு(set of instruction ),  மிக அருமையான பதில்,  சரி ,,,,,  யார் , யாருக்கு இந்த கட்டளைகளை அனுப்புகிறார்கள் ?.&lt;/p&gt;

&lt;p&gt;தமிழ் வளவன்:  programming instruction என்றாலே , மிஷின் கிட்ட கம்யூனிகேட் பண்றதுக்காக.,,,  &lt;/p&gt;

&lt;p&gt;முத்து:  அருமை,   கட்டளைகளின் தொகுப்பு (set of instruction)  என்றால் ஒரு மனிதன் கணிப்பொறியுடன் தொடர்பு கொள்வது அல்லது பேசுவது.&lt;/p&gt;

</description>
      <category>java</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Hello World!</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Sat, 12 Apr 2025 20:14:47 +0000</pubDate>
      <link>https://dev.to/premprema/hello-world-4k45</link>
      <guid>https://dev.to/premprema/hello-world-4k45</guid>
      <description>&lt;p&gt;Title: Hello, World! in 12 Programming Languages&lt;br&gt;
Introduction:&lt;br&gt;
In this post, I’ve shared the "Hello, World!" example in 12 different programming languages. Whether you're a beginner or someone looking to explore different languages, this can be a handy reference to get started with basic syntax!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Java
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Python
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print("Hello, world!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;C
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main() {
    printf("Hello, world!\n");
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;C++
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

int main() {
    cout &amp;lt;&amp;lt; "Hello, world!" &amp;lt;&amp;lt; endl;
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;JavaScript
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log("Hello, world!");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;C#
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using System;

class Program {
    static void Main() {
        Console.WriteLine("Hello, world!");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Ruby
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;puts "Hello, world!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Go
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main
import "fmt"

func main() {
    fmt.Println("Hello, world!")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Swift
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print("Hello, world!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;PHP
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
echo "Hello, world!";
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;HTML
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;body&amp;gt;
    Hello, world!
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Kotlin
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fun main() {
    println("Hello, world!")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conclusion:&lt;br&gt;
These are just the simplest examples in each of these languages. If you’re just starting with a new language, this basic "Hello, World!" program is often your first step toward learning its syntax and structure.&lt;/p&gt;

&lt;p&gt;You can also add tags like #programming, #code, #beginner, #java, #python, etc. to reach a wider audience.&lt;/p&gt;

&lt;p&gt;😄 &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Python:print() methods</title>
      <dc:creator>prem Prema</dc:creator>
      <pubDate>Sat, 12 Apr 2025 19:24:46 +0000</pubDate>
      <link>https://dev.to/premprema/pythonprint-methods-3ao7</link>
      <guid>https://dev.to/premprema/pythonprint-methods-3ao7</guid>
      <description>&lt;p&gt;Hi, All, &lt;br&gt;
Today i learnt about python print statement. &lt;br&gt;
Some of the functionalities are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;printing a number wont always requires quotation mark.
    python
&lt;code&gt;print(1)&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print(1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
      <category>programming</category>
      <category>parottasalna</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
