src/
├── config/ # Configuration files
│ ├── db.js # Database connection
│ ├── cloudinary.js # Cloudinary setup
│ └── email.js # Email service setup
├── controllers/ # Request handlers
│ ├── authController.js
│ ├── boardController.js
│ ├── cardController.js
│ ├── columnController.js
│ └── userController.js
├── middlewares/ # Middleware functions
│ ├── authMiddleware.js
│ ├── errorMiddleware.js
│ └── validationMiddleware.js
├── models/ # Mongoose models
│ ├── User.js
│ ├── Board.js
│ ├── Column.js
│ ├── Card.js
│ └── Session.js
├── routes/ # API routes
│ ├── authRoutes.js
│ ├── boardRoutes.js
│ ├── cardRoutes.js
│ ├── columnRoutes.js
│ └── userRoutes.js
├── services/ # External services
│ ├── cloudinaryService.js
│ ├── emailService.js
│ └── websocketService.js
├── utils/ # Utility functions
│ ├── validators.js
│ ├── helpers.js
│ └── logger.js
└── app.js # Express application setup
npm installCreate a .env file in the root directory based on .env.example.
npm run devnpm testnpm startAPI documentation is available at /api/docs when the server is running.
The API uses JWT token-based authentication. Include the token in the Authorization header:
Authorization: Bearer [your-token]
PORT: Server port (default: 5000)MONGO_URI: MongoDB connection stringJWT_SECRET: Secret for JWT signingJWT_EXPIRES_IN: JWT expiration timeCLOUDINARY_CLOUD_NAME: Cloudinary cloud nameCLOUDINARY_API_KEY: Cloudinary API keyCLOUDINARY_API_SECRET: Cloudinary API secretEMAIL_HOST: SMTP host for email serviceEMAIL_PORT: SMTP portEMAIL_USER: SMTP usernameEMAIL_PASS: SMTP passwordGOOGLE_CLIENT_ID: Google OAuth client IDGOOGLE_CLIENT_SECRET: Google OAuth client secret