An open API service indexing awesome lists of open source software.

https://github.com/souzafcharles/java-spring-react-fullstack

β˜• Project developed based on tutorials by Fernanda Kipper: Building a Full-Stack Application with Java Spring and React
https://github.com/souzafcharles/java-spring-react-fullstack

intellij-idea java javaspring javaspringboot lombok maven postgresql postman react reactjs spring spring-boot springdata-jpa springweb typescript

Last synced: about 1 month ago
JSON representation

β˜• Project developed based on tutorials by Fernanda Kipper: Building a Full-Stack Application with Java Spring and React

Awesome Lists containing this project

README

        

![GitHub language count](https://img.shields.io/github/languages/count/souzafcharles/java-spring-react-fullstack)
![GitHub top language](https://img.shields.io/github/languages/top/souzafcharles/java-spring-react-fullstack)
![GitHub](https://img.shields.io/github/license/souzafcharles/java-spring-react-fullstack)
![GitHub last commit](https://img.shields.io/github/last-commit/souzafcharles/java-spring-react-fullstack)

# πŸ’» Building a Full-Stack Application with Java Spring and React
:triangular_flag_on_post: Project developed based on tutorials by **Fernanda Kipper** - [kipperDev](https://www.youtube.com/@kipperdev).
***
## Instructions:


This guide provides a structured approach to developing a full-stack application using Java Spring, React, and PostgreSQL. The process is divided into two key phases: backend development and frontend development.

### Part 1 - [Backend Development with Java Spring and PostgreSQL](https://github.com/souzafcharles/Java-Spring-React-Fullstack/tree/main/Backend/digitalMenu):


This section details the construction of the application's backend using the Java Spring framework. It begins with the creation of a Spring Boot project, configuring both H2 for testing and PostgreSQL for development, and implementing database migrations using Liquibase. The guide then covers the creation of data models and RESTful controllers to manage CRUD operations within the application. The utilisation of essential libraries, such as Spring Data JPA, will be explored to streamline data access and manipulation. Environment-specific configurations and the use of environment variables are also covered.

## Backend Project Stack:
| Technology | Version | Description |
|-------------------|-----------|---------------------------------------------|
| πŸ“ IntelliJ IDEA | `2024.3` | Integrated Development Environment (IDE) |
| β˜• Java | `21` | Backend programming language |
| 🌱 Spring Boot | `3.4.2` | Framework for creating Spring applications |
| 🐦 Maven | `3.9.9` | Build automation and dependency management |
| 🐘 PostgreSQL | `17` | Relational database management system |
| πŸ—ƒοΈ H2 Database | `2.3.232` | In-memory relational database for testing |
| πŸ›’οΈ Liquibase | `4.22.0` | Database migration management tool |
| πŸ‘©β€πŸš€ Postman | `11.19` | API testing and development tool |

***

## Backend Dependencies:
| Dependency | Category | Description |
|-------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| πŸ› οΈ Spring Boot DevTools | Developer Tools | Provides fast application restarts, LiveReload, and configurations for enhanced development experience |
| 🌐 Spring Web | Web | Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container |
| πŸ’Ύ Spring Data JPA | SQL | Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate |
| πŸ—ƒοΈ H2 Database Engine | SQL | Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint |
| 🐘 PostgreSQL Driver | SQL | A JDBC and R2DBC driver that allows Java programs to connect to a PostgreSQL database using standard, database-independent Java code |
| πŸ›’οΈ Liquibase Core | SQL | Manages database schema migrations, providing version control and seamless updates to the database schema |
| πŸ—οΈ dotenv-java | Configuration | Loads environment variables from a `.env` file into the application, aiding in secure configuration management |

***

### Part 2 - [Frontend Development with React and TypeScript](https://github.com/souzafcharles/Java-Spring-React-Fullstack/tree/main/Frontend/digitalMenu):


This section focuses on developing the application's frontend using the React library and TypeScript. The process includes creating React components and leveraging React Hooks to implement the application's functionalities. The guide also explores the use of TypeScript to enhance code maintainability. Furthermore, it details the connection of the frontend to the backend (developed in Part 1) using Axios for HTTP requests and React Query for fetching, caching, synchronising, and updating server state within the application.

## Frontend Project Stack:
| Technology | Version | Description |
|-----------------------|------------|-------------------------------------------------|
| βœ’οΈVisual Studio Code | `1.96` | Code editor for modern web and cloud projects |
| ⚑ Vite | `6.0.11` | Next Generation Frontend Tooling |
| βš›οΈ React | `18.3.1` | Framework for building user interfaces |
| πŸ“œ TypeScript | `5.6.2` | Strongly typed programming language |
| πŸ“¦ Node.js | `18.x` | JavaScript runtime environment |

***

## Frontend Dependencies:
| Dependency | Category | Description |
|--------------------------|------------------|----------------------------------------------------------|
| βš›οΈ React | Core | Library for building user interfaces |
| βš›οΈ React DOM | Core | Renders React components in the browser |
| πŸ“œ TypeScript | Core | Enables type-checking and development with TypeScript |
| βš™οΈ Vite Plugin React | Build Tools | Plugin to support React in Vite projects |
| βœ… ESLint | Development | Linter tool to ensure code quality |
| 🎯 TypeScript ESLint | Development | Integrates TypeScript with ESLint |
| πŸ” @types/react | Type Definitions | Provides TypeScript definitions for React |
| πŸ” @types/react-dom | Type Definitions | Provides TypeScript definitions for React DOM |
| 🌍 Globals | Development | Provides global variables and functions for ESLint rules |
| βœ’οΈ React Hooks ESLint | Development | Ensures proper usage of React Hooks |
| πŸ”§ React Refresh ESLint | Development | Provides linting for Vite’s fast-refresh mechanism |
| πŸ”„ @tanstack/react-query | API Management | Data fetching and caching for React applications |
| πŸ”— Axios | API Management | Promise-based HTTP client for making API requests |

***

▢️ **Tutorial Video kipperDev**:
- [Part 1](https://www.youtube.com/watch?v=lUVureR5GqI&ab_channel=FernandaKipper%7CDev): Backend Development with Java Spring and PostgreSQL;
- [Part 2](https://www.youtube.com/watch?v=WHruc3_2z68&ab_channel=FernandaKipper%7CDev): Frontend Development with React and TypeScript.

***
## Home Screen with Displayed Items:
![Home Screen Updated](https://github.com/souzafcharles/Java-Spring-React-Fullstack/blob/main/Frontend/digitalMenu/public/home-inserted.png)