1. Motivation
The initial start of the project was at the beginning of 2019. I was looking for a sparing project which would help me getting hands on experience in Microservices, Spring Boot, Docker and Cloud. As usual, windsurfing proved to be a good “business” domain. The concept behind Windwarner is the following:
- WindwarnerJobs
- Get warned about good conditions (minimum windspeed and optionally minimum temperature) on your favorite windsurfing spots via email. You can chose from a list of data providers which can be used to obtain weather conditions. You can configure arbitrary number of jobs for different spots. Each job is associated with a schedule (All Week, After-work, Weekends). You have the possibility to snooze jobs for specific time-periods e.g. when you are on holidays or not free on a specific day.
- WindCalendarConfigs
- The concept is similar to WindwarnerJobs but this time for weather forecasts. You can configure minimum weather demands for different spots at your favorite data provider. Windwarner will provide you your personal subscribable calendar endpoint which can be included in all major calendar applications. The format used is iCal which is the calendar standard. Your mail program will regularly check the endpoints which will keep you on top of all wind forecast stuff.
From the start, the architecture/technologies were kind of pre-selected as this project should also be a training on things which are useful for my professional life (no PHP). Moreover, the interface between the application and the user should be as small and as standard as possible which makes a lot of sense in my opinion. What use would it have to implement a custom smartphone/tablet applications/browser add-on with custom notifications?
The problem of informing a person about an event is solved: Messaging (Email)
The problem of organising your appointments in the future is solved: Calendar (iCAL)
The chance that a device (seamlessly) supports email or calendars is much higher than the chance that you can install your custom app on it. The only custom part left is an easy user-interface which handles RBAC and CRUD on WindwarnerJobs and WindCalendarConfigs.
2. Architecture
Created with the C4 best practices in mind. Check the C4 diagram legend here.
3. Implementation
Stack for Microservices
- Maven
- Java 14
- Spring Boot with several starters
- Liquibase
- Quartz Scheduler
- Caffeine Cache Implementation
- Springfox
- biweekly for iCal
- openAPI client generator
- Google Jib
- Testcontainers for MySQL-DB in integration tests
Stack for wordpress plugin
- PHP
- WordPress-API
- Select2 for dynamic spot search
- Firebase PHP-JWT
- HTML, JavaScript and CSS
4. Operations
After initially trying out AWS (Fargate + RDS), I soon stopped that after the costs rose quickly and were just too much for a non-profit side-project. As I already host my blog, my personal Jenkins, Kanboard and some other stuff on Hetzner Private Cloud, I registered another Hetzner instance for Windwarner. The smallest instance is enough to run two Spring Boot Docker containers as you can see here.

The prize of just 2,96€ per Month for a small server is unbeatable. Of course, you don’t have the fully managed experience which you’d have in AWS but the prize-tag of that is just unreasonable for a non-profit side project of that scope. As a comparison, the two small services only cost 0.68€ per day on AWS Fargate. Route53, VPC and other necessary helper services would increase it even more.

Necessary steps for operation:
- Install docker and docker-compose
- Installation of nginx reverse proxy with let’s encrypt

Docker-compose for NGINX - Create DNS entries for subdomains which point to the static IP of the Hetzner Server
- Enable auth for private AWS ECR repository in order to pull the Windwarner docker images
-
docker-compose up -d 😎






436 comments
http://betsy.net/__media__/js/netsoltrademark.php?d=https://t.me/Official_1xbet_1xbet/1692
https://www.avito.ru/surgut/predlozheniya_uslug/apparatnyy_manikyur_i_pedikyur_s_pokrytiem_4030660549?utm_campaign=native&utm_medium=item_page_ios&utm_source=soc_sharing_seller
http://americanmercury.org/__media__/js/netsoltrademark.php?d=https://t.me/s/Official_1xbet_1xbet/122
http://www.google.com.bh/url?q=https://t.me/Official_1xbet_1xbet/551
https://clients1.google.co.kr/url?sa=t&url=https://t.me/Official_1xbet_1xbet/1427
https://t.me/s/om_1xbet/7
https://t.me/s/om_1xbet/12
https://t.me/s/om_1xbet/3
https://t.me/om_1xbet/14
https://t.me/om_1xbet/15
https://t.me/om_1xbet/12
https://t.me/s/om_1xbet/7
https://t.me/top_casino_rating_ru/14
https://t.me/top_casino_rating_ru/11
https://t.me/s/om_1xbet/15
https://t.me/om_1xbet/6
https://t.me/s/om_1xbet/10
https://t.me/of_1xbet/1027
Вкусите победу — играйте в 1win и выберите вино номер 1 красное вместе с нашими бонусами! Регистрация за 1 минуту, минимальный депозит всего 150 рублей, быстрые выплаты и кэшбэк до 10% на ставки на спорт, лайв-ставки и слоты — все в личном кабинете круглосуточно. Получите +100 фриспинов при первом пополнении и наслаждайтесь реальными выигрышами на популярном онлайн-казино!
888slot có lừa đảo không nổi bật với ba trụ cột chính: đa dạng trò chơi, bảo mật cao cấp và dịch vụ khách hàng xuất sắc. Mỗi yếu tố này được thiết kế tỉ mỉ nhằm tạo ra môi trường giải trí trực tuyến đẳng cấp, khác biệt hoàn toàn so với các nền tảng thông thường trên thị trường.
Win 8 1 industry — начни выигрывать уже сегодня! Зарегистрируйся в 1win и получи бонусы за депозит до 100 долларов, фриспины, высокие коэффициенты на ставки на спорт, лайв-ставки и гарантированный кэшбэк 10%. Минимальный депозит — всего 10$, быстрое выдача выигрышей и круглосуточный доступ к онлайн-казино с лучшими слотами и реальными выигрышами.
1win витамины чья компания — выбирайте лучшее для себя: онлайн-казино с высокими коэффициентами, слоты с фриспинами, ставки на спорт и лайв-ставки с мгновенными выплатами, бонусами за депозит до 5000 ? и промокодами для дополнительных кэшбэков. Регистрация легко и быстро — играйте круглосуточно, выводите выигрыш за секунды, а в личном кабинете следите за выгодой и возможностями получения реальных выигрышей!
Бонусы и ставки с 1win — начинай прямо сейчас! Бот в телеграмме 1win предлагает быстрый доступ к онлайн-казино и ставкам на спорт для мгновенных выигшей, фриспинов и бонусов за депозит до 5000 ?, высокие коэффициенты, лайв-ставки и кэшбэк до 15%. Минимальный депозит всего 100 ?, быстрая регистрация, круглосуточный вывод средств и личный кабинет — всё для реального выигрыша и максимального комфорта!
https://t.me/s/ef_beef
https://t.me/s/Official_Ru_1WIN
Nếu bạn yêu thích các trò chơi bắn cá, ứng dụng 66b apk sẽ không làm bạn thất vọng. Các game bắn cá tại đây được thiết kế với đồ họa đẹp mắt, hiệu ứng sống động và luật chơi đơn giản.
https://telegra.ph/Beef-kazino-11-25
fbrxi6
https://t.me/s/mcasino_martin/313
We stumbled over here coming from a different web address and thought I may as well check things out. I like what I see so i am just following you. Look forward to looking at your web page for a second time.
chơi bài 66b Càng tham gia lâu dài và tích cực, người tham gia sẽ càng được hưởng những ưu đãi lớn hơn. Các thành viên VIP của nhà cái thường nhận được phần quà đặc biệt, tỷ lệ hoàn tiền cao hơn, cả những ưu đãi cá nhân hóa như quản lý tài khoản riêng, hỗ trợ ưu tiên cùng nhiều quyền lợi khác.
https://t.me/Martin_officials
https://t.me/s/iGaming_live/4866
Interesting blog! Is your theme custom made or did you download it from somewhere?
A design like yours with a few simple adjustements would really make my blog jump out.
Please let me know where you got your theme. Cheers
Woah! I’m really digging the template/theme of this blog. It’s simple, yet effective.
A lot of times it’s very difficult to get that “perfect balance” between superb usability and visual appeal.
I must say you have done a great job with this. Additionally, the blog
loads super quick for me on Safari. Superb Blog!
Yo, 9dgamebet, just checked you out. Interface is slick! Fingers crossed for some big wins tonight. Hope the odds are good for us! Check it out here: 9dgamebet