Raki is a Full-Stack Software-as-a-Service (SaaS) Point of Sale (POS) web application designed for small businesses. It provides a complete business management solution, including menu management, orders, payments, reservations, staff administration, taxation, and administrative tools.
The project was designed and implemented during an Erasmus+ study period at Vilnius University (Faculty of Mathematics and Informatics), as part of the Software Design course taught by Vasilij Savin.
The application consists of two main modules:
-
Backend (Spring Boot) – REST APIs, business logic, authentication, and persistence
- Backend package:
backend-path
- Backend package:
-
Frontend (React) – "customer" and "staff-facing" user interface
- Frontend package:
frontend-path
- Frontend package:
-
DataBase (MySQL)
- DB package:
db-structure
- DB package:
Each major backend module includes its own README for a more detailed explanation of its architecture, responsibilities, and implementation.
| Module | Documentation |
|---|---|
| Admin | src/main/java/com/raki/pos/admin/README.md |
| Authentication & Security | src/main/java/com/raki/pos/auth/README.md |
| Business | src/main/java/com/raki/pos/business/README.md |
| Dashboard | src/main/java/com/raki/pos/dashboard/README.md |
| Discount Policies | src/main/java/com/raki/pos/discount/README.md |
| Menu & Ingredient Categories | src/main/java/com/raki/pos/menu/README.md |
| Orders | src/main/java/com/raki/pos/order/README.md |
| Payments | src/main/java/com/raki/pos/payment/README.md |
| Products | src/main/java/com/raki/pos/product/README.md |
| Reservations | src/main/java/com/raki/pos/reservation/README.md |
| Staff Management | src/main/java/com/raki/pos/staff/README.md |
| Tax Policies | src/main/java/com/raki/pos/tax/README.md |
| Database Schema | src/main/resources/db/README.md |
Repository layout:
pos-backend/
└── src/
└── main/
├── java/
│ └── com/raki/pos/
│ ├── admin/
│ ├── auth/
│ ├── business/
│ ├── dashboard/
│ ├── discount/
│ ├── menu/
│ ├── order/
│ ├── payment/
│ ├── product/
│ ├── reservation/
│ ├── staff/
│ └── tax/
└── resources/
└── db/
- Create, edit, and delete products.
- Configure tax categories and product categories.
- Define ingredient categories (toppings, extras, sizes, etc.).
- Attach optional ingredients to products.
- Apply tax and discount policies automatically.
- Create and manage customer orders.
- Support both full and split payments.
- Split bills by payer, item, or payment method.
- Track tips and payment history.
- Automatically close orders once fully paid.
- Planned integration with Stripe to support secure online payment processing.
- Manage service bookings.
- Configure employees, services, and available time slots.
- Display daily and employee availability.
- Create, update, and cancel reservations.
- Manage Owners and Employees.
- Update staff roles and employment status.
- Enforce role-based permissions.
- Create reusable tax policies.
- Support STANDARD, REDUCED, and ZERO tax rates.
- Integrate tax calculations into product pricing.
- Switch between businesses.
- Manage multiple business environments.
- Access dashboards within the selected business context.
- Email/password authentication.
- JWT token generation and validation.
- Secure REST APIs.
The backend is built with Spring Boot and Spring Security.
Main components include:
- REST controllers
- Service layer
- DTOs
- SQL persistence using
JdbcTemplate - JWT authentication
- Security filters
- Transaction management
The frontend is built with React.
Features include:
- Menu management
- Product management
- Ingredient management
- Payment overview
- Split payment interface
- Reservation wizard
- Reservation management
- Staff administration
- Admin business selection
Implementation highlights:
- Functional React components
- React Hooks
- Fetch API
- JWT Bearer authentication
- Multi-step workflows for reservations and payments
- Java 17+
- Spring Boot
- Spring Web
- Spring Security
- JdbcTemplate
- Log4j2
- Jakarta Validation
- JWT
- React
- React Router
- CSS Modules / Custom CSS
- Fetch API
- JavaScript (ES6+)
Relational Database (MySQL) including tables such as:
This project was developed during an Erasmus+ exchange programme at Vilnius University in Vilnius, Lithuania.
The project combined academic study with practical software engineering experience through the development of a production-ready Full-Stack application.
- Full-Stack web development with React and Spring Boot
- REST API design
- Authentication and authorization
- Database design
- Business workflow implementation
- Software architecture
- International collaboration under the Erasmus+ programme
root/
├── README.md
├── pos-frontend/
├── pos-backend/
│ └── src/
│ └── main/
│ ├── java/
│ └── resources/
└── docs/
