Skip to content

niharika-mente/ThinkBoard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

64 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ThinkBoard Logo

ThinkBoard

MERN Stack Note Management Application

🧠 Create, organize, and manage notes and ideas through a React frontend, Express REST API, MongoDB persistence, and Redis-powered rate limiting.


License

React Node.js MongoDB Express.js Tailwind CSS Vite Redis




Preview

ThinkBoard Application Preview


🎬 Live Demo

The application is available at:

πŸ”— https://thinkboard-eqpi.onrender.com


πŸ’« Overview

ThinkBoard is a MERN-stack note and idea management application designed for creating, storing, and organizing notes through a web interface.

The frontend is built with React and Vite, while the backend uses Express and MongoDB. Upstash Redis is integrated for request rate limiting. The repository follows a monorepo structure containing separate frontend and backend applications.


πŸ“š Table of Contents

  1. Preview
  2. 🎬 Live Demo
  3. πŸ’« Overview
  4. 🎯 Features
  5. πŸ› οΈ Technology Stack
  6. πŸ–§ Architecture
  7. πŸ“‚ Repository Structure
  8. πŸ” Prerequisites
  9. πŸ§ͺ Installation
  10. 🌲 Environment Configuration
  11. πŸš€ Running the Application
  12. >_ Root Commands
  13. </> Available Scripts
  14. 🀝 Contributing
  15. πŸ“ Issues
  16. 🚨 Troubleshooting
  17. πŸ‘‘ Maintainer
  18. πŸ‘₯ Contributors
  19. ❀️ Project Support
  20. βš–οΈ License

🎯 Features

Feature Description
REST API Express-based backend API
Database Persistence MongoDB integration through Mongoose
Rate Limiting Request limiting using Upstash Redis
Routing Client-side routing with React Router
Notifications User feedback using React Hot Toast
Styling Tailwind CSS and DaisyUI
HTTP Client Axios-based API communication
Development Tooling Vite, ESLint, and Nodemon

πŸ› οΈ Technology Stack

Frontend

Technology Purpose
React React 19 User Interface
Vite Vite Development & Build Tool
React Router React Router Client-Side Routing
Tailwind CSS Tailwind CSS Styling
DaisyUI DaisyUI UI Components
Axios Axios HTTP Client
React Hot Toast React Hot Toast Notifications
Lucide React Lucide React Icons

Backend

Technology Purpose
Node.js Node.js Runtime Environment
Express.js Express.js REST API
MongoDB MongoDB Database
Mongoose Mongoose Object Data Modeling
Upstash Redis Upstash Redis Rate Limiting
Dotenv Dotenv Environment Configuration
CORS CORS Cross-Origin Resource Sharing
Nodemon Nodemon Development Server

πŸ–§ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      React + Vite       β”‚
β”‚      Frontend SPA       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚ HTTP
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       Express API       β”‚
β”‚      Backend Server     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚        β”‚
        β–Ό        β–Ό
   MongoDB   Upstash Redis
   Storage   Rate Limiting

πŸ“‚ Repository Structure

ThinkBoard/
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ package.json
β”‚   └── package-lock.json
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ vite.config.js
β”‚   β”œβ”€β”€ tailwind.config.js
β”‚   β”œβ”€β”€ postcss.config.js
β”‚   β”œβ”€β”€ eslint.config.js
β”‚   β”œβ”€β”€ package.json
β”‚   └── package-lock.json
β”‚
β”œβ”€β”€ package.json
β”œβ”€β”€ .gitignore
└── README.md

πŸ§ͺ Prerequisites

Ensure the following software is installed before running the project:

  • Node.js
  • npm
  • MongoDB
  • Upstash Redis account

Verify installation:

node -v
npm -v

πŸš€ Installation

Clone the Repository

git clone https://github.com/niharika-mente/ThinkBoard.git
cd ThinkBoard

Install Backend Dependencies

cd backend
npm install

Install Frontend Dependencies

cd ../frontend
npm install

🌲 Environment Configuration

Create a .env file inside the backend directory.

MONGO_URI=your_mongodb_connection_string_here
PORT=5001

UPSTASH_REDIS_REST_URL=your_upstash_redis_url_here
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token_here

Environment Variables

Variable Description
PORT Backend server port
MONGO_URI MongoDB connection string
UPSTASH_REDIS_REST_URL Upstash Redis REST endpoint
UPSTASH_REDIS_REST_TOKEN Upstash Redis authentication token

Frontend Environment Variables

No frontend environment variables are currently required.

MongoDB Setup

ThinkBoard supports both local MongoDB instances and MongoDB Atlas.

Local MongoDB Example

MONGO_URI=mongodb://localhost:27017/thinkboard

πŸƒ MongoDB Atlas

  1. Create a MongoDB Atlas cluster.
  2. Create a database user.
  3. Configure network access.
  4. Copy the connection string from Atlas.
  5. Replace MONGO_URI in your .env file with the Atlas connection string.

πŸ”΄ Upstash Redis Setup

Upstash Redis is used for API rate limiting.

  1. Create an Upstash account.
  2. Create a Redis database.
  3. Open the database dashboard.
  4. Copy:
    • UPSTASH_REDIS_REST_URL
    • UPSTASH_REDIS_REST_TOKEN
  5. Add them to the .env file.

πŸš€ Running the Application

Development

Service Command
Backend cd backend && npm run dev
Frontend cd frontend && npm run dev

Backend:

http://localhost:5001

Frontend:

http://localhost:5173

>_ Root Commands

Note: npm start launches only the backend server. The frontend must be started separately during development using npm run dev inside the frontend directory.

Command Description
npm run build Install dependencies and build the frontend
npm start Start the backend production server

</> Available Scripts

Backend

Command Description
npm run dev Start development server
npm start Start production server

Frontend

Command Description
npm run dev Start Vite development server
npm run build Build application
npm run preview Preview production build
npm run lint Run ESLint

🀝 Contributing

Contributions are welcome and appreciated. Whether you're fixing bugs, improving documentation, enhancing the user interface, or proposing new features, your contributions help improve ThinkBoard.

Contribution Workflow

# Fork the repository

# Clone your fork
git clone https://github.com/your-username/ThinkBoard.git

# Create a feature branch
git checkout -b feature/your-feature

# Commit changes
git commit -m "feat: add feature"

# Push changes
git push origin feature/your-feature

Open a Pull Request describing the changes and their purpose.

πŸ† Good First Contributions

New contributors can help by:

  • Improving documentation
  • Reporting bugs
  • Enhancing UI consistency
  • Refactoring components
  • Improving accessibility

πŸ“œ Contribution Guidelines

  • Follow the existing project structure.
  • Keep changes focused on a single concern.
  • Test changes before submission.
  • Update documentation when applicable.
  • Use clear and descriptive commit messages.

πŸ“ Issues

For bug reports or feature requests:

1. Search existing issues. 2. Open a new issue if necessary. 3. Provide reproduction steps. 4. Include relevant logs and environment details.


🚨 Troubleshooting

MongoDB Connection Issues

  • Verify MongoDB is running.
  • Verify the connection string.
  • Verify database access permissions.

Redis Authentication Issues

  • Verify Upstash credentials.
  • Verify REST URL and REST token.
  • Restart the backend server.

Dependency Issues

rm -rf node_modules package-lock.json
npm install

πŸ‘‘ Maintainer

Maintained by @niharika-mente


πŸ‘₯ Contributors

Thanks to all the amazing people who contribute to ThinkBoard πŸš€

Contributors


❀️ Project Support

Stars Β Β  Forks


βš–οΈ License

Distributed under the ISC License.

See the LICENSE file for details.


⭐ Star the repository if you find it useful

Built with React, Express, MongoDB, and Upstash Redis.

About

Save your Notes at the right moment!!!

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages