My work is not just about coding. It’s also about understanding the
needs of different businesses, which is shown by the projects I’ve
completed for clients in many industries.
Miesiany Miesiany KebabFood & Restaurant industry
Bibliotheca ChudyanaLibrary industry
GloboGymFitness & Health industry
Instalatorstwo elektryczneElectrical industry
Wiktor ChudyPersonal website and blog
BaloneySocial networking
DBeeData storage systems
Area intrudersGame development
Distributed Averaging SystemNetworking
Centralized Computing SystemNetworking
Miesiany Miesiany Kebab
Food & Restaurant industry
Description
Gastronomic industry plays an important role in the economy. Nowadays many restaurants, which exists in both big cities and small villages are often visited by people. For this reason, I decided to create fullstack application, which can solve problems typical for gastronomic industry. Based on my own preferences, I chose a kebab, but all functionalities, which I implemented can be also applied to other types of restaurants. Application is mainly intended to serve as a business card, to reach more customers and to encourage them to stay longer. Apart from enabling easy order accomplishment and tracking, system takes care of availability of all valuable for customer information in a convenient way. Application is also comfortable for employees of restaurant - it enable to manage restaurant, handle orders and customers more efficiently. Majority of components visible on website are easy to customize and update by manager.
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.
• Eye-catching, well-tailored and well-thought user interface,
• Responsive Web Design to improve accessibility of page 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, which aims to help potential customers easily locate restaurant,
• 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. This is the 'first contact section', which means, that clients see it firstly, after navigating to /. For this reason, this section had to be best thought out from a marketing perspective. I placed there many informations, that can encourage potential customer to place the order. Home page is divided to four subsections: hero section, about us, awards and location. Subsections contain, among others, many marketing slogans, certificates, guarantees, acknowledgments and a map with a pointer,
• Possibility to display highlighted with proper color opening hours of restaurant on each day. Manager can easily update these hours,
• Possibility to display menu of the restaurant. In menu section clients can see three tables: meals, addons to your meal and beverages, which contains each item details like name, price, capacity or ingredients. This entire section is manageable by the manager. Employee with this role can add, update and remove each type of item. Items in each table are sorted by name,
• Possibility to display contact details. In contact section clients can see contact data (including phone number and email address), nicknames at social media and map with location pointer. Contact data is editable by manager,
• Job board, which enable to publish dateiled job offers by manager. Manager can add job offer with information such as position name, description, list of mandatory requirements, list of nice to have requirements, list of employment types and hourly wage gross. Once added, each job offer is fully customizable. Website guests can apply to each job offer by fulfilling form (with attaching a CV in PDF/DOC format). Manager has possibility to display all candidates, which applied to job offer, remove those who do not fit the position or peek/download attached CV of desired candidate,
• Promotions for meals, beverages and addons. It is possible to display promotions details in proper section on website by all users. If some menu position is already added to certain promotion, users can see price change in menu section on website. All promotions are editable and easy to maintain by manager. Manager can add, update and delete promotions,
• Multilingual newsletter with email verification implemented with usage of Observer design pattern. Each customer has possibility to sign up to newsletter focused on promotions and choose preffered language of email messages (Polish or English). When manager adds some promotion, then email is sent to all verified subscribers. Some methods were created as asynchronous to enhance application preformance. It is also possibility to unsubscribe newsletter at any time,
• Discount codes with which customers can reduct price of order. Each discount code has its expiration date and number of remaining uses. Such codes are automatically generated and sending to customers, who provide their email adresse during ordering 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 such order and 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, a dedicated panel is shown to collect the necessary information. Finally, the customer has the option to leave additional comments and enter a discount code, if available, 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.