The only thing better than a Maven archetype is a repo you can fork with everything already setup. Skip the documentation and just fork-and-code.
Delete the sample code, replace with your own and you’re good to go.
- StarUML - A sophisticated software modeler for agile and concise modeling (UML)
- Maven - Dependency Management
- Flyway - Version control for database
- JDK 11 - Java™ Platform, Standard Edition Development Kit
- Spring Boot - Framework to ease the bootstrapping and development of new Spring Applications
- MySQL - Open-Source Relational Database Management System
- git - Free and Open-Source distributed version control system
- Docker - Developing apps today requires so much more than writing code. Multiple languages, frameworks, architectures, and discontinuous interfaces between tools for each lifecycle stage creates enormous complexity. Docker simplifies and accelerates your workflow, while giving developers the freedom to innovate with their choice of tools, application stacks, and deployment environments for each project.
- Twilio API - Contactless Delivery - Remote Contact Centers - Distance Learning - Video Support - Mass Notifications
- Swagger - Open-Source software framework backed by a large ecosystem of tools that helps developers design, build, document, and consume RESTful Web services.
- Postman - API Development Environment (Testing Docmentation)
- Logger (Console, File, Mail)
- RESTful Web Service (CRUD)
- Bootstrap - CSS
- Web - HTML, JavaScript (jQuery)
- Content Negotiation
- Material Design for Bootstrap
- Docker
- Spring Boot Admin
- Spring Security
- Spring Data Jpa
- Spring AOP
- MySQL
- H2
- Swagger
- Twilio API
- JFreeChart
- Heroku deployment
- More .... ;)
There are several ways to run a Spring Boot application on your local machine. One way is to execute the main
method in the com.selimhorri.app.pack
class from your IDE.
- Download the zip or clone the Git repository.
- Unzip the zip file (if you downloaded one)
- Open Command Prompt and Change directory (cd) to folder containing pom.xml
- Start your local MySQL database
- Import pfa_db.sql
source ./pfa_db.sql
- Build the project
./mvnw clean install
- Open Eclipse
- File -> Import -> Existing Maven Project -> Navigate to the folder where you unzipped the zip
- Select the project
- Choose the Spring Boot Application file (search for @SpringBootApplication)
- Right Click on the file and Run as Spring Boot App
- Or, Run on different env :
- On Dev :
java -jar target/project-tracking-sys.jar
java -Dspring.profiles.active=dev -jar target/project-tracking-sys.jar
- On Test :
java -Dspring.profiles.active=test -jar target/project-tracking-sys.jar
- On Test :
java -Dspring.profiles.active=prod -jar target/project-tracking-sys.jar
Alternatively you can use the Spring Boot Maven plugin like so:
mvn spring-boot:run
Spring Boot Starter Security default username is user
and a generated security password is printed in the console like Using generated security password: ?
Automated dependency updates done via Dependabot
To monitor and manage your application
URL | Method |
---|---|
http://localhost:8080 |
GET |
http://localhost:8080/actuator/ |
GET |
http://localhost:8080/actuator/health |
GET |
http://localhost:8080/actuator/info |
GET |
http://localhost:8080/actuator/prometheus |
GET |
http://localhost:8080/actuator/httptrace |
GET |
URL | Method | Remarks |
---|---|---|
http://localhost:8080/app |
||
http://localhost:8080/app/employees |
GET | Custom Response Headers |
http://localhost:8080/app/managers |
GET | |
http://localhost:8080/app/admins |
GET |
URL | Method | Remarks |
---|---|---|
http://localhost:8080/app/employees/employee-index |
GET | |
http://localhost:8080/app/employees/employee-show-my-commits |
GET | |
http://localhost:8080/app/employees/employee-add-commit |
GET | |
http://localhost:8080/app/employees/employee-show-all-commits |
GET | |
http://localhost:8080/app/credentials/credential-edit |
GET | |
http://localhost:8080/app/employees/employee-team |
GET |
URL | Method | Remarks |
---|---|---|
http://localhost:8080/app/managers/manager-index |
GET | |
http://localhost:8080/app/managers/manager-add-project |
GET | |
http://localhost:8080/app/managers/manager-show-commits |
GET | |
http://localhost:8080/app/managers/manager-describe-commit |
GET | |
http://localhost:8080/app/managers/manager-assign |
GET | |
http://localhost:8080/app/managers/manager-edit-project |
GET | |
http://localhost:8080/app/managers/manager-delete-project |
GET | |
http://localhost:8080/app/managers/manager-info |
GET | |
http://localhost:8080/app/managers/manager-team |
GET | |
http://localhost:8080/app/managers/manager-assigned-projects |
GET | |
http://localhost:8080/app/credentials/credential-edit |
GET |
URL | Method | Remarks |
---|---|---|
http://localhost:8080/app/admins/admin-index |
GET | |
http://localhost:8080/app/admins/employees/admin-employees-list |
GET | |
http://localhost:8080/app/admins/employees/admin-employees-add |
GET | |
http://localhost:8080/app/admins/employees/admin-employees-edit |
GET | |
http://localhost:8080/app/admins/employees/admin-employee-credentials |
GET | |
http://localhost:8080/app/admins/employees/admin-employees-isactive |
GET | |
http://localhost:8080/app/admins/employees/admin-employees-delete |
GET | |
http://localhost:8080/app/admins/departments/admin-departments-list |
GET | |
http://localhost:8080/app/admins/departments/admin-departments-edit |
GET | |
http://localhost:8080/app/admins/departments/admin-departments-delete |
GET | |
http://localhost:8080/app/admins/locations/admin-locations-list |
GET | |
http://localhost:8080/app/admins/locations/admin-locations-edit |
GET | |
http://localhost:8080/app/admins/locations/admin-locations-delete |
GET |
- Postman Collection - online, with code auto-generated snippets in cURL, jQuery, Ruby,Python Requests, Node, PHP and Go programming languages
- Postman Collection - offline
- Swagger - Documentation & Testing
The project (a.k.a. project directory) has a particular directory structure. A representative project is shown below:
.
├── employees-management
├── src
│ └── main
│ └── java
│ ├── com.pfa.pack.pack
│ ├── com.pfa.pack.pack.configs
│ ├── com.pfa.pack.pack.configs.swagger
│ ├── com.pfa.pack.pack.configs.cors
│ ├── com.pfa.pack.pack.configs.twilio
│ ├── com.pfa.pack.pack.configs.modelmapper
│ ├── com.pfa.pack.pack.controllers
│ ├── com.pfa.pack.pack.controllers.api
│ ├── com.pfa.pack.pack.controllers.employee
│ ├── com.pfa.pack.pack.controllers.manager
│ ├── com.pfa.pack.pack.controllers.admin
│ ├── com.pfa.pack.pack.converters
│ ├── com.pfa.pack.pack.enums
│ ├── com.pfa.pack.pack.security
│ ├── com.pfa.pack.pack.security.
│ ├── com.pfa.pack.pack.exceptions
│ ├── com.pfa.pack.pack.exceptions.customs
│ ├── com.pfa.pack.pack.exceptions.payloads
│ ├── com.pfa.pack.pack.models
│ ├── com.pfa.pack.pack.models.entities
│ ├── com.pfa.pack.pack.models.ids
│ ├── com.pfa.pack.pack.models.dto
│ ├── com.pfa.pack.pack.models.collectionwrappers
│ ├── com.pfa.pack.pack.utils
│ ├── com.pfa.pack.pack.utils.email
│ ├── com.pfa.pack.pack.utils.sms
│ ├── com.pfa.pack.pack.utils.report
│ ├── com.pfa.pack.pack.repositories
│ └── com.pfa.pack.pack.services
│ └── com.pfa.pack.pack.services.impls
├── src
│ └── main
│ └── resources
│ └── static
│ │ ├── css
│ │ ├── js
│ └── templates
│ │ ├── admins
│ │ ├── employees
│ │ ├── managers
│ │ ├── credentials
│ │ ├── home
│ ├── application.properties
│ ├── application-dev.properties
│ ├── application-test.properties
│ ├── application-prod.properties
│ ├
│ └──
├── src
│ └── test
│ └── java
├── JRE System Library
├── Maven Dependencies
├── bin
├── logs
│ └── application.log
├── src
├── target
│ └──project-tracking-system.jar
├── mvnw
├── mvnw.cmd
├── pfa_db.sql
├── pfa_ERD.png
├── pom.xml
└── README.md
-
models
— to hold our entities; -
repositories
— to communicate with the database; -
services
— to hold our business logic; -
security
— security configuration; -
controllers
— to listen to the client; -
resources/
- Contains all the static resources, templates and property files. -
resources/static
- contains static resources such as css, js and images. -
resources/templates
- contains server-side templates which are rendered by Spring. -
resources/application.properties
- It contains application-wide properties. Spring reads the properties defined in this file to configure your application. You can define server’s default port, server’s context path, database URLs etc, in this file. -
test/
- contains unit and integration tests -
pom.xml
- contains all the project dependencies
This Project uses GitHub's integrated issue tracking system to record bugs and feature requests. If you want to raise an issue, please follow the recommendations below:
- Before you log a bug, please https://github.com/SelimHorri/Project-Tracking-System/search?type=Issues[search-the-issue-tracker] to see if someone has already reported the problem.
- If the issue doesn't already exist, https://github.com/SelimHorri/Project-Tracking-System/issues/new[create-a-new-issue].
- Please provide as much information as possible with the issue report.
- If you need to paste code, or include a stack trace use Markdown +++```+++ escapes before and after your text.
- My API Lifecycle Checklist and Scorecard
- HTTP Status Codes
- Bootstrap w3schools
- Common application properties
-- ## License