|
Create, organize, and manage notes and ideas through a React frontend, Express REST API, MongoDB persistence, and Redis-powered rate limiting. |
The application is available at:
🔗 https://thinkboard-eqpi.onrender.com
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.
- Overview
- Features
- Technology Stack
- Architecture
- Repository Structure
- Prerequisites
- Installation
- Environment Configuration
- Running the Application
- Root Commands
- Available Scripts
- Contributing
- Good First Contributions
- Troubleshooting
- Maintainer
- Contributors
- Project Support
- License
- Issues
| 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 | Purpose |
|---|---|
| React 19 | User Interface |
| Vite | Development & Build Tool |
| React Router | Client-Side Routing |
| Tailwind CSS | Styling |
| DaisyUI | UI Components |
| Axios | HTTP Client |
| React Hot Toast | Notifications |
| Lucide React | Icons |
| Technology | Purpose |
|---|---|
| Node.js | Runtime Environment |
| Express.js | REST API |
| MongoDB | Database |
| Mongoose | Object Data Modeling |
| Upstash Redis | Rate Limiting |
| Dotenv | Environment Configuration |
| CORS | Cross-Origin Resource Sharing |
| Nodemon | Development Server |
┌─────────────────────────┐
│ React + Vite │
│ Frontend SPA │
└────────────┬────────────┘
│ HTTP
▼
┌─────────────────────────┐
│ Express API │
│ Backend Server │
└───────┬────────┬────────┘
│ │
▼ ▼
MongoDB Upstash Redis
Storage Rate Limiting
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
Ensure the following software is installed before running the project:
- Node.js
- npm
- MongoDB
- Upstash Redis account
Verify installation:
node -v
npm -vgit clone https://github.com/niharika-mente/ThinkBoard.git
cd ThinkBoardcd backend
npm installcd ../frontend
npm installCreate 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| 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 |
No frontend environment variables are currently required.
ThinkBoard supports both local MongoDB instances and MongoDB Atlas.
MONGO_URI=mongodb://localhost:27017/thinkboard- Create a MongoDB Atlas cluster.
- Create a database user.
- Configure network access.
- Copy the connection string from Atlas.
- Replace
MONGO_URIin your.envfile with the Atlas connection string.
Upstash Redis is used for API rate limiting.
- Create an Upstash account.
- Create a Redis database.
- Open the database dashboard.
- Copy:
UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
- Add them to the
.envfile.
| Service | Command |
|---|---|
| Backend | cd backend && npm run dev |
| Frontend | cd frontend && npm run dev |
Backend:
http://localhost:5001
Frontend:
http://localhost:5173
Note:
npm startlaunches only the backend server. The frontend must be started separately during development usingnpm run devinside thefrontenddirectory.
| Command | Description |
|---|---|
npm run build |
Install dependencies and build the frontend |
npm start |
Start the backend production server |
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm start |
Start production server |
| 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 |
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.
# 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-featureOpen a Pull Request describing the changes and their purpose.
New contributors can help by:
- Improving documentation
- Reporting bugs
- Enhancing UI consistency
- Refactoring components
- Improving accessibility
- 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.
- Verify MongoDB is running.
- Verify the connection string.
- Verify database access permissions.
- Verify Upstash credentials.
- Verify REST URL and REST token.
- Restart the backend server.
rm -rf node_modules package-lock.json
npm installMaintained by @niharika-mente
Thanks to all the amazing people who contribute to ThinkBoard 🚀
Distributed under the ISC License.
See the LICENSE file for details.
For bug reports or feature requests:
- Search existing issues.
- Open a new issue if necessary.
- Provide reproduction steps.
- Include relevant logs and environment details.

