Skip to content

soumya813/Notezy

Repository files navigation

πŸ“ Notezy - A Secure, Minimalistic Note-Taking Platform

GitHub last commit Issues Pull Requests SSoC'25 License

Welcome to Notezy, a simple and intuitive web-based note-taking platform built with Node.js, Express, MongoDB, and EJS templating. The app allows users to sign up, log in, create, view, search, and delete notes β€” all with a clean UI and user-friendly dashboard.

πŸš€ Proudly selected for SSoC'25
πŸ“Œ Maintained by Soumya Srivastav (Project Admin)


πŸ“Έ Demo

Notezy UI Screenshot

πŸ’‘ Want to try it live? Deploying soon on Vercel/Render – Stay tuned!


πŸ“– Features

  • πŸ‘€ User Authentication (Register/Login with secure sessions)
  • ✏️ Create, Edit & Delete Notes
  • πŸ” Search Notes by title/content
  • 🧾 Clean & Responsive UI with EJS Templates
  • 🧠 MVC Architecture with Controllers, Routes, and Middleware
  • πŸ“ Well-structured codebase for scalability
  • βœ… Protected routes using middleware (checkAuth.js)
  • βš™οΈ MongoDB integration with Mongoose schemas

πŸ› οΈ Tech Stack

Tech Description
Node.js JavaScript runtime
Express.js Web framework
MongoDB NoSQL Database
Mongoose ODM for MongoDB
EJS Embedded JavaScript
Bootstrap Frontend Styling
express-session Session management

πŸ”— Project Structure

Notezy/
β”œβ”€β”€ app.js
β”œβ”€β”€ package.json
β”œβ”€β”€ .env
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ css/
β”‚   β”‚   └── main.css
β”‚   └── img/
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ mainController.js
β”‚   β”‚   └── dashboardController.js
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   └── checkAuth.js
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ User.js
β”‚   β”‚   └── Notes.js
β”‚   └── routes/
β”‚       β”œβ”€β”€ auth.js
β”‚       β”œβ”€β”€ dashboard.js
β”‚       └── index.js
β”œβ”€β”€ views/
β”‚   β”œβ”€β”€ index.ejs
β”‚   β”œβ”€β”€ about.ejs
β”‚   β”œβ”€β”€ 404.ejs
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   β”œβ”€β”€ front-page.ejs
β”‚   β”‚   β”œβ”€β”€ main.ejs
β”‚   β”‚   └── dashboard.ejs
β”‚   β”œβ”€β”€ partials/
β”‚   β”‚   β”œβ”€β”€ header.ejs
β”‚   β”‚   β”œβ”€β”€ footer.ejs
β”‚   β”‚   └── header_dashboard.ejs
β”‚   └── dashboard/
β”‚       β”œβ”€β”€ add.ejs
β”‚       β”œβ”€β”€ index.ejs
β”‚       β”œβ”€β”€ search.ejs
β”‚       └── view-notes.ejs

πŸš€ Getting Started

  1. Clone the repository
git clone https://github.com/soumya813/Notes-App.git
cd Notes-App
  1. Install Dependencies
npm install
  1. Set Up Environment Variables

Refer to CONTRIBUTING.md to find out how to get the keys.

Create a .env file in the root directory and add:

MONGODB_URI=your_mongodb_connection_string
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL=http://localhost:5000/google/callback
PORT=5000
  1. Run the App
npm start

The app will run at http://localhost:5000


πŸš€ Production Deployment

Required Environment Variables

Set these environment variables in your hosting provider:

# Database (Required)
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/notes-app

# Google OAuth (Required)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL=https://yourdomain.com/google/callback

# Security (Required for production)
SESSION_SECRET=your_super_secret_random_string_here
NODE_ENV=production
PORT=5000

# Optional Features
HUGGING_FACE_API=your_hugging_face_token
REDIS_URL=redis://localhost:6379
DOMAIN=yourdomain.com

# Email (Optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password
SMTP_FROM=noreply@yourdomain.com

Deploy to Heroku

  1. Install Heroku CLI
  2. Login and create app:
heroku login
heroku create your-notes-app
  1. Set environment variables:
heroku config:set NODE_ENV=production
heroku config:set MONGODB_URI=your_mongodb_uri
heroku config:set SESSION_SECRET=your_secret
# ... add all other required vars
  1. Deploy:
git add .
git commit -m "Deploy to production"
git push heroku main

Deploy with Docker

  1. Build image:
docker build -t notes-app .
  1. Run container:
docker run -d \
  -p 5000:5000 \
  -e NODE_ENV=production \
  -e MONGODB_URI=your_mongodb_uri \
  -e SESSION_SECRET=your_secret \
  --name notes-app \
  notes-app

Deploy to Render/Railway

  1. Connect your GitHub repository
  2. Set environment variables in the dashboard
  3. Use build command: npm install
  4. Use start command: npm start

πŸ”„ Real-time Collaboration

This app includes collaborative editing powered by Socket.IO:

  • Live updates while multiple authenticated users view the same note
  • Presence and typing indicators
  • Changes sync instantly; saving persists the note

It runs over the same Express server and reuses session authentication. No extra setup is required for local development.


🌟 SSoC’25 Spotlight

πŸ“’ This project is officially part of SSoC'25 (Social Summer of Code 2025)!


🀝 Contributing

We ❀️ contributions!

  • Fork the repo
  • Create a new branch: git checkout -b feature-name
  • Make your changes and commit
  • Push and submit a PR
  • Wait for review πŸ™Œ

Please follow our Code of Conduct and Contributing Guidelines (coming soon).


πŸ‘€ Project Admin

Name GitHub Role
Soumya Srivastav @soumya813 Project Admin

πŸ§‘β€πŸ’» Contributors


πŸ“ƒ License

This project is licensed under the MIT License. See LICENSE for details.


About

Resources

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 10