A modern, responsive bookmark management application built with Angular 16, featuring a clean interface for organizing bookmarks into collections with advanced UI components.
- Collection Management: Create and organize bookmarks into collections
- Bookmark Management: Add bookmarks with custom icons and URLs
- Favorite System: Mark and manage favorite collections and bookmarks
- Search Interface: Clean search bar for discovering bookmarks
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Modern Interface: Clean and professional design with gradient themes
- View Modes: Toggle between Grid and List view for collections
- Tree View: Expandable collection structure for better organization
- Heart Icon Toggle: Interactive favorite marking with hover effects
- Modal Dialogs: Reusable modal components for forms and interactions
- Custom Components: Reusable UI components (icon picker, modal)
- Form Validation: Comprehensive validation for all input fields
- Reactive Forms: Modern Angular reactive forms implementation
- Service Architecture: Clean separation of concerns with services
- Mock API: Interceptor-based mock API for development
- Node.js (version 16 or higher)
- npm (comes with Node.js)
- Angular CLI:
npm install -g @angular/cli
-
Clone the repository:
git clone https://github.com/anandrajput007/bookmark-manager.git cd bookmark-manager -
Install dependencies:
npm install
-
Start the development server:
ng serve
-
Navigate to
http://localhost:4200/in your browser
src/
โโโ app/
โ โโโ aj-components/ # Reusable UI Components
โ โ โโโ aj-icon-picker/ # Icon selection component
โ โ โโโ aj-modal/ # Modal dialog component
โ โ โโโ README.md # Component documentation
โ โโโ components/
โ โ โโโ action-bar/ # Main action toolbar
โ โ โโโ add-bookmark/ # Add bookmark modal
โ โ โโโ add-collection/ # Add collection modal
โ โ โโโ bookmark-bar/ # Bookmark display component
โ โ โโโ dashboard/ # Main dashboard component
โ โโโ services/
โ โ โโโ dashboard/
โ โ โโโ collection.service.ts
โ โโโ shared/
โ โ โโโ data/
โ โ โโโ collections.ts # Mock collection data
โ โ โโโ fontawesome-icons.ts
โ โโโ interceptors/
โ โ โโโ mock-api.interceptor.ts
โ โโโ app.module.ts
โโโ assets/
โโโ styles.scss
- Click the ๐ (folder-plus) button in the action bar
- Enter collection name and select an icon
- Click "Save" to create the collection
- Click the + (plus) button in the action bar
- Select a collection from the dropdown
- Enter bookmark name and URL
- Choose an icon for the bookmark
- Click "Save" to add the bookmark
- Grid View: Click the โ button for grid layout
- List View: Click the โฐ button for list layout
- Tree View: Click on collection names to expand/collapse
- Click the โค๏ธ icon next to collections or bookmarks to toggle favorites
- Favorites are highlighted and can be filtered
A reusable icon selection component with:
- Search functionality
- Pagination
- Tooltips
- Navigation controls
- Customizable data source
Usage:
<aj-icon-picker
[data]="iconData"
[enableNavigation]="true"
[initialValue]="selectedIcon"
(iconSelected)="onIconSelected($event)">
</aj-icon-picker>A flexible modal dialog component with:
- Dynamic header, body, and footer
- Multiple types and sizes
- Keyboard support (ESC to close)
- Backdrop click to close
- Animations
- Content projection
Usage:
<aj-modal
[show]="isOpen"
header="Modal Title"
type="default"
size="md"
[showFooter]="true"
(closeModal)="close()">
<div modal-body>
<!-- Modal content -->
</div>
<div modal-footer>
<!-- Footer buttons -->
</div>
</aj-modal>The application uses a modern gradient theme:
- Primary Gradient:
linear-gradient(135deg, #667eea 0%, #764ba2 100%) - Accent Color:
rgb(255, 212, 59)(yellow) - Error Color:
#dc2626(red)
- Desktop: 992px and above
- Tablet: 768px to 991px
- Mobile: Below 768px
ng build --prodng test# Generate a new component
ng generate component components/component-name
# Generate a new service
ng generate service services/service-name- โ Chrome (latest)
- โ Firefox (latest)
- โ Safari (latest)
- โ Edge (latest)
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is open source and available under the MIT License.
- Angular Team for the amazing framework
- Bootstrap Team for the responsive CSS framework
- Font Awesome for the beautiful icon library
- Community for inspiration and feedback