Repository navigation
feat(api): add proposal management API (#216) - #227
Merged
SudiptaPaul-31 merged 3 commits intoOct 3, 2026
Merged
Conversation
- POST/GET /api/projects/:id/proposals and PATCH/DELETE /api/proposals/:id
- Freelancer-only create/edit/delete; project client drives review status
- One active proposal per freelancer per project (pre-check + partial
unique index, 409 on conflict)
- Status lifecycle submitted/updated/under_review -> accepted|rejected,
invalid transitions return 409
- Zod validation with field-level errors; { success, data, errors } envelope
- Paginated, status-filterable listing with per-project cache invalidation
- Migration 010_project_proposals.sql with project/freelancer indexes
|
@Sam-Rytech Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Collaborator
|
@Sam-Rytech resolve conflicts |
Resolve the add/add conflict in app/api/proposals/[id]/route.ts with the client proposal dashboard (Lumina-eX#213), which added the same path: - keep this PR's PATCH (content edit / status change) and DELETE handlers for project_proposals; - keep Lumina-eX#213's GET handler, resolveUser helper and imports unchanged. Both proposal modules coexist: @/lib/proposals (this PR) and @/lib/proposals/{db,service,types} (Lumina-eX#213).
Contributor
Author
|
@SudiptaPaul-31 Conflict fixed |
Collaborator
|
@Sam-Rytech ci failing |
The Lumina-eX#189 milestone state machine (merged in Lumina-eX#236) requires start_milestone (Funded -> InProgress) before submit_milestone. Six dispute tests still called submit_milestone straight after fund(), so submit returned InvalidMilestoneStatus (Lumina-eX#6): - test_arbiter_can_raise_dispute and test_dispute_events_are_emitted failed, breaking the `contracts` CI job on main and on every open PR. - test_release_blocked_while_disputed, test_refund_blocked_while_disputed, test_multiple_disputes_rejected and test_resolve_without_dispute_fails passed only by accident, panicking at submit instead of at the step they actually test. Add the missing start_milestone call to all six. `cargo test --workspace` in contracts/ now passes (escrow 29/29).
Contributor
Author
|
@SudiptaPaul-31 Check it out |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #216