Loading repository data…
Loading repository data…
Mohamed-Ramadan1 / repository
WordNest is a fully functional blog API application built with modern web technologies. It provides a robust backend infrastructure for blog platforms with features including authentication, content management, comments, reading lists, and content reporting. The application follows a feature-based modular architecture, making it scalable
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
WordNest is a fully functional blog API application built with modern web technologies. It provides a robust backend infrastructure for blog platforms with features including authentication, content management, comments, reading lists, and content reporting. The application follows a feature-based modular architecture, making it scalable and maintainable.
Built with TypeScript and Express.js, WordNest leverages MongoDB for data storage and Redis for caching, providing a high-performance backend solution for modern blog applications.
WordNest includes a comprehensive email notification system for various user account events. Below are examples of the email templates:
Note: Additional email templates can be found in the docs/users/images directory of the repository.
| Category |
|---|
| Tools & Technologies |
|---|
| Core Technologies | Node.js, TypeScript, Express.js |
| Database | MongoDB, Mongoose, Redis |
| Authentication & Security | JWT, bcryptjs, helmet, cors, express-rate-limit, hpp, xss-clean, sanitize-html |
| Validation & Data Processing | Joi, express-validator, class-validator, class-transformer |
| File Upload & Storage | Multer, Cloudinary |
| Payment Processing | Stripe |
| Background Processing | Bull, node-cron |
| Email Services | Nodemailer |
| Documentation | Swagger (swagger-jsdoc, swagger-ui-express) |
| Logging | Winston, Morgan |
| Real-time Communication | Socket.io |
| Containerization | Docker, Docker Compose |
| Build Tools | Webpack, ts-loader |
| Development Tools | ts-node-dev, prettier, eslint |
| Testing | Jest, Supertest |
| Utilities | date-fns, slugify, dotenv, compression, cookie-parser, body-parser |
| Dependency Injection | Inversify, reflect-metadata |
root/
├── dev/ # Development-related files and configurations
├── docs/ # Documentation files for the project
│ ├── auth/ # Authentication documentation
│ ├── blogs/ # Blog feature documentation
│ ├── comments/ # Comments feature documentation
│ ├── favorites/ # Favorites feature documentation
│ ├── interactions/ # User interactions documentation
│ ├── readingLest/ # Reading list feature documentation
│ ├── support-tickets/ # Support tickets documentation
│ └── users/ # User management documentation
│ └── images/ # Email notification templates and UI screenshots
├── logs/ # General log files for the application
├── node_modules/ # Node.js modules installed via npm
├── public/ # Static files (images, CSS, JavaScript for frontend)
├── src/ # Main source code of the application
│ ├── config/ # Configuration files (environment variables, app settings)
│ ├── features/ # Application features, organized by modules
│ │ ├── auth/ # Authentication module
│ │ │ ├── controllers/ # Controllers for auth operations
│ │ │ ├── dtos/ # Data transfer objects for request/response validation
│ │ │ ├── emails/ # Email templates for authentication-related emails
│ │ │ ├── interfaces/ # TypeScript interfaces for the auth module
│ │ │ ├── middlewares/ # Middleware for authentication checks
│ │ │ ├── models/ # Database models related to authentication
│ │ │ ├── routes/ # Routes for authentication endpoints
│ │ │ ├── services/ # Business logic for authentication
│ │ │ └── tests/ # Unit and integration tests for the auth module
│ │ ├── users/ # User management module
│ │ ├── posts/ # Blog posts module
│ │ ├── comments/ # Comments module
│ │ ├── reading-list/ # Reading list feature
│ │ └── content-reporting/ # Content reporting feature
│ ├── jobs/ # Scheduled tasks or background jobs
│ ├── logging/ # Logging utilities for the application
│ ├── shared/ # Shared utilities or modules used across the app
│ │ └── utils/ # Utility functions merged under shared directory
│ ├── types/ # TypeScript type definitions for global use
│ ├── app.ts # Main application entry point
│ └── index.ts # Application bootstrap file
├── .dockerignore # Files and directories to ignore in Docker builds
├── .env # Environment variables
├── .gitignore # Git ignore file
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Dockerfile for containerizing the application
├── LICENSE # License for the project
├── package.json # Node.js dependencies and scripts
├── package-lock.json # Lock file for Node.js dependencies
├── README.md # Project overview and instructions
├── TODO.ts # Todo list for the project
├── tsconfig.json # TypeScript configuration
├── webpack.config.js # Webpack configuration
└── wordNest-API.postman_collection.json # Postman collection for API testing
Clone the repository
git clone https://github.com/Mohamed-Ramadan1/wordNest.git
cd wordNest
Install dependencies
npm install
Create a .env file in the root directory with the following variables:
NODE_ENV=
PORT=
DATABASE=
DATABASE_PASSWORD=
EMAIL_PASSWORD=
JWT_SECRET=
JWT_EXPIRES_IN=90d
JWT_LOGOUT_EXPIRES_IN=0
JWT_COOKIE_EXPIRES_IN=90
CLOUD_NAME=
CLOUD_API_KEY=
CLOUD_API_SECRET=
FRONTEND_URL=
REDIS_HOST=
REDIS_PORT=
FRONTEND_URL=
LOG_DIR=
GOOGLE_CLIENT_ID=
GOOGLE_REDIRECT_URL=
STRIPE_SECRET_KEY=
STRIPE_SUCCESS_URL=
STRIPE_CANCEL_URL=
Note: Fill in the appropriate values for each variable. Ensure you provide a MongoDB connection string for the DATABASE variable (local or Atlas).
Run the development server
npm run dev
build the application
npm run build
docker-compose up -d
To build the application using Webpack, run the following command:
npm run build
This will create a dist directory containing the bundled application files.
run the application using the following command:
npm start
This will start the application in production mode.
Once the server is running, access the Swagger documentation at:
http://localhost:3000/api/v1/docs
A Postman collection is included for testing the API endpoints. You can import the wordNest-API.postman_collection.json file into Postman to explore and test the API.
Mohamed Ramadan
I'm a dedicated backend software engineer with a passion for creating high-quality software solutions. My goal is to contribute to the tech community by developing innovative solutions that address real-world challenges. I'm always eager to learn new technologies and methodologies to enhance my skills and deliver better software.
Feel free to reach out to me for any questions, suggestions, or potential collaborations regarding this project or other backend development topics!
This project is licensed under the MIT License - see the LICENSE file for details.