|
π§ 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.
- Preview
- π¬ Live Demo
- π« Overview
- π― Features
- π οΈ Technology Stack
- π§ Architecture
- π Repository Structure
- π Prerequisites
- π§ͺ Installation
- π² Environment Configuration
- π Running the Application
- >_ Root Commands
- </> Available Scripts
- π€ Contributing
- π Issues
- π¨ Troubleshooting
- π Maintainer
- π₯ Contributors
- β€οΈ Project Support
- βοΈ License
| 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 |
βββββββββββββββββββββββββββ
β 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.
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.
- 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.

