NoteMark is a full‑stack note and bookmark manager that lets you securely store, search and organize your notes and links in a single workspace.
The project is split into two apps:
- Backend (
backend): Node.js/Express REST API with MongoDB, JWT auth, and OAuth (Google/GitHub). - Frontend (
frontend): Next.js + React dashboard with a modern, responsive UI.
-
Secure authentication
- Email/password login and registration
- Multi‑provider OAuth (Google, GitHub)
- Session and token based access
-
Notes
- Create, edit, delete notes
- Search notes by text
- Favorite/star important notes
- Tag‑based filtering
-
Bookmarks
- Save and manage web links
- Automatic title fetching for URLs
- Starred/favorite bookmarks
-
Modern UI
- Dark themed dashboard
- Skeleton loading states and toasts
- Keyboard‑friendly navigation (command palette, search)
-
Frontend
- Next.js 13 (App Router), React 18, TypeScript
- Tailwind CSS, Radix UI components, Shadcn‑style UI
- Zustand for state management
- Axios for API communication
-
Backend
- Node.js + Express
- MongoDB + Mongoose
- Passport (Google, GitHub strategies)
- JSON Web Tokens (JWT)
- Zod for request validation
NoteMark/
backend/ # Node/Express API (auth, notes, bookmarks)
frontend/ # Next.js app (landing page + dashboard)
README.md # This file
For more details, see:
backend/README.md– API & backend setupfrontend/README.md– frontend/dashboard setup
- Node.js 18+ and npm
- A running MongoDB instance (local or hosted, e.g. MongoDB Atlas)
git clone https://github.com/KomalGoel18/NoteMark
cd NoteMarkInstall backend packages:
cd backend
npm installInstall frontend packages:
cd ../frontend
npm installCreate a .env file in backend with values similar to:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:3000
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_CALLBACK_URL=http://localhost:5000/api/auth/github/callback
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL=http://localhost:5000/api/auth/google/callback
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_USER=you@example.com
EMAIL_PASSWORD=your_smtp_passwordAdjust keys to match your actual configuration (see your auth and mailer setup if present).
Create a .env.local file in frontend:
NEXT_PUBLIC_API_BASE_URL=http://localhost:5000/apiUpdate this when deploying to production.
cd backend
npm run devThis starts the Express API on http://localhost:5000.
cd frontend
npm run devThis starts the Next.js app on http://localhost:3000.
Make sure the backend CORS origin list in backend/app.js includes your frontend URL.
Base URL: http://localhost:5000/api
-
Auth
POST /auth/registerPOST /auth/login- OAuth routes for Google/GitHub (see
backend/routes/auth.routes.js)
-
Notes
GET /notes– list notes (supports?q=search and&tags=filter)POST /notes– create a notePATCH /notes/:id– update a noteDELETE /notes/:id– delete a notePATCH /notes/:id/favorite– toggle favorite
-
Bookmarks
GET /bookmarksPOST /bookmarksPATCH /bookmarks/:idDELETE /bookmarks/:id
See the backend README for more details and any additional routes.
Key routes in the Next.js app:
/– public marketing/landing page/login– login form/register– registration/forgot-password,/reset-password/[token]– auth flows/notes– notes dashboard/bookmarks– bookmarks dashboard/starred– starred items
The UI uses reusable components in components/ui and domain components like CreateNoteModal and AddBookmarkModal.
-
Backend
npm run dev– start backend with nodemonnpm start– start backend with Node
-
Frontend
npm run dev– start Next.js dev servernpm run build– build for productionnpm start– run production buildnpm run lint– lint the codebasenpm run typecheck– TypeScript type checking