Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/billalben/inktale-blog
Inktale Blog
https://github.com/billalben/inktale-blog
bcrypt cloudinary css ejs express html javascript markdown-it mongodb mongoose multer nodejs
Last synced: 25 days ago
JSON representation
Inktale Blog
- Host: GitHub
- URL: https://github.com/billalben/inktale-blog
- Owner: billalben
- Created: 2024-08-18T16:37:15.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-09-17T22:10:12.000Z (about 2 months ago)
- Last Synced: 2024-09-28T07:20:30.565Z (about 1 month ago)
- Topics: bcrypt, cloudinary, css, ejs, express, html, javascript, markdown-it, mongodb, mongoose, multer, nodejs
- Language: JavaScript
- Homepage: https://inktale-blog.onrender.com/
- Size: 269 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Inktale
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.
## Troubleshooting
- **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](https://inktale-blog.onrender.com)
## Features
- **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.
## Technical Details
- **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` and `highlight.js`.
- **Performance Optimization**: Improved performance with `express-minify` and `compression`.
- **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.
## Installation
1. Clone the repository:
``` bash
git clone https://github.com/billalben/inktale-blog.git
```2. Navigate to the project directory
``` bash
cd inktale-blog
```3. Install dependencies
``` bash
npm install
```4. Create a .env file in the root directory and add the necessary environment variables:
``` bashMONGO_URI=your_mongodb_connection_string
SESSION_SECRET=your_session_secretCLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secretCORS_ORIGIN=your_website_link
PORT=3000
```5. Start the application:
```bash
npm start
```6. Open your browser and navigate to `http://localhost:3000`.
## Contributing
Feel free to fork the repository and submit pull requests. Contributions are welcome!