Skip to content

🌼 This blog 🖼️ platform 💻 is built using the MEEN stack🕊️ (MongoDB, Express, EJS, Node.js)☁️. It offers a full-featured experience 🌸 with user authentication (login/signup)🍄, blog creation🖌️, editing✂, and deletion🗑️. Dynamic content rendering ⏳ with EJS and efficient data handling 🗂️ with MongoDB

Notifications You must be signed in to change notification settings

Prakhar-002/INKTALE-The-Blog-Site

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INKTALE ➺ 🖊️ Unleash Your Stories 📖

Inktale is a fully responsive blog application built with Express, Node, MongoDB, and EJS (MEEN Stack). It features a mobile-first design, user authentication, and a variety of functionalities for managing blogs and user profiles. Along with support of MARKDOWN language as Blog content.


Screenshots 🥡🍥

image


💻 Tech Stack ⛅️🏞️

CSS3   Bootstrap   JavaScript   NPM   NodeJS   Express.js   MongoDB   Nodemon   Render  Markdown   Git   GitHub


Features🍂🧸

  • Responsive Design 🍁 Optimized for mobile-first design.
  • User Authentication 🍁 Secure login and signup using bcrypt.
  • Blog Management 🍁 Create, edit, delete, and view blogs.
  • User Profile 🍁 Manage user information and blogs.
  • Image Upload 🍁 Upload images using Cloudinary.
  • Error Handling 🍁 Comprehensive error handling with flash messages.

Technologies Used 👩🏻‍💻🤖

  • bcrypt 🌸 Library for hashing passwords to enhance security.
  • cloudinary 🌸 Cloud-based image and video management service for uploading media.
  • compression 🌸 Middleware to compress HTTP responses, improving performance.
  • connect-mongo 🌸 MongoDB session store for Express and Connect, used for storing session data.
  • dotenv 🌸 Loads environment variables from a .env file into process.env.
  • ejs 🌸 Embedded JavaScript templating engine for rendering dynamic HTML content.
  • express 🌸 Fast and minimalist web framework for building Node.js applications.
  • express-session 🌸 Middleware for managing sessions in Express apps.
  • highlight.js 🌸 Library for syntax highlighting in code blocks for better readability.
  • markdown-it 🌸 Markdown parser that converts markdown text into HTML.
  • mongoose 🌸 MongoDB object modeling tool designed to work in an asynchronous environment.
  • nodemon 🌸 Tool that automatically restarts the server when file changes are detected.

Installation 🌐

  1. Clone 🗃️ the repository

    For window 🍦

      git clone https ➺//github.com/Prakhar-002/INKTALE-The-Blog-Site.git
      cd INKTALE-The-Blog-Site

    For Linux and macOS 🧋

      git clone https ➺//github.com/Prakhar-002/INKTALE-The-Blog-Site.git
      cd INKTALE-The-Blog-Site
  2. Install⚡️dependencies ➺

      npm install
  3. Create a .env file in the root directory and add the following

      MONGO_CONNECTION_URL=your_mongo_connection_URL
      SESSION_SECRET=your_session_secret
      SESSION_MAX_AGE=your_allowed_time
      CLOUDINARY_CLOUD_NAME=your_cloud_name
      CLOUDINARY_API_KEY=your_cloud_key
      CLOUDINARY_API_SECRET=your_cloud_secret
  4. Start 🎉 the application ➺

      npm run dev
  5. Access the app in your browser at http://localhost:8080.


Usage 🍵🍰

  • Home Page 🌼 View all blogs.
  • Authentication 🌼 Sign up and log in to create and manage blogs.
  • User Profile 🌼 Access and edit your personal information.
  • Create a Blog 🌼 Write and publish new blog posts.
  • Edit/Delete a Blog 🌼 Manage your published blogs throw Dashboard.
  • Reading List 🌼 Add blogs from other users to your personal reading list for future reference.
  • React to Blogs 🌼 Like and engage with other users' blogs to show appreciation.

Folder Structure 📒🗂️

  INKTALE-The-Blog-Site/
  │
  ├── config/                    🔸Configuration files (database, cloudinary, etc.)
  │   └── cloudinary.js          🔹Cloudinary configuration for media uploads
  │
  ├── controllers/               🔸Request handlers for routes
  │   ├── blogController.js      🔹Blog-related logic
  │   └── userController.js      🔹User-related logic (authentication, profiles)
  │
  ├── middlewares/               🔸Custom middleware functions
  │   └── auth.js                🔹Authentication middleware
  │
  ├── models/                    🔸Mongoose models
  │   ├── Blog.js                🔹Blog schema
  │   └── User.js                🔹User schema
  │
  ├── public/                    🔸Static assets (CSS, images, JavaScript)
  │   ├── css/                   🔹Stylesheets
  │   ├── images/                🔹Images for the site
  │   └── js/                    🔹Client-side JavaScript
  │
  ├── routes/                    🔸Application routes
  │   ├── blogRoutes.js          🔹Routes for blog actions
  │   └── userRoutes.js          🔹Routes for user actions (login, signup)
  │
  ├── utils/                     🔸Utility functions and helpers
  │   └── validators.js          🔹Input validation utilities
  │
  ├── views/                     🔸EJS templates for dynamic HTML rendering
  │   ├── partials/              🔹Reusable EJS partials (header, footer)
  │   ├── blogs/                 🔹Blog templates (create, edit, view)
  │   └── users/                 🔹User-related templates (profile, login, signup)
  │
  ├── .gitignore                 🔸Files and directories to ignore in git
  ├── app.js                     🔸Main application entry point
  ├── package.json               🔸Project dependencies and scripts
  └── README.md                  🔸Project documentation

🚀 About Me

Meet Prakhar Katiyar 🙋🏻‍♂️ , An avid learner with a passion for mastering the MERN (MongoDB, Express.js, React.js, Node.js) stack 🎯 and diving deep into Data Structures and Algorithms (DSA) 🧑🏻‍💻

About

🌼 This blog 🖼️ platform 💻 is built using the MEEN stack🕊️ (MongoDB, Express, EJS, Node.js)☁️. It offers a full-featured experience 🌸 with user authentication (login/signup)🍄, blog creation🖌️, editing✂, and deletion🗑️. Dynamic content rendering ⏳ with EJS and efficient data handling 🗂️ with MongoDB

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published