Lazurite is a cross-platform Bluesky client built with Flutter and Dart using Material You (M3) design.
| Search | 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). |
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.
- Framework: Flutter (M3)
- State Management:
flutter_bloc - Database: Drift (SQLite)
- Networking: Dio +
atproto/blueskypackages - Navigation:
go_router - Data Serialization:
freezed+json_serializable
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.
- Network: Authenticated requests are routed through user PDS; public reads use the public AppView.
- Database: Drift manages local persistence for accounts, cached profiles/posts, settings, and drafts.
Lazurite uses StatefulShellRoute for persistent bottom navigation.
| Path | Description |
|---|---|
/login |
Authentication gateway |
/ |
Home Feed tab |
/search |
Search tab |
/profile |
Current user profile tab |
/settings |
Global settings |
/compose |
Root-level modal for new posts |
Use just for common tasks:
just format- Runsdart formatjust lint- Proxiesflutter analyzejust test- Executes theflutter testsuitejust gen- Triggersbuild_runnerfor code generationjust check- Runs format, lint, and tests in sequence
For a quick start:
flutter pub get
just gen
flutter runPowered by Drift, the following tables are currently implemented:
| Table | Purpose |
|---|---|
accounts |
Local storage for session and auth tokens (DID, handle, service) |
cached_profiles |
Cached profile metadata to reduce network calls |
cached_posts |
Cached post content for offline viewing |
saved_feeds |
Locally Managed feed preferences |
search_history |
Persistent query history |
drafts |
Offline-first post drafting with media support |
settings |
Key-value application configuration |





