Skip to content

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.

License

Notifications You must be signed in to change notification settings

adelpro/nextpalestine

Repository files navigation

nextpalestine: The All-in-One Blogging Platform

GPL License npm Codacy Badge

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.

Technology Stack and Tools

Frontend

Next.js React Query TailwindCSS TypeScript Lexical Editor 2FA Enabled Client.js Umami

Backend

NestJS MongoDB TypeScript Swagger 2FA Enabled Client.js Signoz

DevOps and Deployment

Docker Vercel

Key Features

  • 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.
  • Streamlined Publishing: Effortlessly publish your content and manage your blog with a centralized and intuitive dashboard built with Next.js.
  • Robust User Management:
    • 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.
    • 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.
  • NestJS-Powered Backend: Enjoy a secure and scalable foundation for your blog, built with the powerful NestJS framework.
  • Engaging User Experience: Captivate your audience with a customizable and user-friendly interface built with Next.js for optimal performance.

Prerequisites

Before you begin, ensure you have met the following requirements:

  • 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
  • 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
  • Git: Git is used for version control and is necessary to clone the repository. Download Git

For the backend:

  • NestJS: A progressive Node.js framework for building efficient and scalable server-side applications. Learn about NestJS
  • JWT (JSON Web Tokens): Used for authentication, ensure you are familiar with JWTs and how they work in NestJS. JWT Introduction
  • Cookies: Knowledge of how cookies work in HTTP and their usage in authentication.
  • Swagger: Used for API documentation. Familiarity with Swagger will help you understand and interact with the API endpoints. Swagger Documentation
  • Argon2: A secure password hashing library. Learn about Argon2
  • Nodemailer: A module for Node.js applications to send emails. Nodemailer Documentation
  • Authentication: Be aware of authentication mechanisms and how they are implemented in NestJS.
  • 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
  • SigNoz: A platform for monitoring and troubleshooting microservices-based applications. SigNoz provides out-of-the-box observability, including metrics, logs, and traces. SigNoz Documentation

For the frontend:

  • Lexical Editor: An extensible text editor framework by Facebook. Lexical GitHub Repository
  • Client.js: A library for browser fingerprinting. Useful if you're implementing security features based on device fingerprinting. Client.js Documentation
  • Tanstack Query (previously React Query): Hooks for fetching, caching, and updating asynchronous data in React. Tanstack Query Documentation
  • TailwindCSS: A utility-first CSS framework used for designing custom user interfaces. TailwindCSS Documentation
  • 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

Please make sure to install and configure these prerequisites before running the nextpalestine platform.

How to Use nextpalestine

How to Run nextpalestine

Important

Important: DO NOT commit this file to your version control system (e.g., Git) for security reasons.

Here's a basic guide on getting started with nextpalestine:

  1. Clone the repository: Use git clone https://github.com/adelpro/nextpalestine.git to clone the nextpalestine repository to your local machine.
  2. Install dependencies: Navigate to the cloned directory and run npm install or yarn install to install all the required dependencies.
  3. 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.
  4. 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.
  5. 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.
  6. Start Both Servers: Run npm run dev or yarn dev to start both the backend and frontend servers.

Docker Deployment

Important

Important: DO NOT commit this file to your version control system (e.g., Git) for security reasons.

To deploy nextpalestine using Docker, follow these steps:

  1. Clone the repository: Use git clone https://github.com/adelpro/nextpalestine.git to clone the nextpalestine repository to your local machine.

  2. Create a .env file: Navigate to the ./frontend directory and create a .env file using the env.example file as a template. Navigate to the ./backend directory and create a .env file using the env.example file as a template.

  3. Build Docker images:

    docker-compose build
  4. Run Docker containers:

    docker-compose up

    This command will start both the backend and frontend services defined in your docker-compose.yml file.

  5. Access the application: Open your browser and navigate to http://localhost:3540 for the frontend and http://localhost:3500 for the backend.

Ensure you have Docker and Docker Compose installed on your machine. Install Docker

Contribute

We 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:

Reporting Bugs

  • Use the Issue Tracker: Go to the repository's issue tracker and create a new issue.
  • Describe the Bug: Provide a clear and concise description of what the bug is.
  • Steps to Reproduce: List the steps to reproduce the behavior.
  • Expected Behavior: Describe what you expected to happen.
  • Screenshots: If applicable, add screenshots to help explain your problem.
  • Environment: Include details about your environment, like the browser version, Node.js version, etc.

Suggesting Enhancements

  • Submit an Issue: Open a new issue in the repository's issue tracker.
  • Title: Give a concise and descriptive title for the enhancement.
  • Detailed Description: Provide a detailed description of the proposed feature or enhancement.
  • Additional Context: Add any other context or screenshots about the feature request.

Submitting Changes

  • Fork the Repository: Fork the project to your own GitHub account.
  • Create a Branch: Create a branch in your fork for your changes.
  • Make Your Changes: Make the changes in your branch following the project's coding standards.
  • Test Your Changes: Ensure that your changes do not break any existing functionality and that all tests pass.
  • Write a Good Commit Message: Commit messages should be descriptive and mention the issue number if applicable.
  • Submit a Pull Request (PR): Open a PR to the main repository with a clear title and description.

Pull Request Process

  • Ensure that any install or build dependencies are removed before the end of the layer when doing a build.
  • Update the README.md with details of changes to the interface, including new environment variables, exposed ports, useful file locations, and container parameters.
  • Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent.
  • The project maintainers will review the PR and may request changes. Your PR will be merged once it receives an approval from a maintainer.

Thank you for your contributions – they make our project better!

Sponsors

If you like this project, consider supporting me to continue developing and maintaining it!

BuyMeACoffee Ko-fi PayPal

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published