A production-ready MVP web application for a service-based marketplace connecting customers with professional freelancers across various categories (Design, Programming, Writing, etc.).
- Service-first: Focused on professional digital and creative services.
- Automated Matching: System connects requests with the best-suited freelancers automatically.
- Instant Quoting: Users get immediate price estimates based on service parameters and expertise levels.
- Simple: Abstracted complexity for non-technical users.
- Post service requests with detailed descriptions and reference files.
- Select expertise levels (Beginner to Pro) and project complexity.
- Get instant quotes and delivery timelines.
- Track hired projects through completion.
- Create professional profiles with bios, skills, and base rates.
- Manage availability and portfolio.
- Receive automatically matched jobs in a dedicated queue.
- Deliver work and manage revisions.
- Factors: service category, expertise level, complexity, urgency, and revisions.
- Returns instant estimates in cents precision with platform fee calculation.
- Automatically detects required service category from project descriptions.
- Matches jobs with available freelancers based on skills and ratings.
- Assigns jobs instantly to optimize delivery speed.
- Pending → Assigned → In Progress → Completed → Failed → Reassigned
- Frontend: Next.js 14 (App Router), Tailwind CSS
- Backend: Node.js with Next.js API Routes
- Database: PostgreSQL with Prisma ORM
- Authentication: JWT-based (MVP implementation)
printloco/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ │ ├── auth/ # Authentication endpoints
│ │ ├── freelancers/ # Freelancer profile management
│ │ ├── jobs/ # Service request and job management
│ │ └── orders/ # Order and payment processing
│ ├── components/ # Reusable UI components
│ ├── dashboard/ # Unified user dashboard
│ ├── make-request/ # Service request creation flow
│ ├── freelancer-profile/# Freelancer profile management UI
│ ├── job-queue/ # Freelancer work queue
│ ├── my-orders/ # Customer project tracking
│ └── order-confirmation/# Hire confirmation and details
├── lib/ # Utility functions and services
│ ├── prisma.ts # Prisma client singleton
│ └── services.ts # Pricing engine and matching logic
├── prisma/ # Prisma schema and migrations
│ └── schema.prisma # Database schema
├── public/ # Static assets
└── package.json # Dependencies and scripts
- id, email, name, role (CUSTOMER, FREELANCER, ADMIN), rating
- id, userId, bio, skills (JSON), portfolio (JSON), baseRate, availability, rating
- id, inputType (FILE/TEXT), fileUrl, description, serviceCategory, status, price, estimatedDays, customer/freelancer relations, requirements (JSON)
- id, jobId, paymentStatus, amount, userId
- Node.js 18+
- PostgreSQL database
- npm or yarn
- Clone the repository
git clone <repository-url>
cd printloco- Install dependencies
npm install- Set up environment variables
Create a
.envfile in the root directory:
DATABASE_URL="postgresql://username:password@localhost:5432/printloco"
JWT_SECRET="your-secret-key-here"- Run database migrations
npx prisma migrate dev- Start the development server
npm run dev- Open http://localhost:3000 in your browser
- Automation: System handles freelancer assignment to reduce friction.
- Speed: Instant quotes enable faster decision-making for customers.
- Simplicity: Clean, modern interfaces that hide marketplace complexity.
- Scalability: Data model allows adding new service categories without code changes.
Built with Gemini CLI