Back to Projects
Full-Stack & Cloud Platform
ReceiptHub
An intelligent expense and reimbursement platform with automated OCR receipt parsing, Telegram Bot submissions, and a Spring Boot management dashboard.
Project Overview
Developed for NTU's Internet & Web Applications Development module (IN6206), ReceiptHub digitizes corporate expense workflows. Employees snap receipt photos via Telegram Bot with automated OCR extraction, while finance administrators review, audit, and approve claims through a secure Spring Boot and Thymeleaf dashboard with event-driven notifications.
Key Architecture & Contributions
- Built an event-driven Spring Boot 3 (Java 21) backend with asynchronous Spring Events for real-time Telegram notifications.
- Integrated OCR.space API with Resilience4j circuit breakers for resilient automated receipt text extraction.
- Implemented S3-compatible cloud storage with MinIO and containerized the multi-service stack using Docker Compose.
- Configured role-based access control (ADMIN/EMPLOYEE), CSRF protection, and session security using Spring Security.
- Engineered responsive, server-rendered web dashboards using Thymeleaf, Tailwind CSS, and MySQL persistence.
ReimbursementService.java
Source Preview
@Service
@RequiredArgsConstructor
public class ReimbursementService {
private final ReimbursementRequestRepository repository;
private final ApplicationEventPublisher eventPublisher;
@Transactional
public ReimbursementRequest reviewRequest(Long id, Long adminId, RequestStatus status, String notes) {
ReimbursementRequest req = repository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Request not found"));
req.setStatus(status);
req.setReviewNotes(notes);
req.setReviewedBy(adminId);
req.setReviewedAt(LocalDateTime.now());
ReimbursementRequest saved = repository.save(req);
eventPublisher.publishEvent(new ReimbursementReviewedEvent(saved));
return saved;
}
}