Modular-Java-Jersey-Vue
Modular-Java-Jersey-Vue copied to clipboard
Moduler Java, Embedded Tomcat, Jersey, Vue, Vue3, Composition API, PrimeVue, Restfull WebApp
Modular Java, Embedded Tomcat, Fat Jar, Vue JS
Application to demonstrate various parts of a service oriented RESTfull application.
Demo (Heroku Hosted)
Allow about 2-3 mins for the instance to start
Technology Stack
| Component | Technology |
|---|---|
| Backend Lang | Java 11 (with modules) |
| Restfull Framework | Jersey |
| Container | Tomcat 9 (Embeded Mode) |
| Server Build Tools | maven 3.5.4 (Creates a Executable Jar with embeded tomcat) |
| Security | Token Based (JWT ) |
| REST Spec | Open API Standard |
| In Memory DB | H2 |
| Persistence | JPA (Using Hibernate) |
| Frontend | Vue JS |
| Client Build Tools | vue-cli, Webpack, yarn |
Prerequisites
Ensure you have this installed before proceeding further
- Java 11+
- Maven 3.5.4+
- yarn 1.10.1
- node 10.12.0
- vue-cli 3.0.5
Folder Structure
PROJECT_FOLDER
│ README.md
│ pom.xml # Parent maven project (contains other sub projects)
│
└──[database] # Java-Project/Java-Module (contains H2 database related services )
│ │ pom.xml
│ └──[src]
│ └──[main]
│ └──[java] # java source files
│ └──[resources]
│ schema.sql # Contains sql script to generate database tables and views in H2
│ data.sql # Contains sql script to fill the tables with sample data
│
└──[web-api] # Java-Project/Java-Module ( The Main WebApp contating RESTfull APIs )
│ │ pom.xml
│ └──[src]
│ └──[main]
│ └──[java] # java source files
│ └──[resources]
│ └──[webapp] # files/folders under webapp is accessible from web-browser
│ └──[ui] # maven build script would copy web-ui/dist into this folder, to make UI available from the browser
│ └──[api-docs] # contains swagger-ui source for API documentation and try-out
│
└──[web-ui] # A regular folder that contains VueJS based UI source code
│ │ package.json
│ │ vue.config.js
│ │ package.json
│ └──[node_modules] # files under this is downloaded by 'yarn install' command
│ └──[dist] # VueJs source is compiled, bundled and minified into this folder
│ └──[src] # contains ui source code
Build Process
- 1st Build Frontend (optional, required only if you make changes to frontend code )
- Then Build Backend (backend build script will copy UI code build above into itself)
To build frontend (optional step)
# run these commands from web-ui folder
yarn install
yarn build
To build backend
# run these commands from root folder where top-level pom.xml is present
# build the web app
mvn clean install
# Run The App
java -jar ./web-api/target/modules/web-api-1.0.0.jar
Once the App is running
| App Component | URLs |
|---|---|
| URL for the web app | http://localhost:8080 or http://localhost:8080/ui/index.html |
| URL for API Docs | http://localhost:8080/api-docs/index.html |
| BaseURL for REST APIs | http://localhost:8080/api |
Screenshots
Login
Dashboard
API Reference
Backers
Help me to host this app on AWS or Google-Cloud, for everyone to checkout the app. [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]