Role-based access control
Duit implements a secure, multi-role authentication system powered by Spring Security.User roles
Four distinct roles: ADMIN, USER, PROFESSIONAL, and MODERATOR
Secure authentication
BCrypt password encryption and session management
Users with a
ProfessionalProfile gain access to professional-specific features like viewing applications and managing jobs.Professional profiles
Professionals can create detailed profiles that showcase their expertise and set their rates.Profile requirements
Professional profiles require specific information to ensure trust and transparency:- Professional description: 50-2000 characters describing services and experience
- Hourly rate: Set between €5.00 and €500.00 per hour
- NIF (Tax ID): Required for legal compliance (format: 8 digits + letter)
- Service categories: Select multiple categories of expertise
Category specialization
Professionals can associate their profile with multiple service categories, making them discoverable by clients searching for specific services.Service request workflow
Clients can create detailed service requests that professionals can discover and apply to.Request lifecycle
Service requests move through a defined lifecycle with six states:Creating a request
When creating a service request, clients provide:- Title: 5-150 characters describing the service needed
- Description: 20-2000 characters with detailed requirements
- Category: Select the type of service required
- Service location: Use default address or specify a custom location
- Deadline: Optional deadline for service completion
Requests can be saved as drafts and published later, or published immediately upon creation.
Job application system
Professionals can submit applications to service requests they’re interested in fulfilling.Application components
Each application includes:- Message: Optional cover message (up to 1000 characters)
- Proposed price: The professional’s quote for the service
- Application status: PENDING, ACCEPTED, REJECTED, or WITHDRAWN
Application flow
Job management
Once an application is accepted, it becomes a ServiceJob that both parties can manage.Job states
Jobs progress through multiple states during their lifecycle:- CREATED: Job just accepted, ready to begin
- IN_PROGRESS: Professional is actively working on the job
- PAUSED: Work temporarily stopped
- COMPLETED: Job finished and ready for ratings
- CANCELLED: Job terminated before completion
Job controls
Both clients and professionals have controls to manage jobs:Professional actions
Start, pause, resume, and complete jobs
Client actions
Monitor progress and cancel if needed
Rating system
After job completion, both parties can rate their experience, building reputation on the platform.Bidirectional ratings
Duit implements a two-way rating system:- CLIENT_TO_PROFESSIONAL: Clients rate the quality of service received
- PROFESSIONAL_TO_CLIENT: Professionals rate their experience with the client
Rating components
Each rating consists of:- Score: 1-5 stars
- Comment: Optional text feedback (up to 500 characters)
- Status: PENDING, PUBLISHED, or HIDDEN
Reputation building
Location-based matching
Service addresses enable location-based service delivery and professional matching.Address handling
Each service request can use:- User’s default address: Stored in the user profile
- Custom service address: Specified for a specific request
Address structure
Addresses include:- Street address
- City
- Postal code (5 digits)
- Province
- Country (defaults to España)
Location indexing in the database enables efficient searching and filtering of requests by geographic area.
Admin dashboard
Administrators have access to platform management tools.Administrative features
Category management
Full CRUD operations for service categories
User oversight
View and monitor user accounts and activity
Statistics
Access platform metrics and usage data
Access logs
Track user authentication and activity
