A minimalist, web-based link storage and collaboration app built with React.js, TypeScript, and Firebase.
- Container Management - Create, edit, and delete link containers
- Link Management - Add, edit, and delete links within containers
- Light / Dark Mode - Native Dark Mode Support
- Email Invitations - Send container invitations to users by email
- Permission Management - View and edit permissions
- Collaborator Management - Add, remove, and manage container collaborators
- Notifications - Notification system for invitations and updates
- Search Functionality - Search across containers, links, titles, descriptions, and URLs
- Responsive Design - Mobile-first design that works on all devices
- Copy to Clipboard - Quick copy functionality for links
- Link Statistics - Real-time click tracking and visual history with interactive charts
Enhance your productivity with the Blink Firefox Extension! Save any webpage directly to your containers with a single click. No more jumping between tabs—stay organized right from your browser.
Take your links on the go with the official Blink Android App! Access your workspaces, manage your links, and share content directly from your phone.
Download Latest APK from Releases
- Frontend: React 18, TypeScript, Vite
- Styling: Classic CSS , Tailwind CSS, PostCSS
- Backend: Firebase (Authentication + Firestore)
- Icons: Lucide React
- Data Visualization: Recharts
- Routing: React Router DOM
- State Management: React Context API
- Node.js (v16 or higher)
- npm or yarn
- Firebase project
- Clone the repository:
git clone https://github.com/samirrhashimov/blink.git- Install dependencies:
npm install-
Set up Firebase:
- Create a new Firebase project at Firebase Console
- Enable Authentication and Firestore
- Copy your Firebase config and update
src/firebase/config.ts
-
Start the development server:
npm run dev- Open http://localhost:5173 in your browser
- Create a Firebase project
- Enable Authentication (Email/Password)
- Enable Firestore Database
- Set up Firestore security rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
allow update, delete: if request.auth != null && request.auth.uid == userId;
}
match /vaults/{vaultId} {
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow read: if request.auth != null &&
(resource.data.ownerId == request.auth.uid ||
request.auth.uid in resource.data.authorizedUsers);
allow delete: if request.auth != null && resource.data.ownerId == request.auth.uid;
allow update: if request.auth != null &&
(resource.data.ownerId == request.auth.uid ||
request.auth.uid in resource.data.authorizedUsers ||
request.auth.uid in request.resource.data.authorizedUsers);
}
match /shareInvites/{inviteId} {
allow read, write: if request.auth != null;
}
match /vaultPermissions/{permissionId} {
allow read, write: if request.auth != null;
}
match /shareLinks/{linkId} {
allow read, write: if request.auth != null;
}
match /notifications/{notificationId} {
allow create: if request.auth != null;
allow read, update, delete: if request.auth != null && resource.data.userId == request.auth.uid;
}
}
}npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
If you discover a security vulnerability in the project, do not open a public issue.
Instead, submit a private report through the Security advisories section.
This project is licensed under the APGLv3 License. For more details, see the LICENSE file.
For issues and questions, please open an issue on GitHub.


