Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/callicoder/spring-security-react-ant-design-polls-app
Full Stack Polls App built using Spring Boot, Spring Security, JWT, React, and Ant Design
https://github.com/callicoder/spring-security-react-ant-design-polls-app
ant-design antd authentication authorization database jwt login mysql react react-router react-router-v4 reactjs spring-boot spring-mvc spring-security spring-security-jwt spring-security-react spring-security-tutorial
Last synced: about 1 month ago
JSON representation
Full Stack Polls App built using Spring Boot, Spring Security, JWT, React, and Ant Design
- Host: GitHub
- URL: https://github.com/callicoder/spring-security-react-ant-design-polls-app
- Owner: callicoder
- Created: 2018-02-28T05:01:35.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-10T06:23:57.000Z (11 months ago)
- Last Synced: 2024-09-29T08:21:47.081Z (about 1 month ago)
- Topics: ant-design, antd, authentication, authorization, database, jwt, login, mysql, react, react-router, react-router-v4, reactjs, spring-boot, spring-mvc, spring-security, spring-security-jwt, spring-security-react, spring-security-tutorial
- Language: Java
- Homepage: https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-1/
- Size: 2.93 MB
- Stars: 1,767
- Watchers: 65
- Forks: 1,066
- Open Issues: 47
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
## Building a Full Stack Polls app similar to twitter polls with Spring Boot, Spring Security, JWT, React and Ant Design
![App Screenshot](screenshot.png)
### Tutorials
I've written a complete tutorial series for this application on The CalliCoder Blog -
+ [Part 1: Bootstrapping the Project and creating the basic domain models and repositories](https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-1/)
+ [Part 2: Configuring Spring Security along with JWT authentication and Building Rest APIs for Login and SignUp](https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-2/)
+ [Part 3: Building Rest APIs for creating Polls, voting for a choice in a Poll, retrieving user profile etc](https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-3/)
+ [Part 4: Building the front-end using React and Ant Design](https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-4/)
## Steps to Setup the Spring Boot Back end app (polling-app-server)
1. **Clone the application**
```bash
git clone https://github.com/callicoder/spring-security-react-ant-design-polls-app.git
cd polling-app-server
```2. **Create MySQL database**
```bash
create database polling_app
```3. **Change MySQL username and password as per your MySQL installation**
+ open `src/main/resources/application.properties` file.
+ change `spring.datasource.username` and `spring.datasource.password` properties as per your mysql installation
4. **Run the app**
You can run the spring boot app by typing the following command -
```bash
mvn spring-boot:run
```The server will start on port 8080.
You can also package the application in the form of a `jar` file and then run it like so -
```bash
mvn package
java -jar target/polls-0.0.1-SNAPSHOT.jar
```
5. **Default Roles**
The spring boot app uses role based authorization powered by spring security. To add the default roles in the database, I have added the following sql queries in `src/main/resources/data.sql` file. Spring boot will automatically execute this script on startup -```sql
INSERT IGNORE INTO roles(name) VALUES('ROLE_USER');
INSERT IGNORE INTO roles(name) VALUES('ROLE_ADMIN');
```Any new user who signs up to the app is assigned the `ROLE_USER` by default.
## Steps to Setup the React Front end app (polling-app-client)
First go to the `polling-app-client` folder -
```bash
cd polling-app-client
```Then type the following command to install the dependencies and start the application -
```bash
npm install && npm start
```The front-end server will start on port `3000`.