Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/overloadedsam/notes-taker-app-assignment
A note taking web app developed using MERN stack
https://github.com/overloadedsam/notes-taker-app-assignment
expressjs jwt markdown-editor mognodb nodejs reactjs typescript
Last synced: about 1 month ago
JSON representation
A note taking web app developed using MERN stack
- Host: GitHub
- URL: https://github.com/overloadedsam/notes-taker-app-assignment
- Owner: OverloadedSam
- Created: 2024-01-12T12:59:34.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-01-13T16:05:35.000Z (10 months ago)
- Last Synced: 2024-10-12T16:43:00.120Z (about 1 month ago)
- Topics: expressjs, jwt, markdown-editor, mognodb, nodejs, reactjs, typescript
- Language: TypeScript
- Homepage: https://notetakerapp-50t3.onrender.com
- Size: 158 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Notes Taker
Welcome to Notes Taker, the seamlessly intuitive and feature-rich application designed to elevate your note-taking experience. Whether you're a student, professional, or creative mind, Notes Taker is your go-to solution for capturing ideas, staying organized, and unlocking your productivity potential. This project uses `ReactJS` as frontend, `NodeJS` as backend framework and `MongoDB` as the database.
## Requirements
- `node >= 20.0.0`
- `npm >= 10.2.3`
- `MongodDB (remote or local)`## Usage
1. Clone the repository$ git clone https://github.com/OverloadedSam/notes-taker-app-assignment.git
2. Navigate to the locations below and execute the command npm install.
$ cd notes-taker-app-assignment/client/
$ cd notes-taker-app-assignment/server3. Install project dependencies (For both client and server).
$ npm install
## Configure App
Prior to starting the app (client and server), ensure that you configure the necessary environment variables.### 1. Environment variables for server
Create a `.env` file at `notes-taker-app-assignment/server/` directory and set the following environment variables.PORT="8000"
DB_CONNECTION_URI="Your mongodb database connection string"
SALT="10"
ACCESS_TOKEN_SECRET="Secret for token. Set a value to random long string"### 2. Environment variables for client
Create a `.env` file at `notes-taker-app-assignment/client/` directory and set the following environment variables.VITE_BASE_API_URL="Set this to the backend url" // e.g: http://localhost:8000/api
## Running The Project For Development
### Run server (Node API) (PORT: 8000)$ cd server/ // go to server directory
$ npm run dev // run backend with hot reloading.
// or you can run the backend with ts-node
$ ts-node src/server.ts### Run client (Vite + React app) (PORT: 3000)
$ cd client/ //go to client directory
$ npm run dev## Building For Production
Before initiating the production build, ensure that you have correctly configured the URLs for the client and server environment variables.### Build Client
Navigate to the `notes-taker-app-assignment/client/` directory and run the following command to build the client.$ npm run build
After a successful build process, you'll find the built code within the `notes-taker-app-assignment/client/dist/` directory.
### Build Server
Navigate to the `notes-taker-app-assignment/server/` directory and run the following command to build the client.$ npm run build
After a successful build process, you'll find the built code within the `notes-taker-app-assignment/server/dist/` directory.
## Deploy to Render
While this project is compatible with various platforms such as AWS, GCP, or Heroku, we have chosen to deploy it on Render due to its user-friendly interface and cost-free nature1. Sign up for a Render account at [Render](https://render.com/).
2. To deploy the server, create a new web service by navigating to `New > Web Service` in the menu.
3. For deploying the client, create a new static site by navigating to `New > Static Site` in the menu.## Dependencies (Tech Stack)
| Client Side Dependencies | Server Side Dependencies |
| ------------------------------ | ------------------------------ |
| @emotion/react: ^11.11.3 | bcrypt: ^5.1.1 |
| @emotion/styled: ^11.11.0 | cors: ^2.8.5 |
| @hookform/resolvers: ^3.3.4 | dotenv: ^16.3.1 |
| @mui/icons-material: ^5.15.4 | express: ^4.18.2 |
| @mui/lab: ^5.0.0-alpha.160 | helmet: ^7.1.0 |
| @mui/material: ^5.15.4 | jsonwebtoken: ^9.0.2 |
| @reduxjs/toolkit: ^2.0.1 | mongoose: ^8.0.4 |
| react: ^18.2.0 | morgan: ^1.10.0 |
| react-dom: ^18.2.0 | yup: ^1.3.3 |
| react-hook-form: ^7.49.3 | |
| react-hot-toast: ^2.4.1 | |
| react-markdown: ^9.0.1 | |
| react-redux: ^9.0.4 | |
| react-router-dom: ^6.21.2 | |
| react-simplemde-editor: ^5.2.0 | |
| yup: ^1.3.3 | || Client Side Dev Dependencies | Server Side Dev Dependencies |
| ------------------------------ | ------------------------------ |
| @types/node: ^20.11.0 | @types/bcrypt: ^5.0.2 |
| @types/react: ^18.2.43 | @types/cors: ^2.8.17 |
| @types/react-dom: ^18.2.17 | @types/express: ^4.17.21 |
| @typescript-eslint/eslint-plugin: ^6.14.0 | @types/jsonwebtoken: ^9.0.5 |
| @typescript-eslint/parser: ^6.14.0 | @types/morgan: ^1.9.9 |
| @vitejs/plugin-react: ^4.2.1 | @types/node: ^20.11.0 |
| eslint: ^8.55.0 | nodemon: ^3.0.2 |
| eslint-plugin-react-hooks: ^4.6.0 | ts-node: ^10.9.2 |
| eslint-plugin-react-refresh: ^0.4.5 | typescript: ^5.3.3 |
| typescript: ^5.2.2 | typescript: ^5.3.3 |
| vite: ^5.0.8 | |