Skip to content
CAI
Software that uses CAICheck a score

rajputomsingh/Fieldly

40.0

Weak · 21 September 2026

56.5k

lines of production code

TypeScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Fieldly is a land leasing marketplace platform that connects farmers with landowners through a structured application and auction system. It facilitates the entire lease lifecycle, from initial application and digital agreement signing to payment processing and dispute resolution, while enforcing strict role-based access control for users and administrators. The system provides dedicated dashboards for both parties to manage listings, track activity, and monitor financial metrics, supported by real-time notifications and a comprehensive admin panel for platform governance.

Features

Add Fieldly Finance landing page with interactive sections

A new landing page for Fieldly Finance has been added at /company/Finance, featuring a Hero section with animated investor avatars and navigation, a 'How It Works' step-by-step guide with scroll-triggered animations, a 'What We Do' section with background imagery and call-to-action, and an interactive FAQ accordion. The page includes skeleton loading states for improved perceived performance and uses Framer Motion for visual transitions.

app/company/Finance · high confidence

Added Clerk webhook handler for user lifecycle events

A new API route at app/api/webhooks/clerk/route.ts has been added to receive and process events from Clerk. This endpoint verifies incoming webhook signatures using Svix and synchronizes user data with the local database by creating, updating, or deleting user records in response to 'user.created', 'user.updated', and 'user.deleted' events. This enables automatic user provisioning and data consistency between the authentication provider and the application's database.

app/api/webhooks · high confidence

Added Saved Listings page with client-side data fetching

A new 'Saved Listings' page has been added at app/(protected)/saved, allowing users to view their bookmarked marketplace items. The component uses client-side rendering to fetch saved data from the /api/marketplace/saved endpoint, handling loading, error, empty, and signed-out states with appropriate UI feedback.

app/(protected)/saved · high confidence

Added real-time notification infrastructure and React Query provider

This change introduces the backend and client-side infrastructure required for real-time notifications using Pusher, alongside a new React Query provider for data fetching. The \app/api/pusher/auth/route.ts\ file implements a server-side authentication endpoint that validates user identity via Clerk and authorizes subscriptions to private channels (e.g., \private-user-{userId}\), ensuring users can only access their own real-time data. The \app/api/pusher/client.ts\ file provides a singleton client configuration that connects to Pusher using environment variables and points to the new auth endpoint. Additionally, \lib/react-query/providers.tsx\ adds a \QueryProvider\ component that configures \@tanstack/react-query\ with specific caching, retry, and error-handling behaviors, including automatic toast notifications for query and mutation errors.

app/api/pusher, lib/react-query · high confidence

Added script to manually assign super-admin role

A new \scripts/set-super-admin.ts\ utility has been added, allowing administrators to manually promote a user to the \SUPER\_ADMIN\ role by providing their email address as a command-line argument. This script updates the user's role to \SUPER\_ADMIN\ and sets the \isOnboarded\ flag to true in the database via Prisma, facilitating initial setup or role correction without requiring UI access.

scripts · high confidence

Added utility functions for notification grouping and time formatting

New helper modules have been added to lib/utils to support the presentation layer of the notification system. notificationHelpers.ts provides logic to group notifications by relative time periods (Today, Yesterday, This Week, etc.), map notification types to specific UI icons and color themes, and determine date overlaps. timeFormatter.ts introduces utilities for displaying relative time strings (e.g., '2 minutes ago') and formatting dates/times for user display. These changes enable the application to render notifications with consistent visual styling and readable timestamps.

lib/utils · high confidence

Admin dashboard layout and page added

Added the admin layout and main dashboard page. The layout enforces admin access via a server-side guard, redirects non-admins, and wraps content in a sidebar and dock provider. The dashboard page displays key metrics (users, listings, applications, revenue, disputes), allows filtering by date range, and shows recent activity and security alerts.

app/(protected)/admin · high confidence

Admin notification broadcast system with targeting and scheduling

Admins can now compose and send targeted notification broadcasts to farmers and landowners via a new admin page. The interface includes a compose form for setting the title, message, priority, and an optional action URL, with the ability to target all users, specific roles, or schedule the broadcast for a later time. A stats section displays current user counts, while history tabs allow admins to view sent notifications and manage (cancel) pending scheduled ones.

app/(protected)/admin/notifications · high confidence

Application management API endpoints and contact protection

This change introduces the core API endpoints for the applications feature, including listing, creating, reviewing, withdrawing, and checking application status. A key behavioral addition is contact information protection: the application creation endpoint now blocks submissions containing email addresses, phone numbers, or other contact details in the crop plan and message fields. The review endpoint delegates authorization and processing to ApplicationService, while the single-application endpoint fixes landowner relation handling and sanitizes contact info based on user roles (farmer, landowner, or admin).

app/api/applications · high confidence

Initial Prisma database schema for the platform

This change introduces the foundational Prisma schema defining the core data models for the application. It establishes the User entity with role-based access (including Farmer and Landowner profiles), onboarding tracking, and authentication integration via ClerkUserId. The schema also defines critical business entities such as LandListing, Bid, Lease, Dispute, and Notification, along with administrative models like AdminConfig, AdminSession, and AuditLog to support platform governance and security. This serves as the single source of truth for the PostgreSQL database structure.

prisma · high confidence

Initial marketplace page and layout structure

The marketplace section now includes a dedicated layout with metadata, a global error boundary for handling failures, and a loading state for listing details. The main marketplace page is implemented with client-side rendering to prevent hydration mismatches, featuring a header, active filter display, sidebar filters, and a listing grid with skeleton loading states.

app/marketplace · high confidence

Initial release of the Fieldly UI component library

This change introduces the foundational UI component library for the application, providing a consistent set of accessible, styled primitives for building the interface. The \components/ui\ directory now includes wrappers for Radix UI primitives (Accordion, AlertDialog, Avatar, Checkbox, Collapsible, Dialog, Dropdown Menu, Form, Label, Progress, Radio Group, Scroll Area, Select, Separator, Sheet, Slider) alongside custom-styled components (Alert, Badge, Button, Card, Input, Skeleton) and a motion wrapper for animations. These components establish the visual language and interaction patterns used throughout the product.

components/ui · high confidence

Initial scaffolding for the admin dashboard and permission system

This change introduces the foundational structure for the admin interface, including placeholder pages for analytics, disputes, and payments, alongside a new client-side authentication hook (\useAdminAuth\) and a permissions system (\useAdminPermissions\) that enforces role-based access control (Admin vs. Super Admin). It also adds configuration constants for user roles, listing/application/dispute statuses, and security settings, establishing the groundwork for future admin feature implementation.

(repo-wide) · high confidence

Introduce core application libraries for authentication, data access, and error handling

This change adds foundational utility libraries to the application. It introduces \lib/auth-utils.ts\ and \lib/getOrCreateUser.ts\ to manage Clerk authentication and synchronize user profiles with the database. A new \lib/prisma.ts\ module configures the Prisma client with specific transaction timeouts and health-check capabilities. To improve reliability, \lib/redis.ts\ implements a Redis client with circuit-breaker logic, health monitoring, and metrics. The update also adds \lib/errors.ts\ for centralized, sanitized API error handling, \lib/constants.ts\ for shared configuration (such as land types and bid increments), and various formatting utilities in \lib/format.ts\ and \lib/utils.ts\ for currency, dates, and UI classes.

lib · high confidence

Introduce digital lease agreement generation and signature workflow

This change adds the foundational infrastructure for managing digital lease agreements, including the ability to generate PDF contracts and handle their lifecycle. Users can now generate a formatted lease agreement PDF containing party details, land information, financial terms, and signature placeholders via the new \agreement-generator\. The system enforces a strict state machine for agreement transitions (e.g., from DRAFT to PENDING\_SIGNATURES, PARTIALLY\_SIGNED, SIGNED, VOID, or EXPIRED) to ensure valid workflow progression. Additionally, new API endpoints allow authorized users to sign agreements, retrieve the list of signatures for a given agreement, and verify the authenticity of specific signatures, integrating with Clerk for authentication and Prisma for status management.

app/api/agreements, lib/agreements · high confidence

Introduce global redirect state management for dashboard routing

Added a new DashboardContext that provides a global \isRedirecting\ state and a setter, allowing components to track and manage the status of post-authentication redirects. The context includes a \DashboardProvider\ that automatically resets the redirecting flag when the user reaches a final destination path (such as \/farmer/dashboard\, \/landowner/dashboard\, or onboarding routes), ensuring a clean UI state after navigation.

contexts · high confidence

Introduce land lease application management with contact protection

Users can now submit, track, and manage land lease applications through a new dedicated section. Farmers can create new applications with a form that enforces strict contact information protection—blocking emails, phone numbers, and social handles in messages and crop plans to keep communication on-platform. Landowners and farmers can view applications in a list with status-based tabs (Pending, Under Review, Approved, Rejected) and advanced filters for status, land type, location, and rent range. Detailed views allow farmers to edit or withdraw pending applications, while landowners can review and approve or reject them. The interface includes loading states, skeletons, and a privacy banner explaining the communication policy.

app/(protected)/applications · high confidence

Introduce production-grade marketplace UI components and auction bidding interface

This update adds a comprehensive suite of new React components to the marketplace interface, establishing the foundation for the new auction and listing experience. Key additions include the BidForm and BidHistory components, which enable users to place bids (including auto-bidding) and view real-time bid history with leader badges. The ListingCard component now features a production-ready card architecture with image carousels, quick-bid options, and map location buttons for directions. A new ListingDetail component provides a rich, animated view of individual listings with tabs for details, documents, and analytics. The interface is supported by robust filtering (ListingFilters, ListingFiltersSidebar) for price, size, and location, a paginated ListingGrid with infinite scroll, and utility components like SavedButton and VerifiedBadge. A new QRCodeShareModal allows users to share listings via QR code with copy and download functionality.

_app/marketplace/\components · high confidence

Introduce real-time notification system with interactive UI components

This change adds a comprehensive, real-time notification system to the application, featuring a draggable notification bell with an animated badge, a rich dropdown for viewing and managing alerts, and a dedicated preferences panel. Users can now receive live updates via Pusher and Zustand, with optimistic UI updates for marking items as read. The new UI includes role-specific empty states, date-grouped notification lists, infinite scroll support, and granular control over notification channels (email, push, SMS) and types.

components/shared/notifications · high confidence

Introduce server-side notification triggering with real-time Pusher updates and farmer matching

This change adds the core backend services for a new notification system. The \notificationTrigger.service.ts\ introduces server-side functions to create notifications and deliver them via Pusher for real-time updates. It includes logic to notify farmers about new land listings by matching them against specific criteria (land size, crop types, district, state), with a fallback to notify all onboarded farmers if no specific matches are found. It also adds support for notifying bidders and watchers of auction status changes. Supporting services include \notificationService.ts\ for standard CRUD operations (fetching, marking as read, deleting) via REST endpoints, \preferenceService.ts\ for managing user notification preferences, and \realtimeService.ts\ which handles the client-side Pusher connection and subscription management.

services · high confidence

Introduces Pusher client and server libraries for real-time updates

Adds dedicated client and server modules to initialize Pusher connections. The client module provides a singleton Pusher instance for the browser, configured with the public key, cluster, and an authentication endpoint, while the server module exposes a Pusher instance for backend operations using the app ID, secret, and TLS. This infrastructure enables the application to support real-time features such as notifications and marketplace feed updates.

lib/pusher · high confidence

Introduces new TypeScript type definitions for admin, applications, notifications, and profiles

This change adds a suite of new TypeScript interfaces to the \types/\ directory, establishing the data structures for several new or enhanced features. Specifically, it defines \AdminUser\, \AdminListing\, \AdminApplication\, \AdminDispute\, \AuditLog\, and \AdminStats\ to support the admin dashboard and oversight capabilities. It introduces \ApplicationWithRelations\, \CreateApplicationInput\, and \ApplicationFilters\ to model the new applications feature, including farmer-land relationships. A comprehensive \notification.types.ts\ file is added to support real-time notifications, defining types for various notification categories (e.g., LEASE, BID, PAYMENT), priorities, and user preferences. Additionally, \profile.ts\ and \land.types.ts\ provide detailed interfaces for user profiles, listing details, and land attributes, while \types/index.ts\ is updated to redirect marketplace types to a new location.

types · high confidence

Introduces new landing page components and dashboard routing logic

This change adds a suite of new UI components for the Fieldly landing page, including BlogSection, FieldlyBentoSection, FindLandHero, Hero, MultiModalMonitoring, and WhatWeDoSection, all featuring skeleton loading states and motion animations. It also introduces DashboardButton and MobileAuthSection to handle navigation, replacing the previous direct redirect to /post-auth with an API-based check via /api/post-auth-check to determine the correct destination (sign-in, onboarding, or dashboard). Additionally, a new UserStatusChecker component enforces this routing logic for authenticated users, and a ReleaseBadge component displays the current release version in the footer.

components · high confidence

Introduces server-side onboarding actions for farmer profiles

Adds a new \onboarding.actions.ts\ module that implements the core logic for the user onboarding flow. This includes functions to retrieve or create user records via Clerk authentication, assign user roles (Farmer or Landowner), and process farmer-specific onboarding data. The farmer onboarding action handles data sanitization, type conversion, and database updates within a Prisma transaction, ensuring that both the user profile and the associated farmer profile are created or updated atomically. It also logs the completion of onboarding to audit logs and sends a welcome notification.

actions · high confidence

Introduction of centralized notification state management

A new Zustand store has been added to manage application notifications, providing state for the notification list, unread counts, and a ringing indicator. This store exposes actions to add notifications, mark individual or all items as read, and handle optimistic updates with rollback capabilities, forming the foundation for the real-time notification system.

stores · high confidence

New API endpoint for fetching latest release metadata

A new API route at /api/release has been introduced to fetch the latest release information from GitHub. This endpoint retrieves data such as version, name, URL, and publication date, caching the result for 30 minutes to reduce external API calls. It includes a fallback release version in case the GitHub API is unreachable or returns invalid data, ensuring the application always has access to release metadata.

app/api/release, lib/types · high confidence

New API endpoint for managing saved marketplace listings

Users can now save, retrieve, and remove listings via the new /api/marketplace/saved endpoint. The endpoint supports GET to fetch a user's saved listings, POST to save a specific listing by ID, and DELETE to remove a saved listing, with input validation and proper authentication checks for all actions.

app/api/marketplace/saved · high confidence

New API endpoint for post-authentication user state validation

A new API route at /api/post-auth-check has been introduced to verify user authentication status and database presence after login. This endpoint checks if a user is signed in via Clerk, looks up their record in the database to determine their role and onboarding status, and returns specific flags (needsAuth, needsOnboarding) to guide the client's routing logic, replacing previous redirect-based approaches.

app/api/post-auth-check · high confidence

New API endpoint for retrieving individual landowner profiles

A new API route has been added at \app/api/profile/\[id\]/route.ts\ to fetch specific landowner profile data. This endpoint accepts a profile ID via the URL path, retrieves the corresponding data using the \getLandownerProfileData\ function, and returns the JSON response. It handles cases where the profile is not found by returning a 404 status and catches any server-side errors by returning a 500 status with an error message.

app/api/profile · high confidence

New Company About page with interactive sections

The Company About page now features a structured layout with distinct sections: a Hero area with investor trust signals, a Problem/Solution grid, a What We Do section with a CTA to the marketplace, a Bento-style feature grid, and an interactive FAQ accordion. Users can now explore Fieldly's value proposition through animated content and direct navigation to the marketplace.

app/company/about · high confidence

New Fieldly Insights landing page

A new landing page for Fieldly Insights has been added at the company insights route. It presents a hero section with calls to action to explore the dashboard or read reports, a bento-grid of insight categories (market intelligence, leasing trends, research, data, and agri-innovation), a 'What We Do' section with a background image and navigation to the dashboard, and an FAQ section explaining the purpose and data sources of the insights. The page includes loading skeletons and smooth entry animations.

app/company/insights · high confidence

New React hooks for marketplace, auctions, applications, and UI utilities

This change introduces a suite of new React hooks in the \hooks/\ directory to support core application features. The \useMarketplace\ hook manages the marketplace feed with debounced filtering, pagination, and request cancellation via \AbortController\. The \useAuction\ hook handles real-time auction data, including live bidding, time remaining, and Pusher-based event subscriptions for new bids and auction extensions. The \useApplications\ hook provides functionality for fetching, creating, and reviewing applications with React Query integration. Additionally, utility hooks are added: \usePusher\ for managing Pusher channel subscriptions, \useToast\ for wrapping the Sonner toast library, \useDebounce\ for delaying value updates, and \useMounted\ for tracking component mount status. The \useRelease\ hook fetches and caches application release metadata with a fallback version.

hooks · high confidence

New Redis health check endpoint with circuit breaker and error redaction

A new API route at /api/health/redis has been added to monitor Redis connectivity. This endpoint checks the Redis client initialization status and employs a circuit breaker to avoid unnecessary pings when the connection is known to be unstable. It returns detailed health status, including latency and connection state, while safely redacting internal error details in production environments to prevent information leakage.

app/api/health · high confidence

New Security Management Center for Admins

Administrators now have a dedicated Security Management page to monitor and control platform safety. This new interface provides a central dashboard with tabs for viewing security alerts (filterable by severity), managing IP whitelists, configuring rate limits for various endpoints, and monitoring or revoking active admin sessions. The page aggregates key metrics like threat scores and active session counts, giving admins immediate visibility into the system's security posture.

app/(protected)/admin/security · high confidence

New admin audit logs and settings pages

Admin users now have access to dedicated Audit Logs and Settings pages within the protected admin area. The Audit Logs page allows administrators to view, filter (by action, entity, and date range), and export activity records as CSV files. The Settings page provides a tabbed interface to manage platform configuration across General, Security, Notifications, and Payments categories, including toggles for 2FA and IP whitelisting.

app/(protected)/admin/audit-logs · high confidence

New admin dashboard API endpoints for analytics, applications, and listings management

Administrators now have access to a comprehensive set of backend endpoints for managing the platform. The new analytics endpoint provides aggregated statistics on users, listings, applications, and payments over configurable time ranges. A full application management system allows admins to view, review, and bulk-approve or reject applications, with automatic notifications sent to farmers and landowners upon status changes. Listings management includes bulk status updates with validation of state transitions and auction status controls that trigger notifications to watchers and bidders. Additionally, the system introduces dedicated endpoints for viewing audit logs, managing disputes, and handling admin authentication with IP validation and session management.

app/api/admin · high confidence

New admin dashboard UI components and layout system

This change introduces a suite of new React components for the admin panel, including a responsive AdminSidebar with collapsible dock behavior, an AdminGuard for role-based access control, and a PermissionGate for granular permissions. It also adds UI building blocks such as StatsCard for metrics, RecentActivity for logs, and SecurityAlert for real-time warnings, all coordinated by a new AdminDockContext for layout state management.

_app/(protected)/admin/\components · high confidence

New admin listings management interface with auction controls

The admin listings page has been rebuilt to provide a comprehensive management interface for listings and auctions. This update introduces a new UI with glass-morphism stats cards, filtering by status and type, and pagination. It adds specific controls for auction lifecycle management, allowing admins to set listings as Upcoming, make them Live for bidding, pause, or close auctions. The interface also supports bulk actions for approving, rejecting, or canceling listings, with defined state transitions and visual badges for both general listing statuses and specific auction states.

app/(protected)/admin/listings · high confidence

New admin users management interface

The admin panel now includes a dedicated users management page that allows administrators to view, filter, and manage user accounts. This interface supports filtering by role (Farmer, Landowner, Admin, Super Admin) and status (Onboarded, Pending), along with search and sorting capabilities. Administrators can perform bulk actions such as marking users as onboarded, verifying profiles, or changing roles, as well as ban individual users with a required reason. The page also integrates notification features, allowing admins to send quick notifications to single users or broadcast messages to selected groups.

app/(protected)/admin/users · high confidence

New dashboard data queries and media storage integration

Added new query functions in lib/queries to fetch optimized dashboard data for farmers (including application, lease, and payment stats) and landowners (including profile details, listing stats, and revenue metrics). The landowner query also integrates Google Maps URLs for land locations. Additionally, a new Supabase client configuration was added to lib/supabase/server.ts to support media storage for land images.

lib/queries · high confidence

New dedicated auction page with real-time bidding interface

A new \/auction\ route has been added to the marketplace listing detail section, providing a dedicated interface for live bidding. This change introduces a server-side page that fetches and serializes auction data (converting Prisma Decimal types and dates for client consumption) and renders a new \AuctionRoomClient\ component. The client component enables users to view live auction status, current bid amounts, time remaining, and bid history, while allowing them to place bids with validation against minimum increments. Supporting files include a skeleton loader for the auction view, a standard loading spinner, and an error boundary to handle failures gracefully.

app/marketplace/listings · high confidence

New farmer dashboard with profile, stats, and activity tracking

The farmer dashboard has been redesigned with a new layout and components. Users now see a hero header with a notification bell, a saved listings button with a tooltip, and an export button. A stats grid displays active applications, leases, recommended lands, saved listings, and upcoming payments with animated counters and trend indicators. A profile card shows farming details like primary crops, experience, required land size, lease duration, farming type, and irrigation needs, along with a profile strength meter. Quick actions provide direct links to find land, new applications, applications, leases, messages, schedule, bids, and reviews. A recent activity feed tracks applications, leases, payments, messages, and bids with filtering options. The layout enforces role-based access, redirecting non-farmers or unonboarded users appropriately.

app/(protected)/farmer · high confidence

New hooks for managing, tracking, and receiving real-time notifications

This change introduces a suite of React hooks in the \hooks/notifications\ directory to handle the full lifecycle of user notifications. \useNotifications\ provides paginated retrieval of notification history, while \useMarkAsRead\ and \useNotificationCount\ manage read status and unread totals with optimistic UI updates via React Query. \useNotificationPreferences\ allows users to configure email, push, and SMS settings for various notification types. Additionally, \useRealtimeNotifications\ establishes a live subscription to push new alerts immediately, updating the UI and displaying toast notifications as they arrive.

hooks/notifications · high confidence

New insights dashboard with personalized welcome header

Users now have access to a new insights dashboard located at the \/insights/dashboard\ route. This page features a personalized welcome header that greets the user by name and provides quick actions to export data or add new land records. The layout includes a basic authentication guard that redirects unauthenticated users to the sign-in page, and the header component includes a brief loading state to improve perceived performance.

app/(protected)/insights · high confidence

New institutional investor landing page

A new page at /company/institutional has been added for institutional investors, featuring a hero section with a call-to-action to start listing land, a bento-grid component highlighting key investment features (verified operator network, digital leases, performance tracking, yield model, and portfolio layer), and an interactive FAQ section addressing institutional use cases.

app/company/institutional · high confidence

New lease lifecycle, agreement signing, and auction settlement services

This change introduces a suite of new backend services in lib/services that formalize the lease and auction workflows. The LeaseService implements a strict lifecycle state machine (DRAFT through COMPLETED/RENEWED) with defined transition actors and financial calculations (rent, platform fees, security deposits). The AgreementService and SignatureService enable the creation, versioning, and cryptographic signing of lease agreements, enforcing role-based access for farmers and landowners. Additionally, the ApplicationService adds contact information protection by blocking submissions containing email addresses, phone numbers, or social media handles. Finally, the AuctionSettlementService and auction-cron job automate the settlement of ended auctions, atomically transitioning bids, creating leases from winning bids, and notifying users.

lib/services · high confidence

New lease management and agreement API endpoints

This change introduces a set of new API routes under /api/leases to manage lease lifecycles and agreements. Users can now list leases with pagination and lifecycle status filtering, retrieve individual lease details including related land, farmer, owner, and payment schedules, and transition lease states through a validated state machine. Additionally, new endpoints allow users to view agreement details, retrieve agreement document URLs, create new agreements from leases, and view agreement version history. All endpoints enforce authentication and role-based authorization via Clerk and the LeaseService.

app/api/leases · high confidence

New marketplace feed API endpoint

A new GET endpoint at /api/marketplace/feed has been introduced to serve the marketplace listing feed. This API accepts query parameters for filtering (such as search terms, price ranges, land type, location, and verification status) and pagination, returning structured results via the marketplace service. This change establishes the backend data layer for the marketplace feed system, enabling client-side components to fetch and display listings with real-time updates and sorting capabilities.

app/api/marketplace/feed · high confidence

New modular user details page for the admin panel

The admin panel now features a dedicated user details view at /admin/users/\[userId\], replacing the previous placeholder with a structured layout. This page displays a user profile card (showing avatar, contact info, role, and status), a stats grid (counting applications, listings, leases, and payments), and activity tabs (currently showing a timeline of actions, with placeholders for applications, listings, leases, and payments). It includes a skeleton loading state and handles 'user not found' scenarios. The implementation is modular, splitting the UI into separate components (UserProfileCard, UserStatsGrid, UserActivityTabs, UserDetailsSkeleton) and defining specific TypeScript types for user data and activity items.

app/(protected)/admin/users/\[userId\] · high confidence

New notification management API endpoints

Added a comprehensive set of API routes for managing user notifications, including listing with pagination, creating new notifications, marking individual or all notifications as read, retrieving unread counts, and managing notification preferences (email, push, SMS). The implementation correctly maps Clerk user IDs to internal database user IDs for all operations and enforces user ownership checks to ensure users can only access their own notifications.

app/api/notifications · high confidence

New profile page with stats, listings grid, and lease application flow

The profile page for a specific user (app/profile/\[id\]) has been rebuilt with a new layout and enhanced functionality. The page now displays a ProfileHeader that includes user details, role badges, and a 'Request Lease' button for farmers, which opens a dialog to select available land and start an application. A new StatsBar component visualizes key metrics like total listings, active leases, revenue, rating, and response rate. The ListingsGrid component presents the user's active listings with sorting options (latest, price, bids, ending soon) and animations. A ProfileSkeleton component provides loading states. The page fetches profile data, current user role, and available lands to support these features.

app/profile · high confidence

New server-side authentication, authorization, and security infrastructure

This change introduces a comprehensive set of server-side utilities in \lib/server\ to handle authentication and security. It adds an admin guard (\admin-guard.ts\) that enforces role-based access control (checking for ADMIN or SUPER\_ADMIN roles) using Clerk for session management and Prisma for user data. A new onboarding flow is supported via \dashboardGuard.ts\ and \getUserGuard.ts\, which redirect users to specific onboarding pages if they lack a role or have not completed onboarding. Security is enhanced with \session-manager.ts\ for creating and validating hashed admin sessions, \ip-validator.ts\ for IP whitelisting, \rate-limiter.ts\ for request throttling, and dedicated logging modules (\audit-logger.ts\, \security-logger.ts\) that record admin actions and critical security events (including webhook alerts for CRITICAL severity).

lib/server · high confidence

New server-side dashboard sections for activity and applications

Added server components for the landowner dashboard that fetch and format data directly from the database. The ActivitySection retrieves the latest 10 audit logs, mapping actions to activity types and extracting amounts from metadata. The ApplicationsSection fetches the 5 most recent applications for the landowner's lands, formatting proposed rents as INR currency and including farmer details and land titles.

_app/(protected)/landowner/dashboard/\server · high confidence

New shared CTA component and Error Boundary utility

The shared components library now includes a new CTA (Call to Action) component that displays a promotional section for Fieldly with a primary 'Start Using Fieldly' button redirecting to /post-auth and a secondary 'Learn More' link, featuring loading skeletons and motion animations. Additionally, an ErrorBoundary component has been added to provide a reusable React class-based error boundary with a default user-friendly error UI (including 'Go Back', 'Try Again', and 'Home' actions) and helper utilities like a Higher-Order Component (withErrorBoundary) and a hook (useErrorHandler) for easier integration.

components/shared · high confidence

New validation schemas for farmer and landowner onboarding and application submissions

The application now enforces structured validation for new user onboarding and rental applications. Farmer onboarding requires a 10-digit phone number, location details, crop preferences, farming experience, and land size requirements. Landowner onboarding collects contact info, a bio, ownership type, payment/contact preferences, and mandatory acceptance of terms and privacy policies. Additionally, rental application submissions validate land ID, rent limits, duration, and crop plans, while explicitly blocking contact information (phone, email, social links) in free-text fields like crop plans, messages, and review notes to prevent off-platform communication.

lib/validations · high confidence

Production Docker infrastructure and Clerk authentication middleware

The application now supports containerized deployment with dedicated Dockerfiles and Compose configurations for both development (with hot-reload and local Postgres/Redis) and production (read-only, health-checked, with Prisma standalone runtime). Additionally, a new middleware enforces authentication via Clerk, restricting access to private routes while allowing public access to sign-in, sign-up, marketplace, and API endpoints.

(repo-wide) · high confidence

Redesigned admin applications interface with glass UI and bulk actions

The admin applications page has been rebuilt with a new component-based structure and a glass-morphism visual theme. Admins now have a dedicated filter bar to search by land, farmer, or location, and filter by status or sort by date, rent, or duration. The main view displays summary statistics (total, pending, approved, rejected, and total value) in animated cards, followed by a paginated table of applications. Each row shows land details, farmer and landowner info, proposed rent, and status, with a dropdown menu for individual actions. A key addition is the ability to select multiple applications for bulk approval, rejection (with optional notes), or deletion, managed through dedicated confirmation dialogs.

app/(protected)/admin/applications · high confidence

Redesigned land detail page with enhanced UI and new management features

The land detail page has been completely rebuilt with a premium UI, featuring animated headers, skeleton loading states, and a capsule-style layout for stats, features, and descriptions. Users can now view detailed land statistics (size, soil, water, rent), toggleable feature availability (irrigation, electricity, etc.), and manage associated documents, soil reports, leases, and marketplace listings directly on the page. Additionally, a new land management action allows owners to safely archive lands with active listings or leases, or delete them if they are inactive, while enforcing edit limits on active listings.

app/(protected)/landowner/land · high confidence

Redesigned landing page and new error/unauthorized pages

The app now features a fully redesigned landing page (app/page.tsx) with new sections including Hero, FieldlyBentoCards, MultiModalMonitoring, and an FAQ accordion, replacing the previous default Next.js template. Additionally, new user-facing pages have been added for error handling: a custom 404 page (app/not-found.tsx) with a 'Parcel Not Found' theme and an unauthorized access page (app/unauthorized/page.tsx). The global layout (app/layout.tsx) has been updated to integrate Clerk authentication, React Query, and a notification initializer, while global styles (app/globals.css) now enforce a consistent design system with hidden scrollbars and stable layout shifts.

app · high confidence

Redesigned landowner dashboard with new activity tracking and navigation

The landowner dashboard has been rebuilt with a suite of new UI components to improve usability and data visibility. A new CapsuleTabs navigation system allows users to switch between Overview, My Lands, Applications, and Active Leases, with badge indicators for pending items. The dashboard now features a dedicated ActivityFeed that displays recent applications, leases, and payments with relative timestamps and currency formatting, alongside a RevenueChart for visualizing income trends. A new LandsTable provides sortable, searchable, and filterable views of land listings with archive capabilities. The header has been enhanced with a notification bell, a saved listings button with a tooltip, and an export option, while skeleton loaders have been added to ensure smooth loading states across all new sections.

_app/(protected)/landowner/dashboard/\components · high confidence

Structured onboarding flows for farmers and landowners

Users can now complete a guided, multi-step onboarding process tailored to their role. Farmers provide basic contact details, farming specifics (crops, experience, type), land requirements (size, lease duration), and infrastructure preferences before reaching a success screen. Landowners supply contact information, ownership details, and preferences for payment frequency and communication methods. A central layout enforces authentication via Clerk, checks the user's onboarding progress in the database, and redirects users who have finished to their respective dashboards or restricts access to the onboarding flow itself.

app/(onboarding) · high confidence

Removals

Removed default Next.js public assets

The default placeholder SVG images provided by the Next.js starter template (file.svg, globe.svg, next.svg, vercel.svg, and window.svg) have been removed from the public directory. This cleanup eliminates unused static assets, reducing the final bundle size and preventing potential 404 errors if these specific template icons were referenced in the application.

public · high confidence

Behavioural changes

Admin listings page modularized with new UI components and glassmorphism stats

The admin listings interface has been refactored into a set of reusable components to improve maintainability and update the visual design. The new layout includes a \ListingFilters\ component for searching, filtering by status/type, and bulk actions (approve, reject, change status), alongside a \ListingsTable\ with \ListingRow\ for detailed item display and row-level actions. A new \StatsCards\ component replaces previous mini-stats with a glassmorphism design showing total, active, pending, and revenue metrics. Pagination is handled by \PaginationControls\, and complex workflows are managed via extracted dialogs: \ReviewDialog\ for approve/reject, \StatusChangeDialog\ for single status updates, \BulkStatusDialog\ for mass status changes, and \AuctionStatusDialog\ for auction-specific actions.

_app/(protected)/admin/listings/\components · high confidence

Admin user management UI refactored with glassmorphism design and notification capabilities

The admin users list has been rebuilt using a component-driven structure featuring a premium glassmorphism aesthetic (frosted glass, rounded corners, and subtle shadows). The new interface includes a dedicated UserStatsCards component displaying total users and role breakdowns (Farmers, Landowners, Admins), a UserFilters component for searching and filtering by role/status, and a UsersTable with UserRow components that display user details, roles, and activity counts. The update introduces bulk action support (ban/delete) via dialog components and integrates a new notification system, allowing admins to send targeted or broadcast notifications with optional action URLs directly from the user list.

_app/(protected)/admin/users/\components · high confidence

Consolidated cron endpoint for auction settlement and health checks

The application now uses a single cron endpoint at /api/cron to handle both auction settlement and database/Redis health checks, complying with Vercel Hobby plan limits that restrict cron jobs to one. This new route runs auction settlement on every invocation and performs health checks once per day, requiring authentication via a Bearer token if CRON\_SECRET is configured.

app/api/cron · high confidence

Database schema overhaul for marketplace, auctions, and admin governance

The database schema has been significantly expanded and hardened to support the new marketplace and auction capabilities. This includes new tables for auction events, listing analytics, market subscriptions, and scheduled notifications, alongside new admin security models like AdminSession, AdminAction, and Dispute tracking. Financial precision is improved by casting monetary columns (bids, rents, payments) from DoublePrecision to Decimal types, and the AdminSession table now stores token hashes instead of raw tokens for better security. Additionally, the schema introduces fields for land listing governance (archiving, edit counts), lease execution lifecycles, and Razorpay payment integration, while adding numerous indexes to optimize feed sorting and query performance.

prisma/migrations · high confidence

Enforced onboarding flow for landowner dashboard access

The landowner dashboard now requires users to complete a specific onboarding step before accessing protected content. The layout checks the user's role and onboarding status, redirecting incomplete users to either a general role selection page or a role-specific onboarding path (e.g., /onboarding/landowner) if they have not yet finished the setup process.

app/(protected)/landowner · high confidence

Marketplace service layer refactored with caching, eventing, and query optimization

The lib/marketplace module has been restructured into a dedicated service layer to improve reliability and performance. A new caching system (lib/marketplace/cache.ts) has been introduced, utilizing Upstash Redis with an in-memory fallback to store feed, listing, and auction data with specific TTLs. Real-time updates are now handled via a Pusher-based event service (lib/marketplace/events.ts) that broadcasts bid and auction status changes. The core logic in lib/marketplace/service.ts now orchestrates these components, including performance instrumentation and view tracking. Additionally, database access is optimized through new query builders (lib/marketplace/queries.ts) that use Prisma selects to reduce payload size, and data is standardized via new DTOs and transformers (lib/marketplace/transformers.ts).

lib/marketplace · high confidence

Migrate media storage to Supabase and add lease agreement support

Media storage for land images and lease agreements has been migrated to Supabase. The system now uses Supabase Storage buckets for uploading land images (via \uploadLandImages\ and \uploadLandImage\) and managing lease agreement PDFs (via \LeaseAgreementStorage\), including generating signed URLs for secure access.

lib/storage · high confidence

New branded authentication and onboarding flow

The sign-in and sign-up pages now feature a custom, animated UI with brand messaging and imagery, replacing the default Clerk widgets. Upon completing authentication, users are routed to a new post-auth page that synchronizes their Clerk identity with the local database and directs them to the appropriate onboarding steps (role selection, farmer, or landowner) or their respective dashboard based on their profile status.

app/(auth) · high confidence

New landowner dashboard with unified data and sectioned views

The landowner dashboard now features a redesigned layout that consolidates key metrics into a single optimized server fetch. Users see a hero header, stats cards, and a revenue chart, alongside quick actions and sections for recent applications and activity. The page also includes dedicated, tab-accessible views for managing lands (with an 'Add Land' button) and reviewing all applications, as well as a section for active leases that links to a full list or displays a placeholder if none exist.

app/(protected)/landowner/dashboard · high confidence

Redesigned header with role-specific navigation and Clerk authentication

The site header has been replaced with a new architecture that distinguishes between authenticated and unauthenticated states. For logged-in users, the header now features a 'Dashboard' button and a Clerk UserButton, while unauthenticated users see navigation links tailored to their role: 'Farmers' (with links to Agri Loans, Green Loans, and Carbon Farming) and 'Institutional Investors' (with links to Investment Opportunities, Portfolio Management, and Impact Reporting). Additional sections include Resources (News, MRV Technology, FAQ) and Company links (About, Careers, Contact, Fieldly Finance). The implementation uses a visibility provider to manage smooth transitions between the auth and main header states, ensuring a consistent experience across the application.

components/header · high confidence

Refactored marketplace API into dedicated REST endpoints

The marketplace API has been restructured from a monolithic route into specific, dedicated endpoints for distinct operations. Users can now interact with separate routes for listing details (\/api/marketplace/\[id\]\), auction room data (\/api/marketplace/\[id\]/auction\), placing bids (\/api/marketplace/\[id\]/bids\), and administrative auction settlement (\/api/marketplace/\[id\]/settle\). This change improves API clarity and introduces specific validation for bid amounts and farmer IDs, while restricting settlement actions to administrators.

app/api/marketplace/\[id\] · high confidence

Server-side notification actions with URL validation and correct user ID mapping

Added server actions for creating, retrieving, and marking notifications as read. The create action validates that action URLs start with allowed prefixes (e.g., /leases, /applications) to prevent drift. The mark-all-as-read action now correctly maps the Clerk user ID to the database user ID before updating notifications, ensuring the operation targets the correct user's records.

actions/notifications · high confidence

Stabilized land creation API with robust authentication and validation

The landowner lands API route now enforces strict Clerk authentication for POST requests, ensuring only verified users can create listings. It properly handles FormData input, including parsing JSON arrays for crop types and previous crops, and validates that required fields like title and size are present. The route also ensures a complete landowner profile exists before proceeding, and wraps the creation of land records, listings, and terms in a database transaction to maintain data consistency. Consistent JSON responses are returned for both success and error cases.

app/api/landowner · high confidence

Fixes

7 commits (5 fixes) fixing public/onboarding

A fix in public/onboarding — 7 commits (5 fixs), 44 files.

public/onboarding · medium confidence · unverified

Dependencies

Major dependency overhaul and project rebranding to Fieldly

The project has been renamed to Fieldly and its dependency tree has been significantly expanded and updated. Core libraries have been upgraded, including Next.js (16.1.6 to 16.2.11), React and React DOM (19.2.3 to 19.2.8), and Prisma (6.19.2). New dependencies have been added to support authentication (@clerk/nextjs), UI components (@radix-ui/\*, shadcn/ui ecosystem), data visualization (recharts), state management (zustand, @tanstack/react-query), and infrastructure (Supabase, Upstash Redis, Pusher). Development tooling has also been enhanced with the addition of Husky for git hooks, lint-staged, Prettier, and Prisma CLI, while the dev script now enables Turbopack for faster development builds.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 43 → 40 (-2.6)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 70 → 59 (-11.5)
  • Architecture 99 → 95 (-3.8)
  • Maturity 65 → 66 (+1.4)
  • Readiness 20 → 19 (-0.3)
  • Security 67 → 73 (+6.0)
  • Accessibility 52 → 48 (-3.2)

Resolved (32)

  • Build action pinned to a mutable branch
  • Change coupling clique: onboarding.actions.ts, page.tsx, page.tsx (actions/onboarding.actions.ts)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High vulnerability: [GHSA redacted] (pnpm-lock.yaml)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 12 more

New (317)

  • AdminSidebar.AdminSidebar (cognitive 37) (app/(protected)/admin/_components/AdminSidebar.tsx)
  • AdminSidebar.AdminSidebar (cyclomatic 38) (app/(protected)/admin/_components/AdminSidebar.tsx)
  • AlertsPanel.AlertsPanel (cyclomatic 16) (app/(protected)/admin/security/_components/AlertsPanel.tsx)
  • AuctionRoomClient.AuctionRoomClient (cognitive 23) (app/marketplace/listings/[id]/_components/AuctionRoomClient.tsx)
  • AuctionRoomClient.AuctionRoomClient (cyclomatic 24) (app/marketplace/listings/[id]/_components/AuctionRoomClient.tsx)
  • AuthHeader.AuthHeader (cognitive 30) (components/header/AuthHeader.tsx)
  • AuthHeader.AuthHeader (cyclomatic 34) (components/header/AuthHeader.tsx)
  • BroadcastDialog.BroadcastDialog (cognitive 18) (app/(protected)/admin/users/_components/dialogs/BroadcastDialog.tsx)
  • BroadcastDialog.BroadcastDialog (cyclomatic 18) (app/(protected)/admin/users/_components/dialogs/BroadcastDialog.tsx)
  • BroadcastForm.BroadcastForm (cognitive 36) (app/(protected)/admin/notifications/_components/BroadcastForm.tsx)
  • BroadcastForm.BroadcastForm (cyclomatic 35) (app/(protected)/admin/notifications/_components/BroadcastForm.tsx)
  • BroadcastHistory.BroadcastHistory (cognitive 23) (app/(protected)/admin/notifications/_components/BroadcastHistory.tsx)
  • BroadcastHistory.BroadcastHistory (cyclomatic 21) (app/(protected)/admin/notifications/_components/BroadcastHistory.tsx)
  • BulkReviewDialog.BulkReviewDialog (cognitive 21) (app/(protected)/admin/applications/_components/dialogs/BulkReviewDialog.tsx)
  • BulkReviewDialog.BulkReviewDialog (cyclomatic 20) (app/(protected)/admin/applications/_components/dialogs/BulkReviewDialog.tsx)
  • ClassTooLong: AuthHeader (components/header/AuthHeader.tsx)
  • ClassTooLong: ListingDetail (app/marketplace/_components/ListingDetail.tsx)
  • ClassTooLong: MainHeader (components/header/MainHeader.tsx)
  • Critical vulnerability: [GHSA redacted] (pnpm-lock.yaml)
  • DashboardButton.DashboardButton (cognitive 20) (components/DashboardButton.tsx)
  • …and 297 more

Changes since last survey

  • 43 commits — 30 feature/other, 13 fixes

By area

  • (repo) — 11 commits
  • app/api — 10 commits
  • (root) — 7 commits
  • lib/services — 3 commits
  • prisma/migrations — 3 commits
  • app/(protected) — 2 commits
  • lib/prisma.ts — 2 commits
  • actions/notifications — 1 commit
  • app/marketplace — 1 commit
  • app/profile — 1 commit
  • docs/vanguard — 1 commit
  • prisma/schema.prisma — 1 commit

Notable commits

  • fix: chore(vanguard): fix turbopack workspace root
  • fix: fix(auction): close cron race with conditional status transition
  • fix: fix(deploy): align Next.js with Vercel build pipeline
  • fix: fix(lease): use landowner as lease owner; enforce transition and review authorization
  • fix: fix(notifications): validate actionUrl prefixes at write time
  • fix: fix(prisma): add transaction timeout options for signature workflow
  • fix: fix(prisma): backfill AdminSession token hashes
  • fix: fix(prisma): handle existing LandListing status index
  • fix: fix(prisma): handle missing LandListing status index
  • fix: fix(saved): correctly read saved listings response
  • fix: fix(vercel): remove crons in favor of external scheduler
  • fix: fix: Decimal boundary fixes and error handling
  • fix: fix: resolve bid calculation string concatenation bug
  • change: Merge pull request #197 from rajputomsingh/maintenance
  • change: Merge pull request #198 from rajputomsingh/maintenance
  • change: Merge pull request #199 from rajputomsingh/maintenance
  • change: Merge pull request #200 from rajputomsingh/feat/enterprise-lease-lifecycle-and-agreement-management
  • change: Merge pull request #201 from rajputomsingh/dependabot/npm_and_yarn/sharp-0.35.4
  • change: Merge pull request #203 from rajputomsingh/chore/vanguard-production-baseline
  • change: Merge pull request #204 from rajputomsingh/feat/profile-enhancements
  • …and 23 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

rajputomsingh/Fieldly was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 3cc051e49dd532120274ddc406e29839299d1e79 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.