learn
frontend/

src/store

Central store, one slice per feature area.

Most slices use async thunks; the auth slice uses plain thunks instead. Realtime never calls the API layer — the socket service dispatches slice actions directly for messages, notifications, presence, and typing. The serializable check is off, so non-plain values can pass through actions.

What it owns

  • Store setup with nine slice reducers
  • Auth, chat, connections, feed, posts, jobs, notifications, presence, profiles
  • Async thunks for every server round-trip

Files

File list and purposes from the folder README.

FilePurpose
store.jsStore setup, nine reducers.
slices/authSlice.jsSession, register, login, logout, profile thunks.
slices/chatSlice.jsActive chat, messages, receipts.
slices/connectionSlice.jsConnections and network refresh.
slices/feedSlice.jsDeveloper discovery feed.
slices/postSlice.jsPosts feed, create, like, comments.
slices/jobSlice.jsListings and applications.
slices/notificationSlice.jsList, realtime inserts, read state.
slices/presenceSlice.jsOnline map and typing flags.
slices/userProfileSlice.jsViewed-user profile state.

Dependencies

LibraryVersion rangeWhy it is used here
React^19.0.0All pages and components under src/.
React DOM^19.0.0Bootstrap in main.jsx.
React Router^7.5.3Route table and guards in App.jsx.
Radix Avatar^1.1.7Avatars in chat, posts, and profile components.
Radix Label^2.1.4Auth and profile forms.
Radix Scroll Area^1.2.6Chat and message lists.
Radix Slot^1.2.0The button primitive in src/components/ui/.
Tailwind Vite plugin^4.1.4Plugin entry in vite.config.js.
class-variance-authority^0.7.1Variant definitions in src/components/ui/.
clsx^2.1.1The cn helper in src/lib/utils.js.
Lucide^0.503.0Icons in pages like ChatPage and SignupPage.
prism-react-renderer^2.4.1Code blocks in components/posts/PostCard.jsx.
React Icons^5.5.0GitHub and LinkedIn marks on profile pages.
tailwind-merge^3.2.0The cn helper in src/lib/utils.js.
Tailwind CSS^4.1.4Classes in every component; theme tokens in CSS.
Redux Toolkit^2.7.0Store and nine slices in src/store/.
React Redux^9.2.0Hooks in pages plus the store provider in main.jsx.
Socket.io client^4.8.1Connection, rooms, and event wiring in services/socketService.js.
better-authDeclared but not used in source^1.6.23Declared in both manifests but never imported in any source file; authentication is JWT plus bcrypt.
axios^1.9.0Token-attaching factory in services/apiClient.js.
date-fns^4.1.0Date formatting in ChatPage.
Development and tooling (11)
LibraryVersion rangeWhy it is used here
@types/node^22.15.3Type declarations for Node.js built-ins.
@types/react^19.0.10Type declarations for React.
@types/react-dom^19.0.4Type declarations for React DOM.
Vite React plugin^4.3.4Plugin entry in vite.config.js.
Vite^6.3.1Dev, build, and preview scripts.
tw-animate-css^1.2.8Enter and transition classes in the stylesheet.
ESLint JS config^9.22.0Base rules in eslint.config.js.
ESLint^9.22.0Lint script and flat config in eslint.config.js.
eslint-plugin-react-hooks^5.2.0Hook rules in eslint.config.js.
eslint-plugin-react-refresh^0.4.19Refresh rules in eslint.config.js.
globals^16.0.0Browser and node globals in eslint.config.js.

Dependencies as of commit cdef8af.

Frontend store folder
BrowserAPIRealtimeCacheDatabaseShareddurableephemeral

Talks to

Sources: frontend/src/store/store.js, frontend/src/store/slices/authSlice.js, frontend/src/store/slices/chatSlice.js (documented at commit cdef8af)

On this page