Inktale is a fully responsive blog application built with Express, MongoDB, and EJS. It features a mobile-first design, user authentication, and a variety of functionalities for managing blogs and user profiles.
-
Server Not Responding: The Render free tier may cause slower response times if the server has been idle. Refresh the page or wait a few moments for it to start.
-
Live Demo: Inktale Blog
-
Responsive Design: Designed with a mobile-first approach to ensure optimal viewing across all devices.
-
User Authentication: Register and log in using sessions.
-
Blog Management: Create, update, and delete blogs.
-
Dashboard: View total visits, reactions, and published articles. Manage your blogs with options to edit or delete.
-
Blog Interaction: See likes and bookmarks on each blog. Like and bookmark blogs.
-
Bookmark Page: View and manage all the blogs you have bookmarked.
-
Settings Page: Edit basic info including profile photo, full name, username, email, and short bio. Change your password or delete your account.
-
Markdown Support: Create blogs with banner images and write content in Markdown format.
-
Express Session: Used for managing user sessions. Sessions are cleared on logout.
-
Image Validation: Implemented both client-side and server-side validation for image uploads.
-
Mongoose: Utilized for interacting with MongoDB.
-
Markdown Rendering: Blogs are rendered with Markdown using
markdown-it
andhighlight.js
. -
Performance Optimization: Improved performance with
express-minify
andcompression
. -
Cloudinary: Used for storing images.
-
Route Security: Secured routes with middleware, requiring login for access to certain routes.
-
CORS and Rate Limiting: Implemented CORS and rate limiting to enhance security.
-
EJS Templating: Used EJS for rendering dynamic pages with reusable components like header, footer, and cards.
-
MVC Architecture: Organized code with a good folder structure following the MVC pattern.
-
Clone the repository:
git clone https://github.com/billalben/inktale-blog.git
-
Navigate to the project directory
cd inktale-blog
-
Install dependencies
npm install
-
Create a .env file in the root directory and add the necessary environment variables:
MONGO_URI=your_mongodb_connection_string SESSION_SECRET=your_session_secret CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret CORS_ORIGIN=your_website_link PORT=3000
-
Start the application:
npm start
-
Open your browser and navigate to
http://localhost:3000
.
Feel free to fork the repository and submit pull requests. Contributions are welcome!