Node Notes (SSR)

Jun 2021
PersonalJun 20215 technologies14 features

About this project

A full-stack server-side rendered note-taking application, my first Node.js project built with Express.js, MySQL, EJS templating, and Bootstrap. Implements Passport.js local authentication with session-based login, bcrypt password hashing, and flash messages.

Supports full CRUD for notes with importance-based classification (Normal, Important, Very Important), title search, and user isolation so each user only sees their own notes.

Includes email-based password recovery via Nodemailer with JWT-verified reset links, an admin user management panel, configurable start screen preferences, and a landing page with onboarding guide. Deployed on Heroku with ClearDB MySQL.

Features

User registration and login with Passport.js local strategy, session-based auth, and bcrypt password hashing
Full CRUD for notes with title, content, and three importance levels color-coded in the UI
Filter notes by importance (Normal, Important, Very Important)
Search notes by title with SQL LIKE query, scoped to the logged-in user
Complete user isolation — every query filters by the authenticated user
Profile editing and password change with current password verification
Customizable start screen (profile or notes view after login)
Email-based password recovery with JWT tokens (15-min expiry) sent via Nodemailer
Email verification API to check if an email already exists
Admin user management panel: list, add, edit, and delete users with cascading note deletion
Landing page with 3-step onboarding guide, feature cards, and contact form
Responsive Bootstrap layout with sidebar navigation and mobile-optimized card grid
Session persistence via express-mysql-session store
Middleware guards for authentication and redirect management

Tech Stack

Node.jsExpress.jsBootstrapEJSPassport.js