Evernote Clone

A simplified version of the popular note-taking application, Evernote. The project focuses on recreating the core functionalities of Evernote in a minimalistic and user-friendly web application.


Key Features

The Evernote Clone project offers several key features, including:

  • Rich Text Editing: The integration of EditorJS allows users to create notes with advanced formatting options, including tables, headings, dividers, lists, and checklists. This enhances the versatility and expressiveness of the note-taking experience.
  • Note Sorting: Users have the ability to sort their notes based on various criteria such as date created, date updated, or title. This provides flexibility in organizing and managing notes effectively.
  • User Authentication: Users are able to create accounts and securely log in to the application, ensuring the privacy and security of their notes.
  • Server Security: The project incorporates server-side security measures to restrict access to notes, ensuring that each note can only be accessed by its creator. This feature protects user data and maintains confidentiality.
  • Mobile Responsiveness: The Evernote Clone application is designed to be mobile-responsive, ensuring that it renders properly and offers a seamless experience across different devices, including mobile phones and desktops.
  • CI/CD with GitHub Actions and Firebase Hosting: The project is set up for Continuous Integration and Continuous Deployment (CI/CD) using GitHub Actions. Whenever new changes are pushed to the project's GitHub repository's main branch, GitHub Actions automatically triggers the build, testing, and deployment

Technologies Used

The project utilizes a combination of front-end and back-end technologies to achieve its objectives. Let's explore the tools used in each part:

Backend

For the backend, I chose Firebase as the hosting solution, providing a reliable and scalable infrastructure. Firebase is also used for authentication, allowing users to securely access their notes. Additionally, Firestore, a NoSQL database offered by Firebase, is utilized to store and manage the notes created by users.

Frontend

The frontend of the project incorporates the following technologies and frameworks:

  • HTML5, CSS3, JavaScript, and Sass: These web technologies form the foundation for creating the user interface and styling the application.
  • Bootstrap 5: Bootstrap is employed as the CSS framework to enhance the visual appearance and responsiveness of the application. It provides a set of pre-defined styles and components that facilitate rapid development.
  • React: The project utilizes React, a popular front-end JavaScript library, to build the user interface components and handle the application's state management efficiently.
  • EditorJS: To enable a more robust editing experience, the project integrates EditorJS as a rich text editor. EditorJS allows users to create notes with enhanced features such as tables, headings, dividers, lists, and checklists. You can learn more about EditorJS and its benefits at https://editorjs.io.
  • React Router: The latest version of React Router is employed to handle client-side navigation within the application. This enables seamless transitions between different sections of the app and improves user experience.
  • TypeScript: The project incorporates TypeScript to enhance code reliability and maintainability. TypeScript provides type safety, allowing for easier debugging and reducing potential runtime errors.
  • ViteJS: Instead of using webpack, which is highly popular in react projects, the project utilizes ViteJS for front-end tooling. ViteJS is a build tool that focuses on fast development and better performance. While webpack is still a valid option, ViteJS proved to be fast and easy to work with. More information about ViteJS can be found at https://vitejs.dev/.

By leveraging these tools and features, the Evernote Clone project aims to provide users with a simplified, yet powerful, note-taking application that caters to their organizational and creative needs.