Skip to content

M-YasirGhaffar/notes-taking-app-mern-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MERN Stack Notes Taking App

Introduction

Welcome to our MERN Stack Notes Taking App! This application is a robust solution for managing your notes, built using the MERN technology stack—MongoDB, Express.js, React, and Node.js. It's designed to help users perform CRUD (Create, Read, Update, Delete) operations seamlessly and supports a wide range of devices thanks to its responsive design.

Features

  • User Authentication: Provides secure access through login and registration features.
  • CRUD Operations: Allows full management of notes with create, read, update, and delete capabilities.
  • Search Functionality: Enables easy retrieval of notes through keyword searches.
  • Responsive Design: Ensures the app looks great and functions on both desktop and mobile platforms.
  • Real-time Updates: Employs React to deliver a dynamic and instantaneous interface.

Technology Stack

  • Frontend: React, React Router, Axios, Tailwind CSS
  • Backend: Node.js, Express.js
  • Database: MongoDB
  • Authentication: Managed through JSON Web Tokens (JWT)

Setup Instructions

Prerequisites

Ensure you have Node.js, npm, and a MongoDB account set up before you begin.

Backend Setup

  1. Begin by navigating to your backend directory:
    cd backend
  2. Install necessary dependencies:
    npm install
  3. Set up your environment variables in a .env file within the backend directory:
    ACCESS_TOKEN_SECRET=
    MONGO_URL=
    
  4. Launch the server:
    npm start

Frontend Setup

  1. Move to your frontend directory:
    cd frontend
  2. Install required dependencies:
    npm install
  3. Set up environment variables in .env:
    VITE_BASE_URL=
  4. Start the development server:
    npm run dev

Now, the app should be running at http://localhost:3000.

How to Use

  • Register/Login: Sign up for an account or log in.
  • Creating Notes: Add a new note with a title and details.
  • Viewing Notes: Browse your collection of notes on the dashboard.
  • Editing Notes: Modify a selected note's details directly.
  • Deleting Notes: Remove notes right from the dashboard.
  • Searching Notes: Quickly find your notes using the search feature.

Contributing

We welcome contributions! To get involved:

  1. Fork the repository.
  2. Create a new branch for your feature: git checkout -b feature-branch-name.
  3. Commit your changes: git commit -m 'Add some feature'.
  4. Push to your branch: git push origin feature-branch-name.
  5. Submit a pull request.

For more information on how to create a pull request, visit the GitHub help page.

Areas of Improvement

This application was primarily developed as a practice project focusing on several key areas of web development, including API integration, the MERN stack (MongoDB, Express, React, Node.js), cloud deployment (specifically Heroku), as well as authentication and authorization mechanisms. Given its nature as a practice tool, there are several areas where the application could be improved for a more polished, user-friendly experience:

  • User Interface and Experience: The application currently lacks refined styles, animations, and feedback mechanisms that contribute to a seamless user experience. Future iterations could benefit from a more thoughtful design approach to enhance usability and aesthetic appeal.

  • Data Validation and Restrictions: There are no restrictions on the length of titles, content, or tags, which can lead to unstyled or awkwardly displayed content. Implementing character limits and content guidelines would help maintain a consistent and visually appealing layout.

  • Field Requirements Indication: Required fields are not currently marked with an asterisk (*) or any other indicator. This can lead to user confusion and errors during form submission. Clearly marking required fields would improve the form-filling experience and reduce the likelihood of submission errors.

  • Unique Use Case Development: As the application was developed for practice purposes, it does not focus on a unique use case. Identifying and implementing a specific use case could provide direction for more targeted improvements and features, making the app more useful for its end-users.

Note

It's important to note that this application was intended solely as a practice project for exploring and improving upon various web development skills. The areas highlighted for improvement reflect its status as a learning tool rather than a market-ready product. Future development efforts can address these areas to enhance the application's functionality and user experience.

License

This project is released under the MIT License. For more details, see the LICENSE file in the repository.


Feel free to adapt and extend this README to better fit your project's needs!