{"id":15132994,"url":"https://github.com/surelle-ha/redsocket","last_synced_at":"2025-10-23T09:31:16.204Z","repository":{"id":254366580,"uuid":"846090543","full_name":"surelle-ha/RedSocket","owner":"surelle-ha","description":"RedSocket is event-driven platform for real-time web applications that uses Redis Sub/Pub Technology. It acts as middleware that enables real-time communication between web clients and servers securely.","archived":false,"fork":false,"pushed_at":"2024-09-02T14:01:45.000Z","size":2835,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T16:04:05.646Z","etag":null,"topics":["javascript","realtime","saas","socket-io"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/surelle-ha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-22T14:08:31.000Z","updated_at":"2024-11-17T08:15:03.000Z","dependencies_parsed_at":"2024-08-28T17:11:40.654Z","dependency_job_id":null,"html_url":"https://github.com/surelle-ha/RedSocket","commit_stats":null,"previous_names":["surelle-ha/socketeer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surelle-ha%2FRedSocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surelle-ha%2FRedSocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surelle-ha%2FRedSocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surelle-ha%2FRedSocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/surelle-ha","download_url":"https://codeload.github.com/surelle-ha/RedSocket/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237807437,"owners_count":19369595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","realtime","saas","socket-io"],"created_at":"2024-09-26T04:42:19.689Z","updated_at":"2025-10-23T09:31:10.140Z","avatar_url":"https://github.com/surelle-ha.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"badges\" align=\"center\"\u003e\n\t\u003cdiv align=\"center\"\u003e\n\t\t\u003cimg src=\"https://64.media.tumblr.com/116c77d969e3c334de736e6e496d3279/tumblr_p1bo6rLBjM1v1b8nao1_540.gifv\" width=\"200\" height=\"200\"/\u003e\u003cbr\u003e\u003cbr\u003e\n\t\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003ch1 style=\"letter-spacing: 7px\"\u003eSOCKETEER\u003c/h1\u003e\n\u003c/div\u003e\n\nZentinel.JS is a backend boilerplate built on top of Express.JS, structured to mirror the Laravel directory format for a familiar setup. It includes Artisan-like commands called 'Zentinel' to streamline development tasks, offering a powerful toolset for efficient backend operations and seamless integration.\n\n\u003cdiv align=\"center\"\u003e\n\n![ExpressJS](https://img.shields.io/badge/Express.JS-black?style=for-the-badge\u0026logo=express)\n![NodeJS](https://img.shields.io/badge/Node.JS-black?style=for-the-badge\u0026logo=node.js)\n\u003c/div\u003e\n\n## Features\nBelow are the features of Zentinel.JS:\n- Zentinel CLI\n- Builtin Authentication using JSON Web Token.\n- Builtin Role-Based Access Control as Authorization.\n- Preconfigured Mongoose for MongoDB \n- Preconfigured Sequelize for MySQL\n- Preconfigured Rate Limit, CORS, Helmet and Securities Modules\n- Preconfigured Logs and PM2 Setup\n- Interconnected MVC Components\n- Sequelize UI / ORM Code Generator\n\n## Installation\nInstallation via CommandLine Interface\n```bash\nnpm i zentinel-cli --global\nzentinel init\n\n  _____                 _     _                  _\n |__  /   ___   _ __   | |_  (_)  _ __     ___  | |\n   / /   / _ \\ | '_ \\  | __| | | | '_ \\   / _ \\ | |\n  / /_  |  __/ | | | | | |_  | | | | | | |  __/ | |\n /____|  \\___| |_| |_|  \\__| |_| |_| |_|  \\___| |_|\n\n? Do you want to initialize a new ZentinelJS project? Yes\n? Please enter the name of the project: TestProject\n✔  Fetched Server Files\n✔  Git directory removed.\n✔  Environment file set up.\n✔  NPM packages installed successfully.\n✔  Project initialized successfully!\n\ncd TestProject\nnpx sequelize-cli db:migrate\nnpx sequelize-cli db:seed:all\nzentinel dev\n```\n\n**Manual Installation via Github: To install and start developing with Zentinel, follow these steps:**\n\nClone the repository:\n```bash \ngit clone https://github.com/surelle-ha/zentineljs.git\ncd zentineljs\nnpx rimraf ./.git\n```\nNavigate to the directory and install the dependencies using `npm`:\n```bash \nnpm install\n```\nSet the environment variables\n```bash\ncp .env.example .env\n# open .env and modify the environment variables (if needed)\n```\nCreate Database\n```bash\nnpm run db:up\n```\nMigrate Database\n```bash \nnpx sequelize-cli db:migrate\n# OR\nnpm run db:migrate\n```\nSeed Default Data\n```bash \nnpx sequelize-cli db:seed:all\n# OR\nnpm run db:seed:all\n```\nStart Local Server\n```bash\nnpm run dev # Development Environment\nnpm run prod # Production Environment\n```\nBy Default, you'll see the Documentation as it's homepage. \n```bash\nGET https://localhost:8800/\n```\nThere are other extension modules I'm planning to implement. Right now, you can use the [ORM Builder](https://github.com/tomjschuster/sequelize-ui) installed in the Zentinel.\n```bash\nGET https://localhost:8800/orm-builder\n```\n\n## Commands\nCreate components using zentinel-cli\n```bash\nzentinel create\n  _____                 _     _                  _\n |__  /   ___   _ __   | |_  (_)  _ __     ___  | |\n   / /   / _ \\ | '_ \\  | __| | | | '_ \\   / _ \\ | |\n  / /_  |  __/ | | | | | |_  | | | | | | |  __/ | |\n /____|  \\___| |_| |_|  \\__| |_| |_| |_|  \\___| |_|\n\n? Select component type to create (Use arrow keys)\n❯ Controller\n  Model\n  Route\n  Middleware\n  All (Controller, Model, Route)\n```\nRun server \n```bash\nzentinel [dev/prod]\n```\nCreate Seeder File\n```bash \nnpx sequelize-cli seed:generate --name sample-seeder\n```\nCreate Migration File\n```bash \nnpx sequelize-cli migration:generate --name sample-migration\n```\n\n## Recently Added\nThe Project is constantly being optimized and updated. Here are the new features I recently implemented.\n- [2024/06/06] Rate Limit - a mechanism used to control the number of requests a server receives within a certain period of time. It helps to prevent abuse, ensure fair usage, and protect the server from being overwhelmed by excessive requests, which could lead to performance degradation or denial of service.\n```js\n/* Default Rate Limit Configuration */\nconst RateLimit = rateLimit({\n    /* 15 minutes */\n\twindowMs: 15 * 60 * 1000, \n\n    /* Request Limit Per IP Per Window */\n\tlimit: 100, \n\n    /* draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header */\n\tstandardHeaders: 'draft-7',\n\n    /* Disable the `X-RateLimit-*` headers */\n\tlegacyHeaders: false, \n})\n```\n- [2024/06/06] Sequelize ORM - Object/Relational Mapping (ORM) framework for Node. js applications. It enables JavaScript developers to work with relational databases, including support for features such as solid transaction support, relations, read replication, and more.\n- [2024/06/08] Zentinel CLI is a commandline interface tool to manager and initialize Zentinel Backend Boilerplate. To learn more about ZentinelJS, visit the repository.\n```bash\nnpm i zentinel-cli\nzentinel --help\nzentinel init\nzentinel create\n```\n- [2024/06/12] Sequelize ORM Code Generator is added and can now be accessed on /orm-builder\n\n## Goal Checklist\n- [x] Add Rate Limit\n- [x] Integrate Mongoose ORM\n- [x] Integrate Sequelize ORM\n- [x] Add Socket.io as Native Feature\n- [x] Add Logger Utility - Pino\n- [x] Recreate Zentinel CLI\n- [x] Implement Migration and Seeding\n- [x] Publish `zentinel-cli` to NPM\n- [ ] Add Native Database Visualizer\n- [ ] Launch Documentation Page\n- [ ] Add Cron Job\n- [ ] Add Custom Function\n- [ ] Add Storage Driver Support\n- [ ] Add Express Validator\n- [ ] Add express-response-hooks\n- [x] Restructure Directories\n- [ ] Typescript Support\n- [x] Sequelize ORM Code Generator added\n\n## Developer\nAs a developer who constantly seeks to improve my development skills, my goal with Zentinel.JS is to create a powerful yet intuitive backend boilerplate that simplifies the development process for fellow developers. I aim to provide a toolset that makes backend operations more efficient and enjoyable, ensuring that developers can focus on building great applications without getting bogged down by repetitive tasks.\n\nI envision Zentinel.JS as a go-to boilerplate for developers who appreciate the structure and convenience of Laravel but prefer to work within the Node.js ecosystem. By combining the best aspects of both worlds, I hope to foster a community where developers can share their experiences, contribute to the project's growth, and continuously improve their craft. Ultimately, Zentinel.JS will empower developers to create scalable, secure, and high-performance applications with ease, making backend development more accessible and enjoyable for everyone.\n\n# Contributing to Zentinel.JS\n\nWe appreciate your interest in contributing to our project. Zentinel.JS aims to provide a powerful and intuitive backend boilerplate, and contributions from developers like you help us achieve and maintain this goal.\n\n## Quick Start for Contributors\n\nTo get started, here’s what you need to know:\n\n### Code of Conduct\nWe prioritize creating a respectful and inclusive environment. Please review and adhere to our Code of Conduct to ensure a positive experience for all collaborators.\n\n### Reporting Bugs\nIf you find a bug in the codebase:\n1. **Check Existing Issues:** Verify if the issue has already been reported to avoid duplication.\n2. **Create a Detailed Issue:** Include a descriptive title, a clear explanation of the problem, steps to reproduce, and the expected outcome.\n\n### Feature Requests\nTo suggest a new feature:\n1. **Search Existing Suggestions:** Check if someone else has already proposed something similar.\n2. **Submit a New Issue:** Clearly describe the proposed feature, its benefits, and possible implementations.\n\n## How to Contribute Code\n\n### Setting Up Your Development Environment\n1. **Fork the Repository:** Start by forking the Zentinel.JS repository on GitHub.\n2. **Clone Your Fork:** Clone your forked repository to your local machine.\n3. **Install Dependencies:** Navigate to the project directory and run `npm install` to install required dependencies.\n\n### Making Changes\n1. **Create a New Branch:** Use a branch specific to the feature or fix you are working on.\n2. **Commit Changes:** Make your changes in the new branch. Commit messages should clearly explain the purpose of the changes.\n3. **Write Tests:** Add or update tests to cover the new functionality or fixes. Ensure all tests pass.\n\n### Pull Request Process\n1. **Update Your Branch:** Rebase your branch on the latest main branch to ensure a smooth integration.\n2. **Submit a Pull Request (PR):** Push your branch to GitHub and open a PR against the main branch of the original Zentinel.JS repository.\n3. **Review Process:** The project maintainer will review your PR. Be open to making revisions based on feedback.\n4. **PR Approval and Merge:** Once approved, the maintainers will merge your PR.\n\n## Additional Resources\n- **Documentation:** Familiarize yourself with the project documentation to understand how to use and extend Zentinel.JS.\n- ~~**Community:** Join our community forums or chat channels to discuss ideas and ask questions.~~\n\n## Acknowledgments\nContributors who help improve Zentinel.JS make a significant impact. We appreciate your dedication and effort in enhancing this project.\n\nThank you for choosing to contribute to Zentinel.JS. We look forward to your contributions!\n\n\u003ca href=\"https://github.com/surelle-ha/zentineljs/graphs/contributors\"\u003e\n\u003cimg src=\"https://contrib.rocks/image?repo=surelle-ha/zentineljs\" /\u003e\n\u003c/a\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurelle-ha%2Fredsocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsurelle-ha%2Fredsocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurelle-ha%2Fredsocket/lists"}