Skip to content

Blink is your personal container to store, organize, and share links with friends or teams.

License

Notifications You must be signed in to change notification settings

samirrhashimov/blink

Repository files navigation

Blink - Your links, organized

A minimalist, web-based link storage and collaboration app built with React.js, TypeScript, and Firebase.

Features

  • 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

🦊 Firefox Extension

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.

Download from Firefox Add-ons

📱 Android App

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






Tech Stack

  • 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

Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Firebase project

Installation

  1. Clone the repository:
git clone https://github.com/samirrhashimov/blink.git
  1. Install dependencies:
npm install
  1. 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
  2. Start the development server:

npm run dev
  1. Open http://localhost:5173 in your browser

Firebase Setup

  1. Create a Firebase project
  2. Enable Authentication (Email/Password)
  3. Enable Firestore Database
  4. 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;
    }
  }
}

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview production build
  • npm run lint - Run ESLint

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Security

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.


License

This project is licensed under the APGLv3 License. For more details, see the LICENSE file.


Support

For issues and questions, please open an issue on GitHub.