TechTales is a modern blogging platform providing a comprehensive RESTful API for blog management, user authentication, and content interaction. Built using Node.js, Express.js, and MongoDB, it ensures scalability, security, and efficiency.
- Documentation: TechTales Documentation
- Postman Collection: Postman Collection
- Flowchart Flowchart
- API Base URL: http://localhost:3000/api/v1/
- GitHub Repository: Syed Tasavour
If you found this project helpful, give it a ⭐️!
The total time spent on the project is 30 hours and 20 minutes.
- Backend: Node.js, Express.js, MongoDB, Mongoose
- Authentication: JWT, bcrypt
- Storage: Cloudinary, Multer
- Security: Input Validation
- Secure JWT-based authentication with refresh tokens
- Role-based access control (Admin, Author, Reader)
- Password encryption and reset functionality
- CRUD operations for blog posts
- Category management
- Rich text support with media uploads (Cloudinary)
- Comments system (Add, Edit, Delete)
- Like/Unlike functionality
- View tracking & analytics
- User profile management
- Search
- Pagination support
- Node.js (v14+)
- MongoDB (Local/Atlas)
- Cloudinary Account
- Git installed
- Fork & Clone the Repository
git clone https://github.com/syedtasavour/TechTales.git cd TechTales
- Install dependencies
npm install
- Set up environment variables (
.env
file)PORT=8000 MONGODB_URI=your_mongodb_uri JWT_SECRET=your_jwt_secret JWT_REFRESH_SECRET=your_refresh_token_secret CLOUDINARY_CLOUD_NAME=your_cloudinary_name CLOUDINARY_API_KEY=your_cloudinary_key CLOUDINARY_API_SECRET=your_cloudinary_secret
- Start the development server
npm run dev
POST /auth/register
- Register new userPOST /auth/login
- User loginPOST /auth/logout
- LogoutPOST /auth/refresh-token
- Refresh access tokenPOST /auth/forgot-password
- Password reset initiationPOST /auth/reset-password
- Complete password reset
GET /users/profile
- Get user profilePUT /users/profile
- Update user detailsPUT /users/avatar
- Upload/update avatarDELETE /users
- Delete account
POST /posts
- Create new postGET /posts
- Get all posts (Paginated)GET /posts/:id
- Get single postPUT /posts/:id
- Update postDELETE /posts/:id
- Delete postPOST /posts/:id/like
- Like postDELETE /posts/:id/like
- Unlike post
POST /categories
- Create categoryGET /categories
- List categoriesPUT /categories/:id
- Update categoryDELETE /categories/:id
- Delete category
POST /posts/:id/comments
- Add commentGET /posts/:id/comments
- Get commentsPUT /comments/:id
- Edit commentDELETE /comments/:id
- Delete comment
- Advanced search functionality
- Email notifications
- Social authentication (Google, GitHub)
- Analytics dashboard
- CORS & Helmet for enhanced security
- API rate limiting to prevent abuse
- XSS & SQL Injection protection
- React-based frontend
- Rich text editor
- Responsive UI
- Real-time updates
- SEO optimization
- AI-powered content suggestions
- Multi-language support
We welcome contributions! Follow these steps:
- Fork the repo
- Create a new branch
git checkout -b feature/AmazingFeature
- Commit changes
git commit -m "Add AmazingFeature"
- Push & create a PR
git push origin feature/AmazingFeature
- Write meaningful commit messages
- Update documentation if necessary
This project is licensed under the ISC License. See LICENSE for details.
Syed Tasavour
- GitHub: @syedtasavour
- Portfolio: syedtasavour.me
For any queries or support:
- Email:
[email protected]
- GitHub Issues: Create an issue
Built with passion (and a lot of coffee) by Syed Tasavour.