A modern link management application that helps you organize, share, and discover content from YouTube and X (Twitter). Linkly allows users to save their favorite links, create shareable collections, and view content shared by friends.
- 🔐 User Authentication: Secure sign up and sign in functionality
- 📝 Link Management: Save and organize links from YouTube and X (Twitter)
- 🎥 Rich Media Preview: Embedded previews for YouTube videos and X tweets
- 🔗 Share Links: Create public share links to share your content collection with others
- 👥 Friend Sharing: Add and view shared content from friends
- 💾 Persistent Storage: Friend shares are saved locally and persist across sessions
- 🎨 Modern UI: Beautiful, responsive interface built with React and Tailwind CSS
- React 19 - UI library
- TypeScript - Type safety
- Vite - Build tool and dev server
- Tailwind CSS - Styling
- React Router - Routing
- Axios - HTTP client
- Sonner - Toast notifications
- React Tweet - Twitter/X embed support
- Node.js - Runtime environment
- Express - Web framework
- TypeScript - Type safety
- MongoDB - Database (via Mongoose)
- JWT - Authentication
- Bcrypt - Password hashing
- Zod - Schema validation
- Nanoid - Unique ID generation
linkly/
├── backend/
│ ├── src/
│ │ ├── config.ts # Configuration
│ │ ├── index.ts # Server entry point
│ │ ├── middleware/ # Auth & validation middleware
│ │ ├── model/ # Database models
│ │ ├── routes/ # API routes
│ │ └── utils/ # Utility functions
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── assets/ # Icons and images
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom React hooks
│ │ ├── pages/ # Page components
│ │ ├── App.tsx # Main app component
│ │ └── main.tsx # Entry point
│ └── package.json
└── README.md
- Node.js (v18 or higher)
- MongoDB (local or cloud instance)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd linkly- Install backend dependencies:
cd backend
npm install- Install frontend dependencies:
cd ../frontend
npm install- Create a
.envfile in thebackenddirectory:
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
NODE_ENV=development- Update the API URL in
frontend/src/App.tsxif needed:
export const API_URL = "http://localhost:5000/api";- Start the backend server:
cd backend
npm run devThe backend will run on http://localhost:5000
- Start the frontend development server:
cd frontend
npm run devThe frontend will run on http://localhost:5173
- Open your browser and navigate to
http://localhost:5173
- Click "Sign Up" on the homepage
- Fill in your details (full name, username, email, password)
- You'll be redirected to the dashboard upon successful registration
- Click "Add content" button on the dashboard
- Enter a title and link (YouTube or X/Twitter)
- The content will be saved and displayed with an embedded preview
- Click "Share links" button on the dashboard
- Click "Create Share Link" to generate a public share link
- Copy and share the link with others
- Anyone with the link can view your shared content
- Click "Add friend's share link" on the dashboard
- Enter the share link (e.g.,
/share/abc123or full URL) - The friend's shared content will appear in the "Friends' Shared Content" section
- You can remove a friend's share by clicking the "Remove" button
POST /api/user/signup- Create a new accountPOST /api/user/signin- Sign in to existing account
GET /api/v1/content- Get all user's contentPOST /api/v1/content- Create new contentDELETE /api/v1/content/:id- Delete content
POST /api/v2/share- Create a share linkGET /api/v2/shares- Get user's share linkGET /api/v2/share/:shareId- Get shared content (public)DELETE /api/v2/share- Delete share link
Backend:
cd backend
npm run build
npm startFrontend:
cd frontend
npm run buildThe built files will be in the dist directory.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
TALIB MUSHTAQ DAR
Made with ❤️ using React, TypeScript, and Express