Miesiany Miesiany Kebab

Food & Restaurant industry

Description

Full Stack application for business from gastronomic industry created with Spring on backend and Angular on frontend. Intended to serve as digital business card to reach more customers, encourage them to stay longer and to solve problems typical for this industry. System provides convenient UI (RWD, multilingual pages, eye-catching colors, customizable by manager paragraphs) and all essential information in one place. Offers a set of marketing tools that enhance brand strength, customer engagement and support business growth - marketing slogans, discount codes, newsletter or gamification systems while placing orders. Ensures real impact on repeat visits and building better relationships with customers. Another functionality that distinguishes the system is job board, where manager can add fully customizable job offer with information such as position name, list of Mandatory / Nice to have requirements, employment types or hourly wage gross. Guests can apply to each job offer by fulfilling form with attaching CV in PDF/DOC format. System share possibility to easy candidate selection or download CV attached by candidate. Also implemented real-time panels with WebSockets to ensure instant data synchronization on views, which really needs it. Good example can be "Order Status Display" view for in-restaurant screens which show numbers of orders currently being prepared (in gray color) and ready (in green color). Tracking order view is also a view of this type. Finally, it is worth mentioning some staff panels - for example work schedule panel which allow to manage shifts in selected month (document can be then displayed or downloaded in PDF format) or payments panel where manager can clearly check all necessary information about payments related to particular employee for any month.

Tech stack

  • Java 21
  • TypeScript
  • Spring
  • Angular 18
  • Bootstrap
  • Hibernate
  • Thymeleaf
  • Maven
  • JUnit
  • Mockito
  • PostgreSQL
  • HTML
  • SCSS
  • Docker
  • Bash

Features

  • Session-based authentication system, taking into data security - implemented storing passwords encrypted with the bcrypt algorithm in database.
  • Well-tailored UI with eye-catching colors.
  • Responsive Web Design to improve accessibility of UI at all types of devices.
  • Multilingual pages (Polish or English),
  • Multilingual validation for all forms. Validation messages are sent by backend in appropriate language specified in request header.
  • Integration with TomTom Map API to add map with pointer making locating restaurant much easier to potential customers.
  • Bash script, which starts PostgreSQL database, backend and frontend with one command.
  • Possibility to follow application flow and diagnose potential issues by accessing informational, warning and error logs in console.
  • Possibility to display Home Page - "First contact section", which clients see firstly after navigating to root URL. Had to be designed in the best way from marketing perspective - there should be many information, that can encourage potential customer to place order. Contains marketing slogans, certificates, guarantees, acknowledgments and a map with pointer.
  • Possibility to display highlighted with proper color easy to customize by manager opening hours of restaurant on each day.
  • Possibility to display Menu of the restaurant divided to three sections: Meals, Addons and Beverages. Customer can learn about each menu item details like name, price, capacity or ingredients. Entire section is customizable by manager - can add, update and remove each type of item. Items in each section are sorted by name.
  • Possibility to display Contact details - phoone number, email address, nicknames at social media and map with location pointer. Contact data is customizable by manager.
  • Job board, which enable manager to add fully customizable job offers with information such as position name, description, list of Mandatory / Nice to have requirementslist of employment types or hourly wage gross. Website guests interested in work for restaurant can apply to each job offer by fulfilling form (with attaching a CV in PDF/DOC format). System also share possibility to display all candidates, which applied to job offer, remove those who do not fit the position or display/download CV attached by desired candidate.
  • Promotions for Meals, Beverages and Addons possible to see in proper view of website by all customers. If some menu position is already added to certain promotion, customers can see price change in menu section or while placing order. All promotions are customizable by manager - can add, update and delete promotions.
  • Multilingual promotions newsletter with email verification implemented with usage of Observer design pattern. Each customer has possibility to sign up to newsletter and choose preffered language of email messages (Polish or English). When some promotion is added, then email is sent to all verified subscribers. From technical perspective some methods related to feature are asynchronous to enhance application preformance. System offers possibility to unsubscribe newsletter at any time.
  • Discount codes with which customers can reduce price of order - each code has its expiration date and number of remaining uses. Automatically generated and sending to customers, who provide their email address during placing order process - either after every 10 orders or when the order total price exceeds 100 PLN. Manager can add, update and delete discount codes (allowing for manual distribution as well).
  • Possibility to place order by customers in easy and concise way - each menu position can be selected and added to order, then partially customized (by choosing size, meat, sauce, quantity or capacity). After adding item, customer may continue adding more items, proceed to the next step or come back later (all order details are saved in local storage). Next step is choosing preferred delivery method: pickup at the restaurant or home delivery. Depending on the choice dedicated panel is shown to collect the necessary information. Finally, customer has the option to leave additional comments and enter a discount code to receive a price reduction. Managers and employees can add, update and delete orders.
  • Real-time panels related to orders (order display, order management and track order) implemented with usage of WebSockets for instant data synchronization.
  • Track order panel, where customers can easily monitor status of their order in real time. Here they can find information such as order id (number of order displayed on the screen in restaurant), total price, delivery address (if home delivery method was selected), payment methods, ordered items details and current order status. Customers can access this panel for up to two hours after the last update to their order.
  • Real-time order status display for in-restaurant screen, which shows numbers of orders currently being prepared (in gray color) and those, that are ready (in green color). This provides clear information to customers waiting in the restaurant, improving communication and overall experience.
  • Work schedule panel which allows managers to assign shifts for all employees for a selected month and year. All employees can display and then download a printable PDF document that clearly displays the shift schedule.
  • Employee management panel where manager can add, update or remove employees.
  • Employee and manager panels which allow authenticated users to view their current contact information and employment details. Each panel includes an actions section with buttons that provide functions available to the particular account type (employee or manager). Both employees and managers can also update their email address and password.
  • Payments panel where manager can clearly check all necessary information about payments related to particular employee for any month: personal data, job, employment type, current hourly wage gross, hourly wage gross in chosen period, working hours in chosen period, student status and total payment amount.
  • Rate limiting applied to public API endpoints to protect system from excessive or malicious traffic.

Gallery

Image 1
Image 2
Image 3
Image 4
Image 5
Image 6
Image 7
Image 8
Image 9
Image 10
Image 11
Image 12
Image 13
Image 14
Image 15
Image 16
Image 17
Image 18
Image 19
Image 20
Image 21
Image 22
Image 23
Image 24
Image 25
Image 26
Image 27
Image 28
1 / 28
Wiktor Chudy | Full Stack Software Engineer