# niteshwarnikku/localfix architecture

> Architecture diagram of the GitHub repository niteshwarnikku/localfix, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/niteshwarnikku/localfix
- Repository: https://github.com/niteshwarnikku/localfix

## Overview

LocalFix is a local-services marketplace: needers discover providers, book work, track its status, and communicate; providers manage requests, profiles, earnings, and feedback. The map also preserves authentication, reviews, and optional AI assistance. The README documents real-time messaging, Redis caching, and AI/RAG capabilities; source excerpts confirm several API and persistence paths, but do not expose all frontend-to-backend or socket wiring, so only documented connections are shown and optional integrations are dashed.

Main entry points: [`lib/models/User.js`](https://github.com/niteshwarnikku/localfix/blob/main/lib/models/User.js) (User records), [`components/ChatBox.jsx`](https://github.com/niteshwarnikku/localfix/blob/main/components/ChatBox.jsx) (Chat interfaces), [`app/api/ServiceProviders/nearby/route.js`](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/nearby/route.js) (Nearby discovery), [`app/api/ServiceProviders/[id]/feedback/route.js`](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/%5Bid%5D/feedback/route.js) (Provider feedback)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Marketplace experience"]
  node_marketplace["Browse services<br/>[page.js]"]
  node_nearby["Nearby discovery<br/>[route.js]"]
end

subgraph group_identity["Identity and profiles"]
  node_profiles["Provider profiles<br/>[route.js]"]
  node_authpages["Sign-in pages<br/>[page.jsx]"]
  node_signup["Registration<br/>[route.js]"]
  node_login["Login<br/>[route.js]"]
  node_session["Session lookup<br/>[route.js]"]
  node_users[("User records<br/>[User.js]")]
end

subgraph group_transactions["Bookings and feedback"]
  node_bookings["Booking creation<br/>[route.js]"]
  node_bookingstatus["Booking tracking<br/>[route.js]"]
  node_providerrequests["Provider requests<br/>[route.js]"]
  node_bookingdata[("Booking records<br/>[Booking.js]")]
  node_reviews["Provider feedback<br/>[route.js]"]
  node_reviewdata[("Review records<br/>[Review.js]")]
end

subgraph group_communications["Communication"]
  node_chatui["Chat interfaces<br/>[ChatBox.jsx]"]
  node_messagesapi["Message history<br/>[route.js]"]
  node_conversations["Provider conversations<br/>[route.js]"]
  node_messagedata[("Message records<br/>[Message.js]")]
  node_realtime["Socket server<br/>[server.js]"]
end

subgraph group_assistance["Optional AI assistance"]
  node_chatbotui["AI assistant UI<br/>[ChatBot.jsx]"]
  node_aiadapter["AI service adapter<br/>[aiSerrvices.js]"]
  node_aibackend["AI and RAG API<br/>[main.py]"]
  node_retriever["Knowledge retrieval<br/>[retriever.py]"]
  node_embeddings["Text embeddings<br/>[embeddings.py]"]
  node_llm["Groq client<br/>[groq_client.py]"]
end

node_needer(("Service needer"))
node_provider(("Service provider"))
node_groq{{"Groq API"}}
node_mongodb[("MongoDB<br/>[db.js]")]
node_geocoder{{"OpenCage geocoder"}}
node_redis[("Redis cache<br/>[redis.js]")]

node_needer -->|"browses"| node_marketplace
node_marketplace -->|"finds nearby"| node_nearby
node_nearby -->|"queries providers"| node_users
node_nearby -->|"queries"| node_mongodb
node_nearby -.->|"may cache"| node_redis
node_needer -->|"signs in"| node_authpages
node_provider -->|"signs in"| node_authpages
node_authpages -->|"submits credentials"| node_login
node_login -->|"checks account"| node_users
node_login -->|"reads"| node_mongodb
node_authpages -->|"registers"| node_signup
node_signup -->|"geocodes address"| node_geocoder
node_signup -->|"creates account"| node_users
node_session -->|"loads user"| node_users
node_session -->|"reads"| node_mongodb
node_marketplace -->|"opens profile"| node_profiles
node_profiles -->|"loads provider"| node_users
node_needer -->|"requests service"| node_bookings
node_bookings -->|"checks provider"| node_users
node_bookings -->|"creates booking"| node_bookingdata
node_provider -->|"reviews requests"| node_providerrequests
node_providerrequests -->|"reads requests"| node_bookingdata
node_bookingstatus -->|"updates status"| node_bookingdata
node_needer -->|"tracks booking"| node_bookingstatus
node_provider -->|"updates booking"| node_bookingstatus
node_needer -->|"rates provider"| node_reviews
node_reviews -->|"checks completion"| node_bookingdata
node_reviews -->|"creates or reads"| node_reviewdata
node_reviews -->|"checks provider"| node_users
node_needer -->|"messages provider"| node_chatui
node_provider -->|"messages client"| node_chatui
node_chatui -->|"loads history"| node_messagesapi
node_messagesapi -->|"reads messages"| node_messagedata
node_chatui -->|"communicates live"| node_realtime
node_chatui -->|"sends via API"| node_messagedata
node_conversations -->|"reads conversations"| node_messagedata
node_conversations -->|"loads participants"| node_users
node_needer -.->|"asks for help"| node_chatbotui
node_chatbotui -.->|"sends query"| node_aiadapter
node_aiadapter -.->|"forwards query"| node_aibackend
node_aibackend -.->|"retrieves context"| node_retriever
node_retriever -.->|"embeds query"| node_embeddings
node_aibackend -.->|"requests answer"| node_llm
node_llm -.->|"calls model"| node_groq

click node_marketplace "https://github.com/niteshwarnikku/localfix/blob/main/app/services/page.js"
click node_nearby "https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/nearby/route.js"
click node_profiles "https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/%5Bid%5D/route.js"
click node_authpages "https://github.com/niteshwarnikku/localfix/blob/main/app/auth/login/page.jsx"
click node_signup "https://github.com/niteshwarnikku/localfix/blob/main/app/api/auth/signup/route.js"
click node_login "https://github.com/niteshwarnikku/localfix/blob/main/app/api/auth/login/route.js"
click node_session "https://github.com/niteshwarnikku/localfix/blob/main/app/api/me/route.js"
click node_users "https://github.com/niteshwarnikku/localfix/blob/main/lib/models/User.js"
click node_bookings "https://github.com/niteshwarnikku/localfix/blob/main/app/api/bookings/create/route.js"
click node_bookingstatus "https://github.com/niteshwarnikku/localfix/blob/main/app/api/bookings/%5Bid%5D/status/route.js"
click node_providerrequests "https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/me/request.js/route.js"
click node_bookingdata "https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Booking.js"
click node_reviews "https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/%5Bid%5D/feedback/route.js"
click node_reviewdata "https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Review.js"
click node_chatui "https://github.com/niteshwarnikku/localfix/blob/main/components/ChatBox.jsx"
click node_messagesapi "https://github.com/niteshwarnikku/localfix/blob/main/app/api/messages/%5BroomId%5D/route.js"
click node_conversations "https://github.com/niteshwarnikku/localfix/blob/main/app/api/conversations/provider/%5BproviderId%5D/route.js"
click node_messagedata "https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Message.js"
click node_realtime "https://github.com/niteshwarnikku/localfix/blob/main/server.js"
click node_chatbotui "https://github.com/niteshwarnikku/localfix/blob/main/components/ChatBot.jsx"
click node_aiadapter "https://github.com/niteshwarnikku/localfix/blob/main/app/api/services/aiSerrvices.js"
click node_aibackend "https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/main.py"
click node_retriever "https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/rag/retriever.py"
click node_embeddings "https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/rag/embeddings.py"
click node_llm "https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/llm/groq_client.py"
click node_mongodb "https://github.com/niteshwarnikku/localfix/blob/main/lib/config/db.js"
click node_redis "https://github.com/niteshwarnikku/localfix/blob/main/lib/redis.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_marketplace,node_nearby toneBlue
class node_profiles,node_authpages,node_signup,node_login,node_session,node_users,node_mongodb,node_redis toneAmber
class node_bookings,node_bookingstatus,node_providerrequests,node_bookingdata,node_reviews,node_reviewdata,node_groq toneMint
class node_chatui,node_messagesapi,node_conversations,node_messagedata,node_realtime toneRose
class node_chatbotui,node_aiadapter,node_aibackend,node_retriever,node_embeddings,node_llm,node_needer,node_provider,node_geocoder toneIndigo
```

## Components

### Marketplace experience

- [Browse services](https://github.com/niteshwarnikku/localfix/blob/main/app/services/page.js): `app/services/page.js`
- [Nearby discovery](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/nearby/route.js): `app/api/ServiceProviders/nearby/route.js`

### Identity and profiles

- [Provider profiles](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/%5Bid%5D/route.js): `app/api/ServiceProviders/[id]/route.js`
- [Sign-in pages](https://github.com/niteshwarnikku/localfix/blob/main/app/auth/login/page.jsx): `app/auth/login/page.jsx`
- [Registration](https://github.com/niteshwarnikku/localfix/blob/main/app/api/auth/signup/route.js): `app/api/auth/signup/route.js`
- [Login](https://github.com/niteshwarnikku/localfix/blob/main/app/api/auth/login/route.js): `app/api/auth/login/route.js`
- [Session lookup](https://github.com/niteshwarnikku/localfix/blob/main/app/api/me/route.js): `app/api/me/route.js`
- [User records](https://github.com/niteshwarnikku/localfix/blob/main/lib/models/User.js): `lib/models/User.js`

### Bookings and feedback

- [Booking creation](https://github.com/niteshwarnikku/localfix/blob/main/app/api/bookings/create/route.js): `app/api/bookings/create/route.js`
- [Booking tracking](https://github.com/niteshwarnikku/localfix/blob/main/app/api/bookings/%5Bid%5D/status/route.js): `app/api/bookings/[id]/status/route.js`
- [Provider requests](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/me/request.js/route.js): `app/api/ServiceProviders/me/request.js/route.js`
- [Booking records](https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Booking.js): `lib/models/Booking.js`
- [Provider feedback](https://github.com/niteshwarnikku/localfix/blob/main/app/api/ServiceProviders/%5Bid%5D/feedback/route.js): `app/api/ServiceProviders/[id]/feedback/route.js`
- [Review records](https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Review.js): `lib/models/Review.js`

### Communication

- [Chat interfaces](https://github.com/niteshwarnikku/localfix/blob/main/components/ChatBox.jsx): `components/ChatBox.jsx`
- [Message history](https://github.com/niteshwarnikku/localfix/blob/main/app/api/messages/%5BroomId%5D/route.js): `app/api/messages/[roomId]/route.js`
- [Provider conversations](https://github.com/niteshwarnikku/localfix/blob/main/app/api/conversations/provider/%5BproviderId%5D/route.js): `app/api/conversations/provider/[providerId]/route.js`
- [Message records](https://github.com/niteshwarnikku/localfix/blob/main/lib/models/Message.js): `lib/models/Message.js`
- [Socket server](https://github.com/niteshwarnikku/localfix/blob/main/server.js): `server.js`

### Optional AI assistance

- [AI assistant UI](https://github.com/niteshwarnikku/localfix/blob/main/components/ChatBot.jsx): `components/ChatBot.jsx`
- [AI service adapter](https://github.com/niteshwarnikku/localfix/blob/main/app/api/services/aiSerrvices.js): `app/api/services/aiSerrvices.js`
- [AI and RAG API](https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/main.py): `ai-services/app/main.py`
- [Knowledge retrieval](https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/rag/retriever.py): `ai-services/app/rag/retriever.py`
- [Text embeddings](https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/rag/embeddings.py): `ai-services/app/rag/embeddings.py`
- [Groq client](https://github.com/niteshwarnikku/localfix/blob/main/ai-services/app/llm/groq_client.py): `ai-services/app/llm/groq_client.py`

### Other components

- **Service needer**
- **Service provider**
- **Groq API**
- [MongoDB](https://github.com/niteshwarnikku/localfix/blob/main/lib/config/db.js): `lib/config/db.js`
- **OpenCage geocoder**
- [Redis cache](https://github.com/niteshwarnikku/localfix/blob/main/lib/redis.js): `lib/redis.js`

## Connections

- Service needer → Browse services: browses
- Browse services → Nearby discovery: finds nearby
- Nearby discovery → User records: queries providers
- Nearby discovery → MongoDB: queries
- Nearby discovery → Redis cache: may cache
- Service needer → Sign-in pages: signs in
- Service provider → Sign-in pages: signs in
- Sign-in pages → Login: submits credentials
- Login → User records: checks account
- Login → MongoDB: reads
- Sign-in pages → Registration: registers
- Registration → OpenCage geocoder: geocodes address
- Registration → User records: creates account
- Session lookup → User records: loads user
- Session lookup → MongoDB: reads
- Browse services → Provider profiles: opens profile
- Provider profiles → User records: loads provider
- Service needer → Booking creation: requests service
- Booking creation → User records: checks provider
- Booking creation → Booking records: creates booking
- Service provider → Provider requests: reviews requests
- Provider requests → Booking records: reads requests
- Booking tracking → Booking records: updates status
- Service needer → Booking tracking: tracks booking
- Service provider → Booking tracking: updates booking
- Service needer → Provider feedback: rates provider
- Provider feedback → Booking records: checks completion
- Provider feedback → Review records: creates or reads
- Provider feedback → User records: checks provider
- Service needer → Chat interfaces: messages provider
- Service provider → Chat interfaces: messages client
- Chat interfaces → Message history: loads history
- Message history → Message records: reads messages
- Chat interfaces → Socket server: communicates live
- Chat interfaces → Message records: sends via API
- Provider conversations → Message records: reads conversations
- Provider conversations → User records: loads participants
- Service needer → AI assistant UI: asks for help
- AI assistant UI → AI service adapter: sends query
- AI service adapter → AI and RAG API: forwards query
- AI and RAG API → Knowledge retrieval: retrieves context
- Knowledge retrieval → Text embeddings: embeds query
- AI and RAG API → Groq client: requests answer
- Groq client → Groq API: calls model
