MyVault is a modern, full-stack web application for organizing and managing your digital content. Save articles, YouTube videos, Twitter posts, Reddit threads, and more in one beautifully designed interface.
- Multi-Platform Support: Save content from YouTube, Twitter, Reddit, articles, and more
- Smart Previews: Automatic preview generation with metadata extraction
- Dynamic Cards: Content cards that adapt their size based on content type and available information
- Tag System: Organize content with customizable colored tags
- Inline Tag Creation: Create new tags directly while adding content
- User Profiles: Personalized sidebar with avatar and username display
- Settings Page: Comprehensive settings for appearance, preferences, and security
- Professional UI: Clean, modern interface with smooth animations and transitions
- Responsive Design: Works seamlessly across desktop and mobile devices
- Real-time Updates: Live content synchronization
- Secure Authentication: JWT-based authentication system
- RESTful API: Well-structured backend API
- Modern Stack: React + Node.js + MongoDB
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/killjoycircuit/myvault.git cd myvault -
Set up the backend
cd backend npm install -
Configure environment variables Create a
.envfile in the backend directory:JWT_SECRET_KEY=your_super_secret_jwt_key_here MONGO_URL=mongodb://localhost:27017/myvault PORT=3000
-
Set up the frontend
cd ../frontend npm install -
Configure frontend Update
frontend/config.jsif needed:export const API_BASE_URL = 'http://localhost:3000/api/v1';
-
Start the backend server
cd backend npm run dev -
Start the frontend development server
cd frontend npm run dev -
Access the application Open your browser and navigate to
http://localhost:5173
- Sign Up: Create a new account with username, email, and optional avatar
- Sign In: Log in to access your personal vault
- Add Content: Click the "+" button to add new content
- Choose Content Type: Select from Article, YouTube, Twitter, Reddit, or Other
- Enter Details: Provide title and URL
- Add Tags: Select existing tags or create new ones inline
- Preview: See a live preview of your content
- Save: Add to your vault
- Create Tags: Use the "+" button in the sidebar or during content creation
- Color Coding: Assign colors to tags for better organization
- Filter Content: Click tags to filter your content
- Edit/Delete: Hover over tags in the sidebar for edit options
Access settings via your profile menu to customize:
- Profile: Update username and avatar
- Appearance: Choose theme and default view
- Preferences: Configure auto-preview and notifications
- Security: Change password and security settings
frontend/
βββ src/
β βββ components/ # Reusable UI components
β β βββ ContentCard.jsx # Dynamic content card component
β βββ pages/ # Main application pages
β β βββ HomePage.jsx # Main dashboard
β β βββ SettingsPage.jsx # User settings
β β βββ LoginPage.jsx # Authentication
β β βββ SignupPage.jsx # User registration
β βββ assets/ # Static assets and utilities
β βββ App.jsx # Main application component
backend/
βββ models/
β βββ db.js # MongoDB schemas
βββ middleware.js # Authentication middleware
βββ utils.js # Utility functions
βββ index.js # Main server file
- Automatic metadata extraction
- Favicon and preview image display
- Site name and description
- Embedded video player
- Thumbnail previews
- Direct video playback
- Tweet preview cards
- Link to original post
- Platform branding
- Reddit-specific styling
- Post preview
- Community context
- Generic link previews
- Fallback favicon support
- Clean URL display
POST /api/v1/signup- Create new user accountPOST /api/v1/signin- User loginPOST /api/v1/logout- User logout
GET /api/v1/profile- Get user profilePUT /api/v1/profile- Update user profile
GET /api/v1/content- Get user's contentPOST /api/v1/content- Create new contentDELETE /api/v1/content- Delete content
GET /api/v1/tags- Get user's tagsPOST /api/v1/tags- Create new tagPUT /api/v1/tags/:id- Update tagDELETE /api/v1/tags- Delete tag
# Backend
npm run dev # Start with nodemon
npm start # Production start
# Frontend
npm run dev # Development server
npm run build # Production build
npm run preview # Preview production build- Password Hashing: bcryptjs for secure password storage
- JWT Authentication: Secure token-based authentication
- Input Validation: Zod schema validation
- CORS Protection: Configured CORS policies
- Environment Variables: Sensitive data in environment files
- 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 licensed under the MIT License.
Made with β€οΈ by the MyVault Team