HireCraft is a comprehensive domestic service marketplace connecting clients with skilled artisans (electricians, plumbers, etc.) for various tasks. The platform ensures secure transactions, real-time communication, and a seamless booking experience.
- User Management: Separate profiles for Clients and Service Providers (Artisans).
- Service Discovery: Clients can find artisans based on skills and ratings.
- Booking System: Secure booking flow with status tracking (Pending, In Progress, Completed, etc.).
- Secure Payments: Integrated with Stripe and Paystack for flexible payment options, including escrow and split payments.
- Real-time Messaging: WebSocket-based chat for instant communication between clients and providers.
- Reviews & Ratings: Trust-building system through verified user reviews.
- Notifications: Real-time updates on bookings and messages.
- File Management: Cloudinary integration for profile pictures and document uploads.
- Backend: Java 17, Spring Boot 3.4.5
- Database: PostgreSQL
- Migration: Flyway
- Security: Spring Security with JWT Authentication
- Payments: Stripe, Paystack
- Real-time: WebSocket (STOMP)
- Storage: Cloudinary
- Build Tool: Maven
- Java Development Kit (JDK) 17 or higher
- Maven 3.8+
- PostgreSQL 14+
The application requires a configuration file to run. Create a application.properties file in src/main/resources with the following settings:
# Server Configuration
server.port=8080
# Database Configuration
spring.datasource.url=jdbc:postgresql://localhost:5432/hirecraft_db
spring.datasource.username=your_db_username
spring.datasource.password=your_db_password
spring.jpa.hibernate.ddl-auto=validate
# JWT Security
# Ensure this key is long and secure
app.jwt-secret=your_super_secret_jwt_key_base64_encoded_preferred
app.jwt-expiration-milliseconds=86400000
# Cloudinary Configuration (File Uploads)
cloudinary.cloud-name=your_cloud_name
cloudinary.api-key=your_api_key
cloudinary.api-secret=your_api_secret
# Paystack Configuration (Payments)
paystack.test.secret.key=your_paystack_secret_key
paystack.base.url=https://api.paystack.co
# Stripe Configuration (Payments)
stripe.secret.key=your_stripe_secret_key
# Fee Configuration
hirecraft.payment.platform-fee-percentage=10
hirecraft.payment.currency=usd
hirecraft.payment.minimum-amount=10-
Clone the repository:
git clone <repository-url> cd HireCraft-SpringBoot
-
Set up the database: Create a PostgreSQL database named
hirecraft_db. -
Configure the application: Create
src/main/resources/application.propertiesusing the template above and fill in your credentials. -
Run the application:
./mvnw spring-boot:run
Or build the JAR:
./mvnw clean package java -jar target/Ecommerce-0.0.1-SNAPSHOT.jar
-
Access the API: The API will be available at
http://localhost:8080.
This project uses Flyway for database migrations. Migrations are located in src/main/resources/db/migration and will be applied automatically on startup.
- V1: Schema creation
- V2: Seed roles and permissions
- V3: Seed admin user (
admin@securetasker.com) - V4: Add location data
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.