DukanKonnect is a comprehensive service booking application designed to seamlessly connect local vendors and service providers with customers. This repository contains the backend infrastructure that powers the DukanKonnect client applications.
Built with Spring Boot, this backend provides robust, scalable APIs for the client applications, handling everything from user authentication and service discovery to booking management and notifications.
- Custom Authentication: Secure, stateless user authentication and authorization using JSON Web Tokens (JWT) integrated with Spring Security.
- Service Management: RESTful APIs for creating, browsing, and managing local services, vendors, and service categories.
- Booking Workflow: Comprehensive endpoints to handle the entire lifecycle of a service booking, allowing users and providers to track and update statuses (Pending, Completed, Cancelled).
- User Profiles: Endpoints to manage user profiles, roles, and vendor details.
- Push Notifications: Integrated with Firebase Cloud Messaging (FCM) via the Firebase Admin SDK to deliver real-time notifications to Android and iOS clients.
- Background Scheduling: Automated background jobs to manage booking states, reminders, or general database maintenance.
This backend employs a modular, layered architecture to separate concerns and ensure maintainability.
The application follows the classic multi-tier architecture pattern:
- Controllers: Expose REST API endpoints, validate incoming requests, and route them to appropriate services.
- Services: Encapsulate the core business logic, ensuring it remains decoupled from HTTP transport and database implementations.
- Repositories: Manage data persistence and retrieval using Spring Data JPA, providing an abstraction over the underlying database.
While Supabase is utilized as the underlying infrastructure, its responsibilities are strictly limited to data and file storage:
- Database: Uses PostgreSQL hosted on Supabase as the primary relational database. Spring Data JPA is used for Object-Relational Mapping (ORM) to securely and efficiently interact with the database.
- Cloud Storage: Supabase Cloud Storage is utilized for handling file uploads, such as user avatars and service images.
Authentication and authorization are completely handled internally within the Spring Boot application, intentionally bypassing Supabase Auth to maintain full control over the authentication flow.
- Spring Security: Secures all API endpoints, managing role-based access control and the authentication context.
- JWT (JSON Web Tokens): Used for stateless session management. The backend generates and verifies JWTs to authenticate user identity securely on every protected API request.
Real-time updates are critical for managing service bookings.
- Firebase Admin SDK: The backend uses the Firebase Admin SDK to dispatch real-time push notifications directly to the cross-platform clients, ensuring users are instantly notified about critical booking updates.
- Framework: Spring Boot (Spring Web MVC)
- Security: Spring Security, JJWT (io.jsonwebtoken)
- Database ORM: Spring Data JPA, Hibernate
- Database / Cloud Storage: PostgreSQL & Storage via Supabase
- External Services: Firebase Admin SDK for Push Notifications
- Language: Java 21 & Kotlin
- Build Tool: Maven