Skip to content
/ staz Public

🚧WIP🚧 πŸš€ Staz: Modern Bookmark Manager | πŸ’‘ Tag it. Stash it. Staz it. πŸ“œ A modern, intuitive bookmark manager that helps you save, organize, and retrieve your favorite links with smart collections, tags, and metadata extraction. Built with Next.js, Drizzle ORM, and TypeScript. πŸ“

License

Notifications You must be signed in to change notification settings

YashM20/staz

Staz Logo

πŸš€ Staz: Your All-in-One Bookmark Manager

πŸ’‘ Tag it. Stash it. Staz it.
Reimagine how you save, organize, and retrieve your favorite links with Staz.

Staz is a modern, intuitive bookmark manager that helps you save web pages, songs, articles, or anything else while browsing. Designed for creatives and built for coders, Staz keeps your digital stash organized and accessible across devices.

πŸ”— Features

  • Collections: Group bookmarks into context-specific collections.
  • Tags & Filters: Classify items with tags and filter them efficiently by type, tags, or domain.
  • Duplicates and Broken Links: Detect duplicates and inaccessible links to keep your library clean.
  • Permanent Copies: Automatically archive web pages so you'll always have access.
  • Instant Previews: Read articles, view videos, and browse content without leaving the app.
  • Multiple Views: Choose between Grid, List, Headlines, or Masonry view modes.
  • Import & Export: Easily move your bookmarks in and out of Staz.

πŸ› οΈ Built With

Technology Description
Next.js Next.js for robust and scalable web applications
Drizzle ORM Drizzle ORM for type-safe database operations
Shadcn Shadcn for reusable UI components
Tailwind CSS Tailwind CSS for modern and responsive designs
motion.dev Motion.dev for smooth animations
Supabase Supabase for powerful backend services

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • PNPM package manager
  • PostgreSQL database

Setup Steps

  1. Clone the repository:

    git clone https://github.com/yourusername/staz.git
    cd staz
  2. Install dependencies:

    pnpm install
  3. Set up environment variables:

    cp .env.example .env.local

    Edit .env.local and add your database credentials and other required variables.

  4. Set up the database:

    # Generate migration files
    pnpm drizzle-kit generate
    
    # Push schema changes to database
    pnpm drizzle-kit push:pg
    
    # Apply migrations
    pnpm drizzle-kit migrate
  5. Run the development server:

    pnpm dev

Database Management

Drizzle ORM commands available through pnpm scripts:

# Generate migration files from schema changes
pnpm db:generate

# Push schema changes directly to database
pnpm db:push

# Apply pending migrations
pnpm db:migrate

# Reset database (⚠️ Destructive operation)
pnpm db:reset

# Open Drizzle Studio
pnpm db:studio

Database Schema

The database schema is organized into several modules:

  • users.ts: User authentication and profile data
  • links.ts: Core link management (domains, global links, user-specific links)
  • collections.ts: Collections and sharing functionality
  • tags.ts: Tag management system
  • activity.ts: Activity logging

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

  1. Fork the repository
  2. Create a new branch for your feature (git checkout -b feature/NewFeature)
  3. Commit your changes (git commit -m 'Add a new feature')
  4. Push your branch (git push origin feature/NewFeature)
  5. Open a pull request for review

Please ensure your PR adheres to our coding standards and includes appropriate tests.

πŸ“ License

Distributed under the MIT License. See LICENSE for details.

⭐ Support the Project

If Staz makes your digital life easier, please give it a ⭐ on GitHub to show your support!

πŸ“ TODO

High Priority

  • Add loading states and better error handling

    • Global loading indicator
    • Skeleton loaders for bookmarks grid
    • Button loading states
    • Error boundaries
    • Form submission states
  • Form Management

    • Clear forms after successful submission
    • Form validation
    • Auto-save drafts
    • Prevent duplicate submissions
  • Image Management

    • Set up image proxy service
    • Implement image optimization
    • Add fallback images
    • Handle broken image links
    • Consider CDN integration

Features

  • Search & Filter

    • Full-text search
    • Advanced filtering options
    • Search history
    • Save filter presets
  • Collections

    • Nested collections
    • Collection sharing
    • Collaborative collections
    • Collection templates
  • User Experience

    • Keyboard shortcuts
    • Drag and drop organization
    • Bulk actions
    • Quick actions menu

Technical Improvements

  • Performance
    • Implement infinite scrolling
    • Add request caching
    • Optimize database queries
    • Add service worker for offline support

Future Considerations

  • AI-powered features
    • Auto-tagging
    • Content summarization
    • Related content suggestions
  • Analytics dashboard
  • Browser extension
  • Team/Pro features
  • Mobile app development

About

🚧WIP🚧 πŸš€ Staz: Modern Bookmark Manager | πŸ’‘ Tag it. Stash it. Staz it. πŸ“œ A modern, intuitive bookmark manager that helps you save, organize, and retrieve your favorite links with smart collections, tags, and metadata extraction. Built with Next.js, Drizzle ORM, and TypeScript. πŸ“

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published