SlideShare a Scribd company logo
HOW WE BUILT A JOB BOARD
IN ONE WEEK WITH JHIPSTER
Kile Niklawski
Ippon Technologies
Who am I?
• Software Engineer/Architect and technology enthusiast
• A decade of experience - mostly Java
• Worked with various start-ups and large insurance,
finance, and government clients
• Working for Ippon as a Software Architect
kniklawski@ipponusa.com
@KileNiklawski
Ippon Technologies
• 200 software engineers in France and the US
➡ Paris, Nantes, Bordeaux
➡ Richmond (Virginia), Washington (DC)
• Expertise
➡ Digital, Big Data and Cloud
➡ Java, Open-source, Agile
• Open-source Projects :
➡ JHipster,
➡ Tatami …
• @ipponusa
3
Requirements
• Job Board Site MVP
• Three types of users: Company, Recruiter, Candidate (job seeker)
• Company can register and then post jobs
• Recruiter can login and search for applicants
• User can login and search for jobs
• You have one week!
• 1 Product Owner
• 1 Developer
• 1 Scrum Master
What is JHipster?
• Open Source
• Yeoman app generator
• Creates a full stack Java based web app
• Uses Maven/Gradle, Grunt, Bower, Spring and AngularJS
• Spring Boot
• Responsive UI (HTML5/CSS3/Bootstrap)
• Spring Data JPA backend
• Security is wired up
• Caching built-in, log management, monitoring, API docs
DAY 1
Generate the app, customize UI, and deploy to the cloud
Writing User Stories
• Candidate
• I want to log in, build a profile and be able to search and apply to
jobs easily
• Recruiter
• I want to log in, build a personal and company profile
• I want to be able to post jobs
• I want to be able to view the applicants for a job
• I want to search the candidate pool to find a good match
• SysAdmin
• I want to be able to monitor the status of the server, the application’s
services and be able to interact with the REST API
• I want to be able to change the log levels from the browser
• Partner
• I want to pull candidates, jobs and companies using a REST API
Generate the Base Project
Database
Get it Running
• Created the UML diagram using Modelio
• Exported model in XMI
• Imported XMI using jhipster-uml tool
• Now run it!
• mvn clean install
• mvn spring-boot:run
Check out the Entities
CRUD + Search Built-in
Cloud Time
• Wanted to use heroku but had to install Elasticsearch to a
local server in order to keep it free
• Installed the heroku CLI
• One-time setup for deployment
• heroku login
• yo jhipster:heroku
• Every deployment
• mvn clean install –Pprod
• heroku deploy:jar –jar target/boardatjob.war
UI
• Borrowed a few hours from a UI designer for a look-and-
feel
• Chose to use the Compass CSS Authoring Framework
• Replaced the main.scss file with the custom CSS from the
designer
• Modified some image paths and added images
• Copied the designer’s home page into the main.html
• Separated common elements into the navbar template and
created a new header template
DAY 2
Add Candidate Features
Candidate Features
• Added a new listing template for the front page, tied in
Elasticsearch, added the job and company detail pages
• Very little backend work required – mostly HTML and AngularJS
• Needed to sort the job listings
• Had to modify a date field on the job object and add a liquibase
changeset
• Modified the REST controller to pass the sort criteria to Spring Data
• Needed pagination (infinite scroll)
• JHipster provides infinite scrolling but we did not select it
• So we generated a new JHipster project with infinite scroll and
borrowed from that
Landing Page
Job Details
Company Details
DAY 3
Added code coverage analysis and built user profile
Coverage and Static Analysis
• Updated the Sonar version in the pom.xml
• Ignored library files during analysis
• Consolidated test reports in the same directory
• Added code coverage for Java using Jacoco
• Added code coverage for AngularJS using Karma
• Would like to see these generated by JHipster
• Run the analysis:
• mvn clean install
• grunt test
• mvn sonar:sonar
Faceted Search
• How do we implement this?
• Elasticsearch supports faceted search but not sure how to
get the information with the Spring Data Elasticsearch
library (display job counts by location)
• Let’s move on!
User Profile
• Added a user profile entity to support additional fields
• Design choice versus modifying the existing user entity generated
by JHipster
• User profile is related by unique login id to the user entity
• Modified registration to create a user profile
• Modified the settings page to support additional fields for
user profiles
• Found a minor bug in JHipster where refreshing the page
caused the user to lose his roles
• Already fixed!
• Added storing of résumés as a blob in the user profile
• Added a REST resource for upload/download requests
• Used an AngularJS library for drag-and-drop uploads
DAY 4
Recruiter pages, résumé upload, job application
Recruiter Features
• Created a company page for the recruiter
• Created pages to submit and review job listings
• Added a list of job applications for listings submitted by the
recruiter to the home page
• Added ability to review the cover letter and candidate
contact information
• Added ability to download a candidate’s résumé
Registration
Company Details
Create a Job
Jobs Created
Applicants
Candidate Features
• Modified the user profile screen to add fields and support
résumé uploads
• Added screen for applying for a job and adding a cover
letter
User Profile
Apply for Job
DAY 5
Went to the beach
35
MVP
• Signed up for a free SendGrid account and configured the
sendmail settings in the application.yml file
• Focused most of the day on fixing bugs
• Believe it or not, some bugs still exist
CONCLUSION
What Did We Get?
• How long does it take to get a new project up and running?
• Started adding features on Day 1
• Scaffolding was generated
• Deployed initial app to the cloud on Day 1
• Can we modify the generated code?
• Modern and clean organization
• Easily added 3rd party libraries with bower and maven
• A prototype that can be turned into a real, scalable
production application
References
• JHipster Site
• https://jhipster.github.io/
• White Paper
• http://www.ipponusa.com/whitepaper/jhipster-for-techies-hipster-
developer-diary/
• JHipster Demo
• http://www.ipponusa.com/blog/jhipster-demo/
Ad

More Related Content

What's hot (20)

JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017
Deepu K Sasidharan
 
Swagger code motion talk
Swagger code motion talkSwagger code motion talk
Swagger code motion talk
Victor Trakhtenberg
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
Swaminathan Vetri
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
Kumar Shìvam
 
React Native
React NativeReact Native
React Native
Huqiu Liao
 
Using GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureUsing GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to Azure
Kasun Kodagoda
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
Oleksii Holub
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Matt Raible
 
GitHub Actions - Melbourne UG
GitHub Actions - Melbourne UGGitHub Actions - Melbourne UG
GitHub Actions - Melbourne UG
Natraj Yegnaraman
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
Md. Minhazul Haque
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
Stefan Stölzle
 
WJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Java8-Tooling in EclipseWJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Java8-Tooling in Eclipse
martinlippert
 
An iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React NativeAn iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React Native
Aleksandras Smirnovas
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"
Fwdays
 
Deploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker ToolsDeploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker Tools
Eddie Lau
 
Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017
Matt Raible
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
Casey Lee
 
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
Kenji Tanaka
 
CloudSkew Architecture
CloudSkew ArchitectureCloudSkew Architecture
CloudSkew Architecture
Mithun Shanbhag
 
JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017
Deepu K Sasidharan
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
Kumar Shìvam
 
Using GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureUsing GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to Azure
Kasun Kodagoda
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
Oleksii Holub
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Matt Raible
 
GitHub Actions - Melbourne UG
GitHub Actions - Melbourne UGGitHub Actions - Melbourne UG
GitHub Actions - Melbourne UG
Natraj Yegnaraman
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
Stefan Stölzle
 
WJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Java8-Tooling in EclipseWJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Java8-Tooling in Eclipse
martinlippert
 
An iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React NativeAn iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React Native
Aleksandras Smirnovas
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"
Fwdays
 
Deploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker ToolsDeploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker Tools
Eddie Lau
 
Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017
Matt Raible
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
Casey Lee
 
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
ぼくがかんがえたさいきょうのクリーンアーキテクチャ部分適応
Kenji Tanaka
 

Similar to How we built a job board in one week with JHipster (20)

Introduction to the web engineering Process.pdf
Introduction to the web engineering Process.pdfIntroduction to the web engineering Process.pdf
Introduction to the web engineering Process.pdf
Mahmoud268161
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our vision
Sebastian Schleicher
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
Taras Matyashovsky
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
Derek Jacoby
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
paidi_ed
 
Forge - DevCon 2016: Free your BIM data
Forge - DevCon 2016: Free your BIM dataForge - DevCon 2016: Free your BIM data
Forge - DevCon 2016: Free your BIM data
Autodesk
 
Vasudeo_5.8_Years_of_Exp
Vasudeo_5.8_Years_of_ExpVasudeo_5.8_Years_of_Exp
Vasudeo_5.8_Years_of_Exp
vasudeo rao vaka
 
Drew madelung sp designer workflows - sp-biz
Drew madelung   sp designer workflows - sp-bizDrew madelung   sp designer workflows - sp-biz
Drew madelung sp designer workflows - sp-biz
Drew Madelung
 
UX Week 2007: CNN.com Relaunch Case Study
UX Week 2007: CNN.com Relaunch Case StudyUX Week 2007: CNN.com Relaunch Case Study
UX Week 2007: CNN.com Relaunch Case Study
Adaptive Path
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
Bradley Brown
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
Jadson Santos
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
Troy Miles
 
Shop talk - Project Server 2013
Shop talk - Project Server 2013Shop talk - Project Server 2013
Shop talk - Project Server 2013
Chris Givens
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
SARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
ifnu bima
 
Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
Rohit Kamboj
Rohit KambojRohit Kamboj
Rohit Kamboj
Rohit Kamboj
 
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Aaron Saunders
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
Derek Jacoby
 
Introduction to the web engineering Process.pdf
Introduction to the web engineering Process.pdfIntroduction to the web engineering Process.pdf
Introduction to the web engineering Process.pdf
Mahmoud268161
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our vision
Sebastian Schleicher
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
Taras Matyashovsky
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
Derek Jacoby
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
paidi_ed
 
Forge - DevCon 2016: Free your BIM data
Forge - DevCon 2016: Free your BIM dataForge - DevCon 2016: Free your BIM data
Forge - DevCon 2016: Free your BIM data
Autodesk
 
Drew madelung sp designer workflows - sp-biz
Drew madelung   sp designer workflows - sp-bizDrew madelung   sp designer workflows - sp-biz
Drew madelung sp designer workflows - sp-biz
Drew Madelung
 
UX Week 2007: CNN.com Relaunch Case Study
UX Week 2007: CNN.com Relaunch Case StudyUX Week 2007: CNN.com Relaunch Case Study
UX Week 2007: CNN.com Relaunch Case Study
Adaptive Path
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
Bradley Brown
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
Jadson Santos
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
Troy Miles
 
Shop talk - Project Server 2013
Shop talk - Project Server 2013Shop talk - Project Server 2013
Shop talk - Project Server 2013
Chris Givens
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
SARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
ifnu bima
 
Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Aaron Saunders
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
Derek Jacoby
 
Ad

Recently uploaded (20)

The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Ad

How we built a job board in one week with JHipster

  • 1. HOW WE BUILT A JOB BOARD IN ONE WEEK WITH JHIPSTER Kile Niklawski Ippon Technologies
  • 2. Who am I? • Software Engineer/Architect and technology enthusiast • A decade of experience - mostly Java • Worked with various start-ups and large insurance, finance, and government clients • Working for Ippon as a Software Architect [email protected] @KileNiklawski
  • 3. Ippon Technologies • 200 software engineers in France and the US ➡ Paris, Nantes, Bordeaux ➡ Richmond (Virginia), Washington (DC) • Expertise ➡ Digital, Big Data and Cloud ➡ Java, Open-source, Agile • Open-source Projects : ➡ JHipster, ➡ Tatami … • @ipponusa 3
  • 4. Requirements • Job Board Site MVP • Three types of users: Company, Recruiter, Candidate (job seeker) • Company can register and then post jobs • Recruiter can login and search for applicants • User can login and search for jobs • You have one week! • 1 Product Owner • 1 Developer • 1 Scrum Master
  • 5. What is JHipster? • Open Source • Yeoman app generator • Creates a full stack Java based web app • Uses Maven/Gradle, Grunt, Bower, Spring and AngularJS • Spring Boot • Responsive UI (HTML5/CSS3/Bootstrap) • Spring Data JPA backend • Security is wired up • Caching built-in, log management, monitoring, API docs
  • 6. DAY 1 Generate the app, customize UI, and deploy to the cloud
  • 7. Writing User Stories • Candidate • I want to log in, build a profile and be able to search and apply to jobs easily • Recruiter • I want to log in, build a personal and company profile • I want to be able to post jobs • I want to be able to view the applicants for a job • I want to search the candidate pool to find a good match • SysAdmin • I want to be able to monitor the status of the server, the application’s services and be able to interact with the REST API • I want to be able to change the log levels from the browser • Partner • I want to pull candidates, jobs and companies using a REST API
  • 10. Get it Running • Created the UML diagram using Modelio • Exported model in XMI • Imported XMI using jhipster-uml tool • Now run it! • mvn clean install • mvn spring-boot:run
  • 11. Check out the Entities
  • 12. CRUD + Search Built-in
  • 13. Cloud Time • Wanted to use heroku but had to install Elasticsearch to a local server in order to keep it free • Installed the heroku CLI • One-time setup for deployment • heroku login • yo jhipster:heroku • Every deployment • mvn clean install –Pprod • heroku deploy:jar –jar target/boardatjob.war
  • 14. UI • Borrowed a few hours from a UI designer for a look-and- feel • Chose to use the Compass CSS Authoring Framework • Replaced the main.scss file with the custom CSS from the designer • Modified some image paths and added images • Copied the designer’s home page into the main.html • Separated common elements into the navbar template and created a new header template
  • 16. Candidate Features • Added a new listing template for the front page, tied in Elasticsearch, added the job and company detail pages • Very little backend work required – mostly HTML and AngularJS • Needed to sort the job listings • Had to modify a date field on the job object and add a liquibase changeset • Modified the REST controller to pass the sort criteria to Spring Data • Needed pagination (infinite scroll) • JHipster provides infinite scrolling but we did not select it • So we generated a new JHipster project with infinite scroll and borrowed from that
  • 20. DAY 3 Added code coverage analysis and built user profile
  • 21. Coverage and Static Analysis • Updated the Sonar version in the pom.xml • Ignored library files during analysis • Consolidated test reports in the same directory • Added code coverage for Java using Jacoco • Added code coverage for AngularJS using Karma • Would like to see these generated by JHipster • Run the analysis: • mvn clean install • grunt test • mvn sonar:sonar
  • 22. Faceted Search • How do we implement this? • Elasticsearch supports faceted search but not sure how to get the information with the Spring Data Elasticsearch library (display job counts by location) • Let’s move on!
  • 23. User Profile • Added a user profile entity to support additional fields • Design choice versus modifying the existing user entity generated by JHipster • User profile is related by unique login id to the user entity • Modified registration to create a user profile • Modified the settings page to support additional fields for user profiles • Found a minor bug in JHipster where refreshing the page caused the user to lose his roles • Already fixed! • Added storing of résumés as a blob in the user profile • Added a REST resource for upload/download requests • Used an AngularJS library for drag-and-drop uploads
  • 24. DAY 4 Recruiter pages, résumé upload, job application
  • 25. Recruiter Features • Created a company page for the recruiter • Created pages to submit and review job listings • Added a list of job applications for listings submitted by the recruiter to the home page • Added ability to review the cover letter and candidate contact information • Added ability to download a candidate’s résumé
  • 31. Candidate Features • Modified the user profile screen to add fields and support résumé uploads • Added screen for applying for a job and adding a cover letter
  • 34. DAY 5 Went to the beach
  • 35. 35
  • 36. MVP • Signed up for a free SendGrid account and configured the sendmail settings in the application.yml file • Focused most of the day on fixing bugs • Believe it or not, some bugs still exist
  • 38. What Did We Get? • How long does it take to get a new project up and running? • Started adding features on Day 1 • Scaffolding was generated • Deployed initial app to the cloud on Day 1 • Can we modify the generated code? • Modern and clean organization • Easily added 3rd party libraries with bower and maven • A prototype that can be turned into a real, scalable production application
  • 39. References • JHipster Site • https://jhipster.github.io/ • White Paper • http://www.ipponusa.com/whitepaper/jhipster-for-techies-hipster- developer-diary/ • JHipster Demo • http://www.ipponusa.com/blog/jhipster-demo/