π‘ 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.
- 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.
- Node.js 18+
- PNPM package manager
- PostgreSQL database
-
Clone the repository:
git clone https://github.com/yourusername/staz.git cd staz
-
Install dependencies:
pnpm install
-
Set up environment variables:
cp .env.example .env.local
Edit
.env.local
and add your database credentials and other required variables. -
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
-
Run the development server:
pnpm dev
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
The database schema is organized into several modules:
users.ts
: User authentication and profile datalinks.ts
: Core link management (domains, global links, user-specific links)collections.ts
: Collections and sharing functionalitytags.ts
: Tag management systemactivity.ts
: Activity logging
We welcome contributions from the community! Here's how you can help:
- Fork the repository
- Create a new branch for your feature (
git checkout -b feature/NewFeature
) - Commit your changes (
git commit -m 'Add a new feature'
) - Push your branch (
git push origin feature/NewFeature
) - Open a pull request for review
Please ensure your PR adheres to our coding standards and includes appropriate tests.
Distributed under the MIT License. See LICENSE
for details.
If Staz makes your digital life easier, please give it a β on GitHub to show your support!
-
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
-
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
- Performance
- Implement infinite scrolling
- Add request caching
- Optimize database queries
- Add service worker for offline support
- AI-powered features
- Auto-tagging
- Content summarization
- Related content suggestions
- Analytics dashboard
- Browser extension
- Team/Pro features
- Mobile app development