How jstmejosh/skillswap-backend works
SkillSwap is a backend API for exchanging skills through user-posted offers and requests. Clients enter through the Express API; authentication protects account and swap actions, while public browsing and profiles expose limited information. The main exchange flow is to browse swaps, submit a request, and have the owner or requester update its status; accepting a request reveals contact details. Separate account flows cover registration, login, and password recovery, with email delivery for welcome and reset messages. The README describes CRUD marketplace capabilities; sampled controllers also show profiles and request handling. Wiring for unsampled modules is limited to paths and mounts supported by the tree.
Main entry points: server.js Express API · requestControllers.js Request lifecycle · authMiddleware.js JWT protection · swapRoutes.js Swap routes
Components 17
API entry
- Express API
server.js - Auth routes
routes/authRoutes.js - Swap routes
routes/swapRoutes.js - Request routes
routes/requestRoutes.js - User routes
routes/userRoutes.js - JWT protection
middleware/authMiddleware.js
Skill exchange
- Swap management
controllers/swapControllers.js - Request lifecycle
controllers/requestControllers.js
Accounts
- Profile management
controllers/userControllers.js - Account access
controllers/authControllers.js - Mail delivery helper
utils/sendMail.js
Persistence
- User model
models/User.js - Swap model
models/Swap.js - Swap request model
models/SwapRequest.js - MongoDB
Other components
- API client
- Email service
Connections 28
- API client → Express API: sends API requests
- Express API → Auth routes: mounts auth routes
- Express API → Swap routes: mounts swap routes
- Express API → Request routes: mounts request routes
- Express API → User routes: mounts user routes
- Express API → MongoDB: connects to
- Auth routes → Account access: dispatches auth
- Swap routes → Swap management: dispatches swap actions
- Swap routes → Request lifecycle: dispatches request creation
- Request routes → Request lifecycle: dispatches request actions
- User routes → Profile management: dispatches profile actions
- Swap routes → JWT protection: protects private routes
- Request routes → JWT protection: protects routes
- User routes → JWT protection: protects updates
- JWT protection → User model: loads token user
- Account access → User model: reads and updates accounts
- Account access → Mail delivery helper: sends account email
- Mail delivery helper → Email service: delivers email
- Profile management → User model: reads and updates profiles
- Profile management → Swap model: loads profile swaps
- Swap management → Swap model: manages swap records
- Request lifecycle → Swap model: checks target swap
- Request lifecycle → Swap request model: creates and updates requests
- Account access → MongoDB: persists account changes
- Profile management → MongoDB: persists profile changes
- Swap management → MongoDB: persists swap changes
- Request lifecycle → MongoDB: persists request changes
- JWT protection → MongoDB: loads account