Skip to content

A full-stack web app for developers to save, organize, and manage bookmarks with collections, tags, and notes. Built with Node.js, Express, MongoDB, and EJS. Secure authentication, responsive design, and intuitive UX included.

License

DevOlabode/developer-bookmark-vault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Developer Bookmark Vault

Your Personal Knowledge Management System for Development Resources

A full-stack web application designed specifically for developers to save, organize, and manage their development bookmarks efficiently. Built with modern web technologies and security best practices.

License Node.js Express MongoDB

πŸ“‹ Table of Contents

✨ Features

πŸ” User Management

  • Secure user registration and authentication
  • Password hashing with bcrypt
  • Session management with Passport.js
  • User profile management

πŸ“š Bookmark Management

  • Create, read, update, and delete bookmarks
  • Rich bookmark details (title, URL, category, tags, notes)
  • User-specific bookmark organization

πŸ“ Collections System

  • Organize bookmarks into custom collections
  • Collection descriptions and metadata
  • Easy bookmark-to-collection assignment
  • Collection-based browsing

🏷️ Tagging & Categorization

  • Custom tags for flexible organization
  • Category-based filtering
  • Tag cloud visualization
  • Advanced search by tags and categories

πŸ“± Responsive Design

  • Mobile-first responsive design
  • Bootstrap 5 framework
  • Cross-browser compatibility
  • Touch-friendly interface

πŸ”” User Experience

  • Flash messages for user feedback
  • Intuitive navigation
  • Loading states and error handling
  • Clean, modern UI

🎯 Demo

Screenshots

Alt text Alt text Alt text Alt text

Live Demo

Coming soon...

πŸ› οΈ Tech Stack

Backend

  • Node.js - JavaScript runtime
  • Express.js - Web framework
  • MongoDB - NoSQL database
  • Mongoose - MongoDB object modeling
  • Passport.js - Authentication middleware
  • bcrypt - Password hashing
  • Joi - Input validation
  • connect-flash - Flash messages

Frontend

  • EJS - Templating engine
  • Bootstrap 5 - CSS framework
  • Font Awesome - Icons
  • Vanilla JavaScript - Client-side functionality

Development Tools

  • Nodemon - Development server
  • ESLint - Code linting
  • Prettier - Code formatting

πŸš€ Getting Started

Prerequisites

  • Node.js (v14.0.0 or higher)
  • MongoDB (v4.4 or higher)
  • npm or yarn package manager

Installation

  1. Clone the repository

    git clone https://github.com/DevOlabode/developer-bookmark-vault.git
  2. Install dependencies

    npm install
  3. Set up environment variables Create a .env file in the root directory:

    # Database
    DATABASE_URL=mongodb://localhost:27017/developerBookmarks
    
    # Session
    SESSION_SECRET=your-super-secret-session-key-here
    
    # Server
    PORT=3000
    NODE_ENV=development
  4. Start MongoDB Make sure MongoDB is running on your system:

    # On macOS/Linux
    mongod
    
    # On Windows
    # MongoDB should start automatically as a service
  5. Run the application

    # Development mode
    npm run dev
    
    # Production mode
    npm start
  6. Access the application Open your browser and navigate to http://localhost:3000

πŸ“ Project Structure

developer-bookmark-vault/
β”œβ”€β”€ πŸ“ controllers/          # Route controllers
β”‚   β”œβ”€β”€ bookmarks.js          # Bookmark CRUD operations
β”‚   β”œβ”€β”€ collections.js        # Collection management
β”‚   β”œβ”€β”€ collectionBookmarks.js # Collection-bookmark relationships
β”‚   └── user.js              # User management
β”œβ”€β”€ πŸ“ models/               # Database models
β”‚   β”œβ”€β”€ bookmark.js          # Bookmark schema
β”‚   β”œβ”€β”€ collection.js        # Collection schema
β”‚   └── user.js              # User schema
β”œβ”€β”€ πŸ“ routes/               # Express routes
β”‚   β”œβ”€β”€ bookmark.js          # Bookmark routes
β”‚   β”œβ”€β”€ collections.js       # Collection routes
β”‚   β”œβ”€β”€ collectionBookmarks.js # Collection-bookmark routes
β”‚   └── user.js              # User authentication routes
β”œβ”€β”€ πŸ“ views/                # EJS templates
β”‚   β”œβ”€β”€ bookmark/            # Bookmark views
β”‚   β”œβ”€β”€ collections/         # Collection views
β”‚   β”œβ”€β”€ collectionBookmarks/ # Collection-bookmark views
β”‚   β”œβ”€β”€ user/                # User views
β”‚   β”œβ”€β”€ partials/            # Reusable components
β”‚   └── layout/              # Layout templates
β”œβ”€β”€ πŸ“ public/               # Static assets
β”‚   β”œβ”€β”€ css/                 # Stylesheets
β”‚   β”œβ”€β”€ js/                  # Client-side JavaScript
β”‚   └── images/              # Images and icons
β”œβ”€β”€ πŸ“ utils/                # Utility functions
β”‚   β”œβ”€β”€ catchAsync.js        # Async error handling
β”‚   └── expressError.js      # Custom error class
β”œβ”€β”€ πŸ“ middleware/           # Express middleware
β”‚   └── validation.js        # Input validation
β”œβ”€β”€ πŸ“ seeds/                # Database seeding
β”‚   └── seed.js              # Sample data
β”œβ”€β”€ .env.example             # Environment variables template
β”œβ”€β”€ .gitignore               # Git ignore rules
β”œβ”€β”€ index.js                 # Main application entry
β”œβ”€β”€ package.json             # Dependencies and scripts
└── README.md                # This file

πŸ”Œ API Endpoints

Authentication

  • POST /register - User registration
  • POST /login - User login
  • POST /logout - User logout

Bookmarks

  • GET /bookmark - List all user bookmarks
  • GET /bookmark/new - New bookmark form
  • POST /bookmark - Create new bookmark
  • GET /bookmark/:id - View bookmark details
  • GET /bookmark/:id/edit - Edit bookmark form
  • PUT /bookmark/:id - Update bookmark
  • DELETE /bookmark/:id - Delete bookmark

Collections

  • GET /collections - List all user collections
  • GET /collections/new - New collection form
  • POST /collections - Create new collection
  • GET /collections/:id - View collection details
  • GET /collections/:id/edit - Edit collection form
  • PUT /collections/:id - Update collection
  • DELETE /collections/:id - Delete collection

Collection Bookmarks

  • GET /collections/:id/bookmarks - List bookmarks in collection
  • GET /collections/:id/bookmarks/new - Add bookmark to collection form
  • POST /collections/:id/bookmarks - Add bookmark to collection
  • DELETE /collections/:id/bookmarks/:bookmarkId - Remove bookmark from collection

πŸ§ͺ Testing

Running Tests

Testing setup coming soon...

Manual Testing

  1. User Registration: Test creating new accounts
  2. Authentication: Test login/logout functionality
  3. Bookmark CRUD: Test creating, reading, updating, and deleting bookmarks
  4. Collections: Test creating and managing collections
  5. Search: Test search and filtering capabilities
  6. Responsive Design: Test on mobile, tablet, and desktop

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Quick Start for Contributors

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and commit: git commit -m 'Add 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 file for details.

πŸ™ Acknowledgments

πŸ“ž Support

If you have any questions or need help, please:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Join our community discussions

Made with ❀️ by developers, for developers

About

A full-stack web app for developers to save, organize, and manage bookmarks with collections, tags, and notes. Built with Node.js, Express, MongoDB, and EJS. Secure authentication, responsive design, and intuitive UX included.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published