Node Notes (SSR)
Jun 2021PersonalJun 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