Projexly
Production SaaS for freelancers and agencies — Kanban boards, client portals, team collaboration, and Stripe subscription billing under one roof.
Next.jsNestJSPostgreSQLStripeTypeScriptTailwind
Role
Full-Stack Developer
Team
Solo
Duration
Ongoing
Category
SaaS Product
Impact
Billing integration
Full Stripe
Plan tiers
FREE + PRO
Client portal
No login required
Problem
Freelancers and small agencies juggle project tracking, client updates, and billing across separate tools — creating friction, missed payments, and poor client trust.
Solution
Built a unified SaaS platform with role-based project management, a shareable client portal requiring no login, and automated Stripe-powered subscription tiers.
Objectives
- Build a real, shippable SaaS with end-to-end billing and auth
- Provide client-facing visibility without requiring client accounts
- Enforce plan limits programmatically via Stripe webhooks
Key Features
- Kanban boards with drag-and-drop task management and priority labels
- Client portal — secure, read-only project view with no account required
- Stripe billing with FREE / PRO plan enforcement (up to 3 or unlimited projects)
- Team collaboration with invite links and owner-controlled access approval
- Analytics dashboard tracking task throughput and project progress
- Inline task comments with role badges and activity feed
- Export reports to PDF and CSV
Architecture
- Next.js App Router frontend + NestJS REST API backend
- PostgreSQL (Neon) with Prisma ORM for typed data access
- Stripe Checkout + webhook-driven plan enforcement
- Resend for transactional email (Mailtrap in dev)
- Deployed on Vercel (frontend) + Railway (backend)
Challenges
- Syncing Stripe subscription state reliably via webhooks without race conditions
- Designing a client portal that feels polished without requiring authentication
- Keeping FREE and PRO limits enforced at both UI and API layers
Learnings
- How to architect a multi-tier SaaS with real billing from scratch
- Webhook idempotency patterns for payment event handling
- Balancing feature richness with a clean, non-overwhelming UX