How manishsuthar01/gopratle works
GoPratle is an event-requirement posting platform: organizers build a category-specific planner, performer, or crew request, review it, and submit it for a reference. The web app keeps a persisted draft and sends requests to an Express API, which validates, applies idempotency/business rules, and stores requirements in MongoDB. The README documents the main workflow and backend layering; source excerpts confirm key API calls and setup wiring. Some frontend component links and storage details rely on README documentation rather than sampled implementation.
Main entry points: RequirementWizard.tsx Requirement Wizard · app.ts Express Application · requirement.routes.ts Requirement Routes · requirement.service.ts Requirement Service
Components 31
Organizer Web App
- New Requirement Page
apps/web/app/requirements/new/page.tsx - Requirement Wizard
apps/web/components/requirements/RequirementWizard.tsx - Event Basics
apps/web/components/requirements/StepEventBasics.tsx - Category Details
apps/web/components/requirements/StepCategoryDetails.tsx - Planner Performer Crew Fields
apps/web/components/requirements/PlannerFields.tsx - Additional Details
apps/web/components/requirements/StepAdditionalDetails.tsx - Review And Edit
apps/web/components/requirements/StepReview.tsx - Persisted Draft Store
apps/web/store/requirement-store.ts - API Client
apps/web/lib/api-client.ts - Reference Confirmation
apps/web/app/requirements/success/[reference]/page.tsx
Shared Contracts
- Requirement Schemas
packages/shared/src/schemas/requirement.schema.ts - Domain Constants
packages/shared/src/constants/index.ts
Requirements API
- API Server Startup
apps/api/src/server.ts - Express Application
apps/api/src/app.ts - Request Middleware
apps/api/src/middleware/validate-request.ts - Requirement Routes
apps/api/src/modules/requirements/requirement.routes.ts - API Validation Schemas
apps/api/src/modules/requirements/requirement.validation.ts - Requirement Controller
apps/api/src/modules/requirements/requirement.controller.ts - Requirement Service
apps/api/src/modules/requirements/requirement.service.ts - Requirement DTOs
apps/api/src/modules/requirements/requirement.types.ts - Requirement Repository
apps/api/src/modules/requirements/requirement.repository.ts - Mongoose Models
apps/api/src/modules/requirements/requirement.model.ts - Database Connection
apps/api/src/config/database.ts - Environment Config
apps/api/src/config/env.ts - Error Handling
apps/api/src/middleware/error-handler.ts - API Response Format
apps/api/src/utils/ApiResponse.ts
Persistence
- Requirements Collection
apps/api/src/modules/requirements/requirement.model.ts - Idempotency Records
apps/api/src/modules/requirements/requirement.model.ts
Other components
- Organizer
- MongoDB
- Requirements HTTP API
Connections 33
- Organizer → New Requirement Page: starts request
- New Requirement Page → Requirement Wizard: renders
- Requirement Wizard → Event Basics: guides through
- Requirement Wizard → Category Details: guides through
- Category Details → Planner Performer Crew Fields: renders category fields
- Requirement Wizard → Additional Details: guides through
- Requirement Wizard → Review And Edit: guides through
- Requirement Wizard → Persisted Draft Store: reads and updates
- Persisted Draft Store → Organizer: persists draft
- Requirement Wizard → API Client: submits
- API Client → Requirements HTTP API: sends request
- Requirements HTTP API → Express Application: routes request
apps/api/src/app.ts - API Server Startup → Express Application: starts
apps/api/src/server.ts - API Server Startup → Database Connection: connects database
apps/api/src/server.ts - API Server Startup → Environment Config: reads config
apps/api/src/server.ts - Express Application → Requirement Routes: mounts routes
apps/api/src/app.ts - Express Application → Error Handling: installs handler
apps/api/src/app.ts - Express Application → API Response Format: uses responses
apps/api/src/app.ts - Requirement Routes → Request Middleware: validates requests
apps/api/src/modules/requirements/requirement.routes.ts - Requirement Routes → Requirement Controller: dispatches to
apps/api/src/modules/requirements/requirement.routes.ts - Requirement Routes → API Validation Schemas: uses schemas
apps/api/src/modules/requirements/requirement.routes.ts - Requirement Controller → Requirement Service: calls
apps/api/src/modules/requirements/requirement.controller.ts - Requirement Service → Requirement Repository: uses repository
apps/api/src/modules/requirements/requirement.service.ts - Requirement Service → Requirement DTOs: uses DTOs
apps/api/src/modules/requirements/requirement.service.ts - API Validation Schemas → Requirement Schemas: uses shared contract
apps/api/src/modules/requirements/requirement.validation.ts - Mongoose Models → Requirement Schemas: uses shared contract
apps/api/src/modules/requirements/requirement.model.ts - Requirement Schemas → Domain Constants: uses enums
packages/shared/src/schemas/requirement.schema.ts - Requirement Repository → Mongoose Models: persists through
apps/api/src/modules/requirements/requirement.repository.ts - Requirement Repository → Requirements Collection: reads and writes
apps/api/src/modules/requirements/requirement.repository.ts - Requirement Repository → Idempotency Records: reads and writes
apps/api/src/modules/requirements/requirement.repository.ts - Database Connection → MongoDB: connects
apps/api/src/config/database.ts - Requirement Service → Requirements Collection: creates requirements
- Reference Confirmation → Organizer: shows reference