An open API service indexing awesome lists of open source software.

https://github.com/aliramazanyildirim/thinkboard-app

Thinkboard App is a modern idea management tool developed with JavaScript. It enables users to easily create, edit, and organize ideas with a simple, intuitive interface. No authentication required.
https://github.com/aliramazanyildirim/thinkboard-app

axios bun daisy-ui express-js lucide-icons lucide-react mongodb nextjs nodejs rate-limit react react-hot-toast react-router tailwindcss upstash upstash-redis vite

Last synced: 8 months ago
JSON representation

Thinkboard App is a modern idea management tool developed with JavaScript. It enables users to easily create, edit, and organize ideas with a simple, intuitive interface. No authentication required.

Awesome Lists containing this project

README

          

# ThinkBoard - Smart Notes App

## πŸ‡©πŸ‡ͺ Deutsch | πŸ‡ΊπŸ‡Έ English

---

## πŸ‡©πŸ‡ͺ Deutsch

### Übersicht

ThinkBoard ist eine moderne, responsive Notiz-App, die es Benutzern ermΓΆglicht, ihre Gedanken und Ideen effizient zu organisieren. Die App bietet eine intuitive BenutzeroberflΓ€che mit erweiterten Funktionen wie Notiz-Kategorisierung, Priorisierung und Archivierung.

### ✨ Hauptfunktionen

- **πŸ“ Notiz-Management**: Erstellen, bearbeiten und lΓΆschen von Notizen
- **🏷️ Tag-System**: Organisieren von Notizen mit anpassbaren Tags
- **πŸ“Œ Pin-Funktion**: Wichtige Notizen anheften
- **πŸ“¦ Archivierung**: Notizen archivieren und wiederherstellen
- **🎨 Farbkodierung**: Individuelle Farben für bessere Visualisierung
- **⚑ PrioritÀtsstufen**: Low, Medium, High PrioritÀten
- **πŸ”’ Rate Limiting**: Schutz vor zu vielen Anfragen
- **πŸ“± Responsive Design**: Optimiert fΓΌr alle GerΓ€te

### πŸ› οΈ Technologie-Stack

#### Frontend

- **React 19.1.0** - Moderne UI-Bibliothek
- **React Router 7.6.3** - Client-seitiges Routing
- **Tailwind CSS 3.4.17** - Utility-first CSS Framework
- **DaisyUI 5.0.43** - Tailwind CSS Komponenten-Bibliothek
- **Lucide React** - Moderne Icon-Bibliothek
- **React Hot Toast** - Benutzerfreundliche Benachrichtigungen
- **Axios** - HTTP-Client fΓΌr API-Aufrufe
- **Vite** - Schnelles Build-Tool

#### Backend

- **Node.js mit Bun Runtime** - Moderne JavaScript-Laufzeit
- **Express 5.1.0** - Web-Framework
- **MongoDB mit Mongoose 8.16.0** - NoSQL-Datenbank
- **Upstash Redis** - Rate Limiting und Caching
- **CORS** - Cross-Origin Resource Sharing

### πŸš€ Installation und Setup

#### Voraussetzungen

- Node.js (v18 oder hΓΆher)
- Bun Runtime
- MongoDB-Instanz
- Upstash Redis-Account

#### 1. Repository klonen

```bash
git clone
cd thinkboard-app
```

#### 2. Backend Setup

```bash
cd backend
bun install

# Umgebungsvariablen konfigurieren
cp .env.example .env
```

**Backend .env Konfiguration:**

```env
MONGO_URI=mongodb://localhost:27017/thinkboard
PORT=5001
FRONTEND_URL=http://localhost:5173
UPSTASH_REDIS_REST_URL=your_redis_url
UPSTASH_REDIS_REST_TOKEN=your_redis_token
```

#### 3. Frontend Setup

```bash
cd frontend
bun install

# Umgebungsvariablen konfigurieren
cp .env.example .env
```

**Frontend .env Konfiguration:**

```env
VITE_API_URL=http://localhost:5001/api
```

#### 4. Anwendung starten

```bash
# Backend starten
cd backend
bun run dev

# Frontend starten (neues Terminal)
cd frontend
bun run dev
```

### πŸ“ Projektstruktur

```path
thinkboard-app/
β”œβ”€β”€ backend/
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ config/
β”‚ β”‚ β”‚ β”œβ”€β”€ db.js # MongoDB-Konfiguration
β”‚ β”‚ β”‚ └── upstash.js # Redis Rate Limiting
β”‚ β”‚ β”œβ”€β”€ controllers/
β”‚ β”‚ β”‚ └── notesController.js # Notiz-Logik
β”‚ β”‚ β”œβ”€β”€ middleware/
β”‚ β”‚ β”‚ └── rateLimiter.js # Rate Limiting Middleware
β”‚ β”‚ β”œβ”€β”€ models/
β”‚ β”‚ β”‚ └── Note.js # Notiz-Datenmodell
β”‚ β”‚ β”œβ”€β”€ routes/
β”‚ β”‚ β”‚ └── notesRoutes.js # API-Routen
β”‚ β”‚ └── server.js # Server-Konfiguration
β”‚ └── package.json
β”œβ”€β”€ frontend/
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ components/
β”‚ β”‚ β”‚ β”œβ”€β”€ NavBar.jsx # Navigation
β”‚ β”‚ β”‚ β”œβ”€β”€ NoteCard.jsx # Notiz-Karte
β”‚ β”‚ β”‚ β”œβ”€β”€ NotesNotFound.jsx # Leerzustand
β”‚ β”‚ β”‚ └── RateLimitedUi.jsx # Rate Limit UI
β”‚ β”‚ β”œβ”€β”€ pages/
β”‚ β”‚ β”‚ β”œβ”€β”€ HomePage.jsx # Startseite
β”‚ β”‚ β”‚ β”œβ”€β”€ CreatePage.jsx # Notiz erstellen
β”‚ β”‚ β”‚ └── NoteDetailPage.jsx # Notiz bearbeiten
β”‚ β”‚ β”œβ”€β”€ lib/
β”‚ β”‚ β”‚ └── axios.js # HTTP-Client
β”‚ β”‚ └── App.jsx # Haupt-App-Komponente
β”‚ └── package.json
└── README.md
```

### πŸ”§ VerfΓΌgbare Skripte

#### Backend-Bereich

```bash
bun run dev # Entwicklungsserver mit nodemon
bun run start # Produktionsserver
```

#### Frontend-Bereich

```bash
bun run dev # Entwicklungsserver
bun run build # Production Build
bun run preview # Build-Vorschau
```

### πŸ“Š API-Endpunkte

#### Notizen

- `GET /api/notes` - Alle Notizen abrufen
- `GET /api/notes/:id` - Einzelne Notiz abrufen
- `POST /api/notes` - Neue Notiz erstellen
- `PUT /api/notes/:id` - Notiz aktualisieren
- `DELETE /api/notes/:id` - Notiz lΓΆschen

#### Notiz-Aktionen

- `PATCH /api/notes/:id/pin` - Notiz an-/abheften
- `PATCH /api/notes/:id/archive` - Notiz archivieren/wiederherstellen

### 🎨 Design-System

- **Farbschema**: Dark Theme mit grΓΌnen Akzenten
- **Typografie**: System-Schriftarten mit Tailwind CSS
- **Komponenten**: DaisyUI fΓΌr konsistente UI-Elemente
- **Icons**: Lucide React fΓΌr moderne Icons

### πŸ”’ Sicherheit

- **Rate Limiting**: 5 Anfragen pro Minute mit Upstash Redis
- **Input-Validierung**: VollstΓ€ndige Validierung auf Backend-Seite
- **CORS-Konfiguration**: Sichere Cross-Origin-Requests
- **Fehlerbehandlung**: Umfassende Fehlerbehandlung

### πŸ“± Responsive Design

- **Mobile-First**: Optimiert fΓΌr MobilgerΓ€te
- **Breakpoints**: sm, md, lg, xl Breakpoints
- **Touch-Friendly**: Optimiert fΓΌr Touch-Interfaces

---

## πŸ‡ΊπŸ‡Έ English

### Overview

ThinkBoard is a modern, responsive note-taking app that allows users to efficiently organize their thoughts and ideas. The app features an intuitive user interface with advanced features like note categorization, prioritization, and archiving.

### ✨ Key Features

- **πŸ“ Note Management**: Create, edit, and delete notes
- **🏷️ Tag System**: Organize notes with customizable tags
- **πŸ“Œ Pin Function**: Pin important notes
- **πŸ“¦ Archiving**: Archive and restore notes
- **🎨 Color Coding**: Individual colors for better visualization
- **⚑ Priority Levels**: Low, Medium, High priorities
- **πŸ”’ Rate Limiting**: Protection against too many requests
- **πŸ“± Responsive Design**: Optimized for all devices

### πŸ› οΈ Technology Stack

#### Frontend

- **React 19.1.0** - Modern UI library
- **React Router 7.6.3** - Client-side routing
- **Tailwind CSS 3.4.17** - Utility-first CSS framework
- **DaisyUI 5.0.43** - Tailwind CSS component library
- **Lucide React** - Modern icon library
- **React Hot Toast** - User-friendly notifications
- **Axios** - HTTP client for API calls
- **Vite** - Fast build tool

#### Backend

- **Node.js with Bun Runtime** - Modern JavaScript runtime
- **Express 5.1.0** - Web framework
- **MongoDB with Mongoose 8.16.0** - NoSQL database
- **Upstash Redis** - Rate limiting and caching
- **CORS** - Cross-Origin Resource Sharing

### πŸš€ Installation and Setup

#### Prerequisites

- Node.js (v18 or higher)
- Bun Runtime
- MongoDB instance
- Upstash Redis account

#### 1. Clone Repository

```bash
git clone
cd thinkboard-app
```

#### 2. Backend Setup

```bash
cd backend
bun install

# Configure environment variables
cp .env.example .env
```

**Backend .env Configuration:**

```env
MONGO_URI=mongodb://localhost:27017/thinkboard
PORT=5001
FRONTEND_URL=http://localhost:5173
UPSTASH_REDIS_REST_URL=your_redis_url
UPSTASH_REDIS_REST_TOKEN=your_redis_token
```

#### 3. Frontend Setup

```bash
cd frontend
bun install

# Configure environment variables
cp .env.example .env
```

**Frontend .env Configuration:**

```env
VITE_API_URL=http://localhost:5001/api
```

#### 4. Start Application

```bash
# Start backend
cd backend
bun run dev

# Start frontend (new terminal)
cd frontend
bun run dev
```

### πŸ“ Project Structure

```path
thinkboard-app/
β”œβ”€β”€ backend/
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ config/
β”‚ β”‚ β”‚ β”œβ”€β”€ db.js # MongoDB configuration
β”‚ β”‚ β”‚ └── upstash.js # Redis rate limiting
β”‚ β”‚ β”œβ”€β”€ controllers/
β”‚ β”‚ β”‚ └── notesController.js # Note logic
β”‚ β”‚ β”œβ”€β”€ middleware/
β”‚ β”‚ β”‚ └── rateLimiter.js # Rate limiting middleware
β”‚ β”‚ β”œβ”€β”€ models/
β”‚ β”‚ β”‚ └── Note.js # Note data model
β”‚ β”‚ β”œβ”€β”€ routes/
β”‚ β”‚ β”‚ └── notesRoutes.js # API routes
β”‚ β”‚ └── server.js # Server configuration
β”‚ └── package.json
β”œβ”€β”€ frontend/
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ components/
β”‚ β”‚ β”‚ β”œβ”€β”€ NavBar.jsx # Navigation
β”‚ β”‚ β”‚ β”œβ”€β”€ NoteCard.jsx # Note card
β”‚ β”‚ β”‚ β”œβ”€β”€ NotesNotFound.jsx # Empty state
β”‚ β”‚ β”‚ └── RateLimitedUi.jsx # Rate limit UI
β”‚ β”‚ β”œβ”€β”€ pages/
β”‚ β”‚ β”‚ β”œβ”€β”€ HomePage.jsx # Home page
β”‚ β”‚ β”‚ β”œβ”€β”€ CreatePage.jsx # Create note
β”‚ β”‚ β”‚ └── NoteDetailPage.jsx # Edit note
β”‚ β”‚ β”œβ”€β”€ lib/
β”‚ β”‚ β”‚ └── axios.js # HTTP client
β”‚ β”‚ └── App.jsx # Main app component
β”‚ └── package.json
└── README.md
```

### πŸ”§ Available Scripts

#### Backend

```bash
bun run dev # Development server with nodemon
bun run start # Production server
```

#### Frontend

```bash
bun run dev # Development server
bun run build # Production build
bun run preview # Build preview
```

### πŸ“Š API Endpoints

#### Notes

- `GET /api/notes` - Get all notes
- `GET /api/notes/:id` - Get single note
- `POST /api/notes` - Create new note
- `PUT /api/notes/:id` - Update note
- `DELETE /api/notes/:id` - Delete note

#### Note Actions

- `PATCH /api/notes/:id/pin` - Pin/unpin note
- `PATCH /api/notes/:id/archive` - Archive/restore note

### 🎨 Design System

- **Color Scheme**: Dark theme with green accents
- **Typography**: System fonts with Tailwind CSS
- **Components**: DaisyUI for consistent UI elements
- **Icons**: Lucide React for modern icons

### πŸ”’ Security

- **Rate Limiting**: 5 requests per minute with Upstash Redis
- **Input Validation**: Complete validation on backend side
- **CORS Configuration**: Secure cross-origin requests
- **Error Handling**: Comprehensive error handling

### πŸ“± Responsive Design

- **Mobile-First**: Optimized for mobile devices
- **Breakpoints**: sm, md, lg, xl breakpoints
- **Touch-Friendly**: Optimized for touch interfaces

---

## 🀝 Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## πŸ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgments

- React team for the amazing framework
- Tailwind CSS for the utility-first approach
- MongoDB for the flexible database
- Bun for the fast JavaScript runtime