Java EE 7 Real World Experience: Campground Management with Tipi.camp
Tipi.camp provides a simple campground management software and targets 25,000+ independent campgrounds all over Europe. It provides a customer-friendly booking-portal and a RESTful API for partners to integrate. The project was conceived in September 2013 when Christoph returned from vacation, disappointed because of the missed booking for their tent. And now he has created a new solution connecting campers and campgrounds with each other.
The website offers a SaaS where campgrounds can register their camp sites and campers can look at the availability of these campgrounds, check out their calendar, pick a site and make a reservation. It is also available for on-site installation if you prefer running it on your domain. Think of it as koa.com, but available to all the independent campgrounds and much more modern ;)
The landing page is certainly very fancy:
Websites of smaller campgrounds are typically characterized by low data maintenance and absence of a booking possibility. tipi.camp has advantages:
- Easy-to-use portal for campground owners and campers
- Campground owner administrate and book his sites independently
- Customer data management
- External sales channels, for example booking.com, can be connected to sell the log cabins
- RESTful API it is also possible to handle larger individual installations
Campgrounds get their own portal, reservations, channel management, email and much more for €1/day if they are located in Europe or $1/day if they are in US. Each campground with an Internet connection and browser (whether computer or iPad) can use the software.
In terms of the overall flow, campground owner register their campground with tipi.camp. Traveler checks out the calendar and books the campground using the responsive portal.
Check out the welcome page:
Campers can search through the available camps and then look at the calendar of a particular camp:
Pick a particular site on the campground:
And then checkout to make the payment:
This website is built using Java EE 7:
Here is a brief description of the technology stack:
- JavaServer Faces + Expression Language. Different templates are used for desktop and iPad apps. JSF Template Library might be used to provide a fully customized portal for the campground owners later.
- Security: JAAS Principal + JDBC realm
- Bean discovery mode="all"
- Middle Tier
- EJB for business boundaries
- Servlets with JSON for web hooks: response from Paypal and Sendgrid
- JAX-RS for exposing API to partners
- JPA + Bean Validation, use
@Indexfor database generation during development. Flyway API for database migrations in production.
- Concurrency: Calculation of statistics and sending messages, Sendgrid takes ~1-4 seconds to send messages
@Scheduleto run a job at pre-defined time
- JPA + Bean Validation, use
Technologies from outside the platform were:
- Primefaces 5 for the GUI and Bootstrap for the responsive Enduser-Portal.
- Sendgrid API for sending mails. This is required as opposed to JavaMail because specific meta information needs to be added to each email.
- Misc apache commons (eq. FileUtils.writeByteArrayToFile or IOUtils.toByteArray) - there are only a few sections.
- Flyway API for database migrations
- Junit with Derby – for testing
- JDK 8
- IntelliJ 13.1 with Maven
- Wildfly 8.1.0.Final - Single instance of WildFly is used. The app was previously deployed on GlassFish.
- Apache httpd is used to:
- performance-tuning with KeepAlive, mod_expires for the images and the compression
- easy SSL configuration
- handle more WildFly under 1 hostname with the mod_proxy
- mod_redirect for redirect all http requests to the app to https
- loader.io for Load-Testing
- Currently the application is deployed on a self-hostet Linux-Server in the hetzner.de data center.
Wish list for Java EE 8
- Most used Apache Commons Libs
- @Temporal works with LocalDate and LocalDateTime
- Batch processing API does support generics
And here are supporting quotes on Java EE 7
the technology is perfect. very productive with java/ee7, i’m and our customers are very happy with java ee7. With the technology, really everything is possible.
And on WildFly:
superb, unique product
So, do you want to start on this terrific two combination of Java EE 7 + WildFly ?
Or if you want to be on the bleeding edge, check out WildFly 9.0.
Are you using Java EE 7 and WildFly to deploy your projects ? Would love to feature you here! Send me an email or leave a comment on the blog.