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.
- Secure user registration and authentication
- Password hashing with bcrypt
- Session management with Passport.js
- User profile management
- Create, read, update, and delete bookmarks
- Rich bookmark details (title, URL, category, tags, notes)
- User-specific bookmark organization
- Organize bookmarks into custom collections
- Collection descriptions and metadata
- Easy bookmark-to-collection assignment
- Collection-based browsing
- Custom tags for flexible organization
- Category-based filtering
- Tag cloud visualization
- Advanced search by tags and categories
- Mobile-first responsive design
- Bootstrap 5 framework
- Cross-browser compatibility
- Touch-friendly interface
- Flash messages for user feedback
- Intuitive navigation
- Loading states and error handling
- Clean, modern UI
- Username - ola
- Password - ola
- 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
- EJS - Templating engine
- Bootstrap 5 - CSS framework
- Font Awesome - Icons
- Vanilla JavaScript - Client-side functionality
- Nodemon - Development server
- ESLint - Code linting
- Prettier - Code formatting
- Node.js (v14.0.0 or higher)
- MongoDB (v4.4 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/DevOlabode/developer-bookmark-vault.git
-
Install dependencies
npm install
-
Set up environment variables Create a
.envfile 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
-
Start MongoDB Make sure MongoDB is running on your system:
# On macOS/Linux mongod # On Windows # MongoDB should start automatically as a service
-
Run the application
# Development mode npm run dev # Production mode npm start
-
Access the application Open your browser and navigate to
http://localhost:3000
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
POST /register- User registrationPOST /login- User loginPOST /logout- User logout
GET /bookmark- List all user bookmarksGET /bookmark/new- New bookmark formPOST /bookmark- Create new bookmarkGET /bookmark/:id- View bookmark detailsGET /bookmark/:id/edit- Edit bookmark formPUT /bookmark/:id- Update bookmarkDELETE /bookmark/:id- Delete bookmark
GET /collections- List all user collectionsGET /collections/new- New collection formPOST /collections- Create new collectionGET /collections/:id- View collection detailsGET /collections/:id/edit- Edit collection formPUT /collections/:id- Update collectionDELETE /collections/:id- Delete collection
GET /collections/:id/bookmarks- List bookmarks in collectionGET /collections/:id/bookmarks/new- Add bookmark to collection formPOST /collections/:id/bookmarks- Add bookmark to collectionDELETE /collections/:id/bookmarks/:bookmarkId- Remove bookmark from collection
Testing setup coming soon...
- User Registration: Test creating new accounts
- Authentication: Test login/logout functionality
- Bookmark CRUD: Test creating, reading, updating, and deleting bookmarks
- Collections: Test creating and managing collections
- Search: Test search and filtering capabilities
- Responsive Design: Test on mobile, tablet, and desktop
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Bootstrap for the CSS framework
- Font Awesome for icons
- MongoDB for the database
- Express.js for the web framework
- Passport.js for authentication
If you have any questions or need help, please:
- Check the Issues page
- Create a new issue with detailed information
- Join our community discussions
Made with ❤️ by developers, for developers