Ship Log #3 | I shipped SoloDesk: A full Freelancer OS built for Pakistani freelancers
Freelancers are among the most active in the world. But most of them are managing clients on WhatsApp, tracking projects in their head, and writing invoices in chat messages. I built SoloDesk to fix t
Freelancers are among the most active in the world. But most of them are managing clients on WhatsApp, tracking projects in their head, and writing invoices in chat messages.
I built SoloDesk to fix that.
What is SoloDesk?
A complete freelancer workflow tool | client CRM, project pipeline with milestones, invoices, proposals, and an AI client communicator. All in one place.
The Feature That Makes It Different | Client Portal
Every project gets a unique public URL:
solodesk-967408890070.asia-south1.run.app/portal/[token]
Your client opens it. No login. No signup. They see:
Project progress bar (based on milestone completion)
Full milestone timeline with statuses
Updates feed you've posted
Invoice summary
A reply box to message you
One link. That's it.
AI Client Communicator
Built on Groq's llama-3.3-70b | generates professional messages for 10 common freelancer scenarios:
Late payment follow-ups
Scope creep responses
Project delivery notifications
Client ghosting follow-ups
Rate increase notices
And more...
Supports English and Urdu output. Because not every Pakistani freelancer is comfortable writing formal English.
The Stack
Next.js 14 App Router + Supabase + Groq AI + Google Cloud Run + Tailwind CSS.
Deployed on Cloud Run for the hackathon requirement. Mobile-first — bottom tab nav on mobile, sidebar on desktop.
What Was Hard
The Windows + gcloud builds submit bug
Spent 2 hours fighting a Windows file permission error with gcloud builds submit. The fix was switching to Docker locally | build the image with Docker, push to Google Container Registry, deploy from there. Bypasses the gcloud bug entirely.
Prompt engineering for Urdu
Getting proper formal Urdu (not Hinglish) required explicit instructions in the system prompt. Still something to improve in Phase 2.
TypeScript strict mode in Docker
Build passed locally but failed in Docker due to strict TypeScript errors I hadn't caught. Lesson: always run npm run build locally before pushing to Docker.
Live
🔗 Solodesk
Would love feedback especially on the portal UX and AI message quality. What would you add?
Originally published on Hashnode.