{"id":15137201,"url":"https://github.com/adelpro/nextpalestine","last_synced_at":"2025-10-23T12:30:22.896Z","repository":{"id":241613664,"uuid":"807210202","full_name":"adelpro/nextpalestine","owner":"adelpro","description":"Effortlessly create, manage, and publish captivating blog content with nextpalestine. Our platform empowers you to focus on writing and engaging your audience, leaving the technical complexities behind.","archived":false,"fork":false,"pushed_at":"2024-07-18T13:06:36.000Z","size":476,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T18:47:54.074Z","etag":null,"topics":["2fa","argon2","authentication","cookies","docker","gitleaks","husky","jwt","mongodb","nestjs","nextjs","nodemailer","opentelemetry","signoz","social-login","swag","transition-animation","typescript","umam"],"latest_commit_sha":null,"homepage":"https://nextpalestine.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adelpro.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"adelbenyahia","buy_me_a_coffee":"adelbenyahia","custom":["https://www.paypal.com/paypalme/adelbenyahia"]}},"created_at":"2024-05-28T17:03:26.000Z","updated_at":"2024-11-16T06:25:50.000Z","dependencies_parsed_at":"2024-07-21T21:03:33.684Z","dependency_job_id":null,"html_url":"https://github.com/adelpro/nextpalestine","commit_stats":null,"previous_names":["adelpro/nextpalestine"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelpro%2Fnextpalestine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelpro%2Fnextpalestine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelpro%2Fnextpalestine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelpro%2Fnextpalestine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adelpro","download_url":"https://codeload.github.com/adelpro/nextpalestine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237821786,"owners_count":19371827,"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":["2fa","argon2","authentication","cookies","docker","gitleaks","husky","jwt","mongodb","nestjs","nextjs","nodemailer","opentelemetry","signoz","social-login","swag","transition-animation","typescript","umam"],"created_at":"2024-09-26T07:00:27.247Z","updated_at":"2025-10-23T12:30:21.828Z","avatar_url":"https://github.com/adelpro.png","language":"TypeScript","funding_links":["https://ko-fi.com/adelbenyahia","https://buymeacoffee.com/adelbenyahia","https://www.paypal.com/paypalme/adelbenyahia"],"categories":[],"sub_categories":[],"readme":"# nextpalestine: The All-in-One Blogging Platform\n\n[![GPL License](https://badgen.net/badge/license/GPL/blue)](https://www.gnu.org/licenses/gpl-3.0.html) ![npm](https://img.shields.io/badge/npm-v20%2B-blue) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/eb217913062648a984f5bac092c1e5eb)](https://app.codacy.com/gh/adelpro/nextpalestine/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n\nEffortlessly create, manage, and publish captivating blog content with nextpalestine. Our platform empowers you to focus on writing and engaging your audience, leaving the technical complexities behind.\n\n## Technology Stack and Tools\n\n### Frontend\n\n![Next.js](https://img.shields.io/badge/Next.js-black?logo=next.js\u0026logoColor=white) ![React Query](https://img.shields.io/badge/React%20Query-FF4154?logo=reactquery\u0026logoColor=fff) ![TailwindCSS](https://img.shields.io/badge/Tailwind%20CSS-%2338B2AC.svg?logo=tailwind-css\u0026logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript\u0026logoColor=fff) [![Lexical Editor](https://badgen.net/badge/editor/Lexical%20Editor/purple)](https://example.com) ![2FA Enabled](https://badgen.net/badge/2FA%20Enabled/Yes/green) ![Client.js](https://badgen.net/badge/fingerprinting/Client.js/blue) [![Umami](https://badgen.net/badge/analytics/Umami/orange)](https://umami.is)\n\n### Backend\n\n![NestJS](https://img.shields.io/badge/NestJS-%23E0234E.svg?logo=nestjs\u0026logoColor=white) ![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?logo=mongodb\u0026logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript\u0026logoColor=fff) ![Swagger](https://img.shields.io/badge/Swagger-85EA2D.svg?logo=swagger\u0026logoColor=black) ![2FA Enabled](https://badgen.net/badge/2FA%20Enabled/Yes/green) ![Client.js](https://badgen.net/badge/fingerprinting/Client.js/blue) [![Signoz](https://badgen.net/badge/monitoring/Signoz/blue)](https://signoz.io)\n\n### DevOps and Deployment\n\n![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker\u0026logoColor=fff) ![Vercel](https://img.shields.io/badge/Vercel-%23000000.svg?logo=vercel\u0026logoColor=white)\n\n## Key Features\n\n- **Seamless Content Creation**: Craft beautiful and engaging blog posts with a powerful lexical editor. Leverage rich media support for images and embeds to enhance your content.\n- **Streamlined Publishing**: Effortlessly publish your content and manage your blog with a centralized and intuitive dashboard built with Next.js.\n- **Robust User Management**:\n  - **Secure User Accounts**: Ensure user trust and data protection with account validation via email. Users receive a confirmation email before their account is active, safeguarding your platform.\n  - **Password Management**: Empower users to manage their accounts with confidence. Offer user-friendly \"Forgot Password\" functionality for regaining access and a secure \"Reset Password\" process for changing existing passwords, all facilitated through email communication.\n- **NestJS-Powered Backend**: Enjoy a secure and scalable foundation for your blog, built with the powerful NestJS framework.\n- **Engaging User Experience**: Captivate your audience with a customizable and user-friendly interface built with Next.js for optimal performance.\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n\n- **Node.js**: Install Node.js (including npm or Yarn) which is required to run the backend and frontend servers. Node.js serves as the runtime environment for your project. [Download Node.js](https://nodejs.org/)\n- **MongoDB**: The platform uses MongoDB as its database. You'll need to have MongoDB installed on your local machine or have access to a MongoDB database. You can also opt for a cloud-based MongoDB service like MongoDB Atlas. [Install MongoDB](https://www.mongodb.com/try/download/community)\n- **Git**: Git is used for version control and is necessary to clone the repository. [Download Git](https://git-scm.com/downloads)\n\nFor the backend:\n\n- **NestJS**: A progressive Node.js framework for building efficient and scalable server-side applications. [Learn about NestJS](https://nestjs.com/)\n- **JWT (JSON Web Tokens)**: Used for authentication, ensure you are familiar with JWTs and how they work in NestJS. [JWT Introduction](https://jwt.io/introduction/)\n- **Cookies**: Knowledge of how cookies work in HTTP and their usage in authentication.\n- **Swagger**: Used for API documentation. Familiarity with Swagger will help you understand and interact with the API endpoints. [Swagger Documentation](https://swagger.io/docs/)\n- **Argon2**: A secure password hashing library. [Learn about Argon2](https://github.com/ranisalt/node-argon2)\n- **Nodemailer**: A module for Node.js applications to send emails. [Nodemailer Documentation](https://nodemailer.com/about/)\n- **Authentication**: Be aware of authentication mechanisms and how they are implemented in NestJS.\n- **Sharp**: A module to convert large images in common formats to smaller, web-friendly JPEG, PNG, WebP, and AVIF images of varying dimensions. [Sharp Documentation](https://sharp.pixelplumbing.com/)\n- **SigNoz**: A platform for monitoring and troubleshooting microservices-based applications. SigNoz provides out-of-the-box observability, including metrics, logs, and traces. [SigNoz Documentation](https://signoz.io/docs/)\n\nFor the frontend:\n\n- **Lexical Editor**: An extensible text editor framework by Facebook. [Lexical GitHub Repository](https://github.com/facebook/lexical)\n- **Client.js**: A library for browser fingerprinting. Useful if you're implementing security features based on device fingerprinting. [Client.js Documentation](https://clientjs.org/)\n- **Tanstack Query (previously React Query)**: Hooks for fetching, caching, and updating asynchronous data in React. [Tanstack Query Documentation](https://tanstack.com/query/v4)\n- **TailwindCSS**: A utility-first CSS framework used for designing custom user interfaces. [TailwindCSS Documentation](https://tailwindcss.com/docs)\n- **Umami**: A fast and privacy-focused alternative to Google Analytics, used for website analytics. It respects your users' privacy and provides detailed insights without the need for tracking cookies. [Umami Documentation](https://umami.is/docs)\n\nPlease make sure to install and configure these prerequisites before running the nextpalestine platform.\n\n## How to Use nextpalestine\n\n### How to Run nextpalestine\n\n\u003e [!IMPORTANT]\n\u003e Important: DO NOT commit this file to your version control system (e.g., Git) for security reasons.\n\nHere's a basic guide on getting started with nextpalestine:\n\n1. **Clone the repository**: Use `git clone https://github.com/adelpro/nextpalestine.git` to clone the nextpalestine repository to your local machine.\n2. **Install dependencies**: Navigate to the cloned directory and run `npm install` or `yarn install` to install all the required dependencies.\n3. **Set up environment variables**: Create a `.env` file in the project root directory and define any necessary environment variables (e.g., database connection string, API keys, use the `env.example` file as a template). Important: DO NOT commit this file to your version control system (e.g., Git) for security reasons.\n4. **Start the backend development server**: Run `npm run backend` or `yarn backend` to start the backend server. This will typically launch your backend application on `http://localhost:3500` by default.\n5. **Start the frontend development server**: Run `npm run frontend` or `yarn frontend` to start the frontend server. This will typically launch your frontend application on `http://localhost:3540` by default.\n6. **Start Both Servers**: Run `npm run dev` or `yarn dev` to start both the backend and frontend servers.\n\n### Docker Deployment\n\n\u003e [!IMPORTANT]\n\u003e Important: DO NOT commit this file to your version control system (e.g., Git) for security reasons.\n\nTo deploy nextpalestine using Docker, follow these steps:\n\n1. **Clone the repository**: Use `git clone https://github.com/adelpro/nextpalestine.git` to clone the nextpalestine repository to your local machine.\n\n2. **Create a `.env` file**:\n   Navigate to the ./frontend directory and create a .env file using the env.example file as a template.\n   Navigate to the ./backend directory and create a .env file using the env.example file as a template.\n\n3. **Build Docker images**:\n\n   ```bash\n   docker-compose build\n   ```\n\n4. **Run Docker containers**:\n\n   ```bash\n   docker-compose up\n   ```\n\n   This command will start both the backend and frontend services defined in your `docker-compose.yml` file.\n\n5. **Access the application**: Open your browser and navigate to `http://localhost:3540` for the frontend and `http://localhost:3500` for the backend.\n\nEnsure you have Docker and Docker Compose installed on your machine. [Install Docker](https://docs.docker.com/get-docker/)\n\n## Contribute\n\nWe welcome contributions to the nextpalestine platform! If you have suggestions for improvements or new features, or if you've found a bug and want to report it, please follow these guidelines:\n\n### Reporting Bugs\n\n- **Use the Issue Tracker**: Go to the repository's [issue tracker](https://github.com/adelpro/nextpalestine/issues) and create a new issue.\n- **Describe the Bug**: Provide a clear and concise description of what the bug is.\n- **Steps to Reproduce**: List the steps to reproduce the behavior.\n- **Expected Behavior**: Describe what you expected to happen.\n- **Screenshots**: If applicable, add screenshots to help explain your problem.\n- **Environment**: Include details about your environment, like the browser version, Node.js version, etc.\n\n### Suggesting Enhancements\n\n- **Submit an Issue**: Open a new issue in the repository's issue tracker.\n- **Title**: Give a concise and descriptive title for the enhancement.\n- **Detailed Description**: Provide a detailed description of the proposed feature or enhancement.\n- **Additional Context**: Add any other context or screenshots about the feature request.\n\n### Submitting Changes\n\n- **Fork the Repository**: Fork the project to your own GitHub account.\n- **Create a Branch**: Create a branch in your fork for your changes.\n- **Make Your Changes**: Make the changes in your branch following the project's coding standards.\n- **Test Your Changes**: Ensure that your changes do not break any existing functionality and that all tests pass.\n- **Write a Good Commit Message**: Commit messages should be descriptive and mention the issue number if applicable.\n- **Submit a Pull Request (PR)**: Open a PR to the main repository with a clear title and description.\n\n### Pull Request Process\n\n- Ensure that any install or build dependencies are removed before the end of the layer when doing a build.\n- Update the README.md with details of changes to the interface, including new environment variables, exposed ports, useful file locations, and container parameters.\n- Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent.\n- The project maintainers will review the PR and may request changes. Your PR will be merged once it receives an approval from a maintainer.\n\nThank you for your contributions – they make our project better!\n\n## Thank you\n\n[![Stargazers repo roster for @adelpro/nextpalestine](https://reporoster.com/stars/adelpro/nextpalestine)](https://github.com/adelpro/nextpalestine/stargazers)\n\n[![Forkers repo roster for @adelpro/nextpalestine](https://reporoster.com/forks/adelpro/nextpalestine)](https://github.com/adelpro/nextpalestine/network/members)\n\n## Sponsors\n\nIf you like this project, consider supporting me to continue developing and maintaining it!\n\n[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?\u0026logo=buy-me-a-coffee\u0026logoColor=black)](https://buymeacoffee.com/adelbenyahia) [![Ko-fi](https://img.shields.io/badge/Ko--fi-FF5E5B?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/adelbenyahia) [![PayPal](https://img.shields.io/badge/PayPal-003087?logo=paypal\u0026logoColor=fff)](https://www.paypal.com/paypalme/adelbenyahia)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelpro%2Fnextpalestine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadelpro%2Fnextpalestine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelpro%2Fnextpalestine/lists"}