Skip to content

stormlightlabs/lazurite

Repository files navigation

Lazurite Hero

Lazurite is a cross-platform Bluesky client that rocks1 built with Flutter and Dart using Material You (M3) design.

Features

Home Feed & Composer

Home Feed Composer Profile
Home Feed Compose Screenshot Profile
View your personal timeline with support for threads and media. Create new posts with rich text and media attachments. Supports replies and quoting. View detailed actor profiles, including their feed and metadata.

Search & Profile

Search About DevTools
Search Results About DevTools
Discover people and posts across the Bluesky network. About (showing Rose Pine Moon theme) Built-in logs and developer utilities for exploring the AT Protocol (Rose Pine Dawn).

Offline Support & Drafts

Local-only drafts and caching powered by Drift (SQLite).

  • Drafts: Save posts locally and publish later.
  • Search History: Persisted local search history.
  • Saved Feeds: Manage and pin your favorite feeds.

What Lazurite Offers Beyond Bluesky

Available Now

  • Semantic Search: On-device vector embeddings (all-MiniLM-L6-v2) let you search saved and liked posts by meaning, not just keywords.
  • Post Scheduling: Write posts now, publish them later.
  • Follow Audit: Bulk-analyze your follows to find deleted, deactivated, suspended, or blocking accounts. Batch unfollow in one tap like clean follows
  • Constellation Integration: See who has blocked you and which lists you appear on, powered by Constellation backlinks.
  • AT Protocol Dev Tools: Browse any user's PDS repository, inspect collections and individual records as JSON, like an in-app pds.ls.
  • Rich Theming: Five full palettes (Lazurite™️2, Rose Pine, Catppuccin, Nord, Oxocarbon), each with light and dark variants, built on Material 3.
  • Offline First: First page of feeds is cached locally; drafts, search history, and saved posts persist in an on-device database.
  • Local Drafts: Auto-saved to the database, surviving crashes and force-closes. Multiple drafts per account with full reply/quote/media context.
  • Layout Options: Toggle between Card and Compact feed views. Configure thread auto-collapse depth (off, 1–6 levels).
  • In-App Logs: Filter by level, full-text search, share or export, useful for debugging and AT Protocol development.

On the Roadmap

  • RSS Feed Export: View and export any public Bluesky profile as an RSS feed.
  • Custom Fonts: User-selectable serif, sans-serif, and monospace typefaces across the entire app.
  • Markdown Posts: Toggleable Markdown rendering in post bodies.
  • Firehose & Jetstream Viewers: Live AT Protocol event streams inside Dev Tools.
  • Auto-Threading: Automatically split long posts into threaded replies.
  • Last Read Position: Resume your timeline exactly where you left off.

Architecture

Stack

  • Framework: Flutter (M3)
  • State Management: flutter_bloc
  • Database: Drift (SQLite)
  • Networking: Dio + atproto/bluesky packages
  • Navigation: go_router
  • Data Serialization: freezed + json_serializable

Directory Structure

The project follows a feature-first architecture layered with a core module:

  • lib/core/: Shared infrastructure, database, router, and themes.
  • lib/features/: Feature-specific logic (Auth, Feed, Search, Profile, etc.).
    • <feature>/bloc/: Business logic components.
    • <feature>/presentation/: UI screens and widgets.
    • <feature>/data/: (Optional) Feature-specific repositories or models.

Data Flow

flowchart LR
  router["App Navigator/Router (go_router)"] <--> ui["Feature UI"]
  ui <--> bloc["BLoC"]
  bloc <--> repo["Repository Classes (Data Layer)"]
  repo <--> pds["Authenticated API (User PDS)"]
  repo <--> appview["Public API (AppView)"]
  repo <--> local["On-device Database (SQLite/Drift)"]

  classDef primary fill:#0b63d1,stroke:#0953af,color:#ffffff,stroke-width:1px;
  classDef surface fill:#f4f6f9,stroke:#45505e,color:#101418,stroke-width:1px;
  class router,ui,bloc,repo primary;
  class pds,appview,local surface;
Loading

For development setup, tooling, database schema, and contribution notes, see DEVELOPMENT.md. If you run tests locally on macOS or Linux, run just objectbox-setup once to install the pinned ObjectBox native runtime.

References

Credits

  • Typography inspiration from Anisota by Dame.is.
  • Custom theming inspired by Witchsky.
  • DevTools (AT Protocol Explorer) inspiration from pdsls
  • AT URI links pass through aturi.to

Footnotes

  1. It's actually a mineral https://en.wikipedia.org/wiki/Lazurite

  2. not really trademarked, actually a cool theme that you can find in the desktop flavor too.

About

cross-platform mobile app for BlueSky

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors