Inspiration

Freelance projects often begin with a clear agreement, but managing the work after that can become complicated. Clients want to know what they are paying for, while freelancers want assurance that their work and payments are being handled fairly. Project discussions, deliverables, revisions and payments can easily become scattered across different platforms.

We wanted to build something that brings these parts together. That idea led to MilestoneOS — a platform where the progress of a project and the release of payments are connected through clearly defined milestones.

What We Built

MilestoneOS allows clients and freelancers to create project agreements, divide work into milestones, set payment amounts and track progress from a shared workspace. Freelancers can submit deliverables for review, while clients can approve the work or request revisions.

We also integrated PayPal to handle milestone payments, so the payment process is connected to the actual progress of a project rather than being treated as a separate activity. An AI-powered review feature adds another layer of assistance by helping clients analyse submitted work when they choose to use it. The final decision always remains with the client.

How We Built It

We developed the application using Next.js, React and TypeScript, with Supabase handling authentication, database operations and file storage. PayPal Sandbox was integrated for testing the payment lifecycle, including order creation, buyer approval and payment capture.

A major part of the development involved making sure that both participants could work on the same project while maintaining separate client and freelancer workspaces. We focused on keeping project information consistent across accounts and ensuring that important actions were reflected in the database.

Challenges and Learnings

One of our biggest challenges was getting the complete project workflow to work reliably across two different user roles. A project could be created successfully but still fail to appear correctly for the other participant, especially after refreshing or switching accounts. Solving this required careful attention to database relationships, user identity mapping and access permissions.

Payment integration was another learning experience. We discovered that creating a PayPal order and actually receiving a payment are two different steps. A payment should only be recorded as completed after the buyer approves the order and PayPal successfully captures it. Handling cancellations, failed payments and duplicate requests made this even more important.

Building MilestoneOS taught us that developing a functional product involves much more than getting individual features to work. Authentication, data consistency, payment verification and the experience of both users have to come together reliably. Our biggest takeaway was to focus not just on what a user sees on the screen, but also on what happens behind every action.

Built With

Share this project:

Updates

Submission history