https://github.com/devanshukushwah/forms-app-backend
About FormsApp is a web-based application that allows users to create, submit, and track forms.
https://github.com/devanshukushwah/forms-app-backend
java kafka keycloak postgresql spring-boot
Last synced: 3 months ago
JSON representation
About FormsApp is a web-based application that allows users to create, submit, and track forms.
- Host: GitHub
- URL: https://github.com/devanshukushwah/forms-app-backend
- Owner: devanshukushwah
- License: mit
- Created: 2025-01-26T13:48:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-16T23:56:56.000Z (over 1 year ago)
- Last Synced: 2025-03-17T00:28:50.147Z (over 1 year ago)
- Topics: java, kafka, keycloak, postgresql, spring-boot
- Language: Java
- Homepage: https://forms.makeitcoder.com/admin
- Size: 241 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Forms Backend Application
FormsApp is a web-based application that allows users to create, submit, and track forms. It provides functionalities such as form creation, field definition, form submission, and form response tracking, all using RESTful APIs. The application supports user authentication, and forms can be dynamically generated and managed.
**App URL**: https://forms.makeitcoder.com/admin
## Flow

## Application Screenshot

## Application Repositories
- [Form App Angular UI](https://github.com/devanshukushwah/forms-app-ui)
- [Form App Backend Application](https://github.com/devanshukushwah/forms-app-backend)
- [Form App Kafka Consumer](https://github.com/devanshukushwah/forms-app-consumer)
## Features
- Spring MVC & DTO Design pattern.
- Kafka Producer.
- Redis Cache.
- Cross-origin resource sharing (CORS).
- Swagger UI (API Documentation).
- Spring Aspect Oriented Programming (AOP).
- Spring Security (JWT).
- Spring JPA (Hibernate ORM).
- Database Transaction handling.
- Actuators (Production ready endpoints).
- Log4j2 logging (File & Console based).
- Junit & Mockito (Unit Testing & Mocking Bean).
- Create, Read, Update & Delete Operation (CRUD).
- Handle Multithreading.
- Global Exception Handling.
- Download CSV File (Form Responses).
- Cross Origin Configuration.
- Environment based beans handle (local, dev, qa & prod).
- Flag based beans handle (For disable kafka).
- Custom Exception.
- Custom Annotation.
- Custom Date formatting.
- Custom Id generation for Form.
## Basic Details
- **Form Management**: Create and update forms with customizable fields.
- **Form Submission**: Allows users to submit forms.
- **Form Responses**: Fetch responses for a specific form.
- **Authentication**: Secured endpoints using JWT (JSON Web Token) authentication.
- **Unique Form ID Generation**: Automatically generates unique form IDs using date-based patterns.
- **Form Field Customization**: Ability to create different types of fields (text, radio, checkbox, etc.) and configure attributes.
## Technologies Used
- **Backend**: Java 21, Spring Boot 3
- **Database**: Relational Database (Hibernate + JPA)
- **Authentication**: OAuth2, JWT (JSON Web Token)
- **API Documentation**: Swagger (or OpenAPI)
- **Testing**: JUnit, Mockito
- **Logging**: Log4J2
## Changelogs
### 2.2.0
- Redis cache
### 2.1.0
- Stable version
### 2.0.0
- Updated to `JDK 21` and `Springboot 3.4.2`
### 1.0
- Built using `JDK 8` and `Springboot 2.7.18`
## Installation
1. **Clone the repository**
```bash
git clone https://github.com/devanshukushwah/forms-app-backend.git
cd forms-app-backend
```
2. You can run the application locally and application will be available at http://localhost:9080/.
3. Ensure that your database is configured correctly in the application.properties file. You can modify it to match your database settings.
API Documentation
-----------------
You can access the Swagger-based API documentation after starting the application:
* **Base URL**: http://localhost:9080/
* **Swagger UI**: http://localhost:9080/swagger-ui.html
Contributing
------------
Contributions are welcome! If you find a bug or want to add a new feature, feel free to fork the repository and submit a pull request.
License
-------
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
----------------
* [Spring Boot](https://spring.io/projects/spring-boot) for building the application.
* [JWT](https://jwt.io/) for user authentication.
* [Hibernate](https://hibernate.org/) for ORM (Object-Relational Mapping).