Phase 1: MVP Submission - #116
Open
ashishshaiju wants to merge 2 commits into
Open
Conversation
…es (#51) * feat: initialize admin app * feat: initialize client app * feat: init server * feat: add CI workflows for backend, frontend, and global monorepo (#1) * feat: home page change * feat: initialize client and admin projects with React-Router, TanStack Query, and Axios. * feat:implement auth pages UI and validation * feat: implement user auth system * feat: restructure project server structure with authentication modules, email service, graceful shutdown utilities, and database configurations. * feat: add homepage UI * feat: implement password reset functionality and enhance authentication flow - Added ResetPasswordPage component with token validation and password reset logic. - Integrated toast notifications for user feedback during password reset. - Created AuthGuard and GuestGuard components to manage route access based on authentication state. - Implemented AuthContext for managing user authentication state and session verification. - Added useAuth and useToast hooks for easier access to authentication and toast functionalities. - Introduced ToastListener for handling global toast notifications based on custom events. - Updated routing to include guards for protected and guest-only routes. - Enhanced styling and loading states for better user experience during authentication processes. * fix: type errors * feat: create list your venue/add venue page * chore(server): add core utilities, env constants, and custom error helper * feat(server): implement database-driven RBAC models and middleware * feat(server): integrate RBAC authorization within authentication controllers * feat(server): implement venue module with review workflow and owner check * feat(client): update authentication pages and navbar navigation links * feat: Configure husky and lint-staged * chore: update pnpm version in packageManager * chore: make file paths in pre-push hook relative to workspace folders * chore(server): add core utilities, env constants, and custom error helper * feat(server): implement database-driven RBAC models and middleware * feat(server): integrate RBAC authorization within authentication controllers * feat(server): implement venue module with review workflow and owner check * feat(client): update authentication pages and navbar navigation links * feat: Configure husky and lint-staged * chore: update pnpm version in packageManager * chore: make file paths in pre-push hook relative to workspace folders * Update pnpm version from 9 to 10 * Simplify pnpm and Node.js setup in backend workflow Removed specific version settings for pnpm and Node.js. * fix: pnpm & node versions * fix: pnpm & node versions * fix(server): type errors * fix(client): type errors * chore: remove max-warnings and add no-warn-ignored to eslint commands * fix(client): implement page redirects * feat: add booking UI * feat: add booking UI * Feat(server): implement session management, token validation middleware, and token utilities * Feat(server): add transaction utility and wrap core auth actions in DB transactions * Feat(server): refactor venue module types, constants, and route validations * Feat(server): modularize routing for bookings and RBAC controllers * Feat(server): integrate winston logger and clean up console logs * Feat: minor configs and client venue form debug updates * fix: server project with dependencies and build scripts * feat(server): implement session management, and refactor controllers * feat: implement explore page UI * fix(client): Type errors * feat: implemnt my-booking UI * feat(pagination): add pagination middleware, types, and utilities * chore(scripts): migrate scripts from src/scripts/ to scripts/ * feat(auth): move session model into auth module, require refresh token on logout * feat(rbac): add requireRole middleware with role hierarchy support * feat(config): strengthen CORS origin parsing with HTTPS validation in production * chore(auth): use randomUUID for JTI, restrict refresh cookie path to /api/v1/auth * fix(auth): refactor controllers to use shared handleError utility * fix(server): fix global Express error handler to log unhandled errors * chore(email): add TTL index on email tasks, add retryAfter filter and writeConcern to worker * chore(dbutils): simplify transaction wrapper to return directly * chore(logging): add module context identifier to all logError calls * style: apply prettier formatting, fix EOF newlines, and clean up empty file * feat/client: add venue listing form with image upload, draft storage, and India data * feat/server: implement venue module with CRUD operations and validation * feat: fix formatting and prettier * feat(client): add My Venues page with card grid and status badges Add a full-featured My Venues page with: - API-driven venue list with skeleton loading, empty state, and error+retry - VenueCard component with cover image, status badges, location, rejection reason - VenueCardSkeleton animated loading placeholder - VenueStatus and MyVenue types for type safety - Removed old placeholder MyVenues.tsx * feat(client): add responsive sidebar with mobile bottom navigation Refactor ListSidebar for responsive layout: - Desktop sidebar visible on md+ screens only - New fixed bottom navigation bar for mobile with active state - Moved ListVenueLayout from layout/ -> pages/listVenue/ with responsive padding * feat(client): remove hardcoded margin from venue form steps and update routing Clean up layout dependencies: - Remove ml-72 (sidebar offset) from all three form step components - Update router imports to point to new layout location - Minor formatting fix in venueFormMapper * feat(client): add server-side draft persistence for venue wizard Add draft session management with server-side save/resume: - Save/load/clear typed DraftSession in sessionStorage - Fetch draft from server on mount (sessionStorage -> API -> blank) - Auto-save form progress to server on step navigation - Clear draft session on logout in AuthContext - Add upsertVenueDraft/getMyDraft/updateVenue service methods - Add VENUE_DRAFT and VENUE_UPDATE API endpoints * feat(server): add venue draft persistence APIs and model Add draft persistence for the venue creation wizard: - Add VenueDraftModel schema for storing in-progress form data - Add upsertDraft/getMyDraft controller functions - Add upsertDraft/getDraft/deleteDraft repository functions - Add PUT /draft and GET /draft routes - Add upsertDraft/getDraft service functions * feat(server): add validation error messages to venue refund schemas Improve venue validation: - Export refundRuleSchema for reuse - Replace z.coerce.number() with z.number() for stricter validation - Add custom error messages for daysBefore and refundPercentage * feat: implement feat updates * feat(client): add shared filter constants for price range and Kerala districts * feat(client): add useDebounce hook for input debouncing * feat(client): add venue filter types and pagination response interfaces * feat(client): add public venue fetching and configure array params serialization * feat(client): add useExploreVenues infinite scroll hook * feat(client): integrate explore page with API, filters, search, and infinite scroll * feat(client): update venue listing form to use shared district constants and remove state field * feat(server): add pagination types, utilities, and paginated response helper * feat(server): implement venue management module with filtering, and draft support * feat(server): implement venue management module with drafting, and administrative workflows * feat(client):Fix type errors * chore: update workspace configurations and development setup * refactor(server): update venue schema with nested structures and fields * feat(server): setup skeleton for venue availability module * refactor(client): update venue types, form mappers, and add venue steps to support nested schema * feat(client): modernize venue details page and card layout in explore page * feat(client): run types and formatter * feat(client): fix type errors * feat(client): restructure pages folder casing and booking layouts * refactor(client): migrate relative imports to @ path aliases * feat(client): register missing user bookings routes in router * feat(client): implement booking system with Razorpay webhooks, email notifications, and availability management * chore(server): update package dependencies, environment configurations, and routing initialization * feat(server): implement venue availability computation and time slot overlap validation * feat(server): implement slot locking mechanism and booking management module * feat(server): implement Razorpay webhook handlers and signature verification * feat(server): setup transactional email templates, queuing database, and background processing workers * refactor(server): extract HTML templates from EmailService to a dedicated EmailTemplateFactory * feat(server): implement Swagger API documentation and modularize route definitions across the application * feat(server): implement strict layered architecture, refactor routers, and add complex workflows for bookings/owners * feat(client): restructure authentication, venue details, and booking flow pages * feat(admin): implement modal system, route guards, and owner/superadmin dashboards * feat(admin): implement reusable detail panel components and admin dashboard pages for users, venues, bookings, and team management * feat: add husky pre-push hook to perform targeted type-checking and linting * feat(admin): add detailed admin panels for entities and implement workspace-aware pre-push validation hooks * feat: add Husky pre-push hook for incremental type checking and linting * fix: use ESM-compatible __dirname in vite.config, fix pre-push sed pattern * chore: add lint cmd to package.json - Github actions error @ .github\workflows\frontend.yml * fix(client): Razorpay payment types * fix(client): align page directory casing with router.tsx imports router.tsx imported ./pages/Explore, ./pages/Booking, and listVenue/{myVenue,addVenue}, but the committed directories were lowercase explore/booking and listVenue/{MyVenue,Addvenue}. Windows and macOS filesystems are case-insensitive so this resolved fine locally, but GitHub Actions' Linux runners are case-sensitive, failing the tsc build with TS2307 for all 8 paths. Renames pages directories to match router.tsx's casing exactly. * feat: add slot generator type definitions * feat(client): implement slot generation logic and preview panel component for venue creation * feat(server/admin): add env validation, RBAC seed check, admin booking filters, and dashboard role redirect * feat(server): add reviews, wishlist, and moderation modules with RBAC permissions * feat(server): improve booking system with duplicate prevention and owner review management * feat(server): enhance venue system with featured venues, geospatial pins, and ratings * feat(server): improve auth rate limiting and email worker reliability * feat(admin): add user ban system, moderation panel, and featured venues management * feat(admin): add owner reviews page and design system refresh * feat(client): implement wishlist, review submission, and major UI overhaul * feat(client): update types and services for coordinates, ratings, and featured venues * feat: implement venue interaction features including geolocation, wishlist sync, reviews, and authentication layout * fix: slot blocking mechanism and venue detail page * WIP: Backup commit * Refactor: Constants and fixes * Fix: Dynamic imports and fixes * feat: add venue moderation, deadline system, auth refactor, and contract snapshot types * feat: add venue moderation system with admin review workflow * feat: add inactivity and temporary block overlays to owner calendar * feat: support inactive venue state with UI and navigation changes - Server: approveReview now sets status to Inactive; offline booking guard for inactive venues - Admin: TenantLayout allows inactive venues + purple banner; VenueSelectorPage shows inactive badge and allows dashboard access (navigates to bookings); OwnerBookingsPage disables offline booking button with tooltip; DangerZone removed obsolete closing period - Sidebar: My Venues nav item, venue switcher allows inactive venues, sub-route tracking for venue switching preserves current page - Store: activeVenueStatus and lastVenueSubRoute tracking * fix: add cursor-pointer to button components and minor UI fixes * feat: make booking ID clickable in owner bookings table to open detail panel * feat: add review action dialogs and moderation store for admin review workflow * feat: add venue settings page with edit/view mode, Cloudinary upload, and danger zone * feat: add idempotency middleware with MongoDB-backed key store for safe retries * fix: rename lint-staged.config.js to .mjs for ESM compatibility * fix: pre-push hook whitespace bug and remove redundant tsc --noEmit * fix: add test steps to CI workflows and fix hooks - ci.yml: re-enable pnpm test after build - backend.yml: add test step after build - frontend.yml: add typecheck and test steps for both apps - .gitignore: add coverage/ to prevent committing test artifacts - lint-staged: rename config to .mjs for ESM compatibility - pre-push: fix file path whitespace bug, remove redundant tsc * fix: add test steps to CI workflows and fix hooks * feat: implement venue status workflow engine, transaction utility, and standardized linting configuration * fix: stabilize flaky webhook idempotency test and fix event override helper * feat: add Docker setup, venue/booking workflow engine, swagger doc alignment, and code cleanup - Add docker-compose.yml, Dockerfile, and .dockerignore for server containerization - Implement venue status workflow engine with transaction utility - Add idempotency middleware with MongoDB-backed key store - Fix swagger path mismatches, add missing query param docs, align request bodies - Add admin settings page, venue moderation, and owner review management - Apply consistent formatting across admin and client codebase * feat(client): add comprehensive vitest test suite with 125 tests - Exclude test files from production build tsconfig * feat(admin): add comprehensive vitest test suite with 86 tests * fix(admin): exclude src/tests from tsc build to fix pre-push * docs: add project documentation (setup, security, architecture, api, modules) * Add logos/favicons, fix reports analytics validation, uncomment zrok header, update email templates with logo * feat: implement owner repository tests and add environment configuration constants * feat: add PaymentStatus enum, schema field, and updated partial index * feat(client): add paymentStatus display to booking cards and details * Feat: Add in_progress status, booking status worker, admin table scroll * fix: type errors & add uiStatus enum * fix(idempotency): await create() before response to prevent race condition --------- Co-authored-by: MuneebMoosa <muneebmoosavv@gmail.com>
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.
Description
This PR merges the completed BookMyVenue platform from
qaintomain, encompassing the full MVP implementation across the entire monorepo.Includes:
Phase Category
Tech Stack
Type of Change
Checklist:
AI Disclosure
Screenshots / Screen Recording (if applicable)
N/A