Track. Learn. Ship.
A developer-focused study journal & task manager built with Flutter — designed to help students and self-taught devs stay consistent, organized, and accountable on their learning journey.
"I study for 8 hours, but at the end of the week I can't remember what I actually learned."
Every CS student and self-taught developer faces the same struggle: you're learning a lot, but you have nothing to show for it. Notes get lost across apps, bookmarks pile up, and there's no sense of momentum. Existing tools are either too generic (Notion, Google Docs) or too complex (Jira, Linear) for a solo learner's workflow.
DevLog was built to solve exactly this — a single, focused app where you:
- Log what you learn each day (with tags, mood, and resource links)
- Track your streak so consistency becomes a visible habit
- Manage your tasks without leaving the learning context
- Own your data completely offline, no cloud accounts needed
It turns learning from an invisible activity into a measurable, exportable record.
Splash → Login → Register → Dashboard
Study Logs → New Log Entry → Task Board → Profile & Settings
Cartoon Avatar Picker (light mode)
| Feature | Details |
|---|---|
| Dashboard | Streak counter, daily output, task progress, recent logs — all at a glance |
| Study Logs | Timestamped entries with title, notes, tags (Flutter, DevOps, DSA, ML/AI, Backend), mood tracker, and resource links |
| Search & Filter | Full-text search across logs + tag-based chip filters |
| Task Board | Kanban-style lanes: TODO / IN PROGRESS / DONE with priority, due dates, and progress rings |
| Profile & Avatar | Cartoon emoji avatars, member-since badge, lifetime stats |
| Dark / Light Theme | System-follow or manual toggle; custom DevlogPalette for both modes |
| Data Export | Export logs & tasks as formatted JSON; share via system sheet |
| Fully Offline | Zero network calls — everything lives on-device via Hive |
| Local Auth | SHA-256 hashed passwords with salt; single-device account model |
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Flutter 3.11 + Dart 3.11 | Cross-platform UI (Android, iOS, Web, Desktop) |
| State Management | Flutter Riverpod 2.6 | Reactive, testable, provider-based architecture |
| Local Storage | Hive + Hive Flutter | Lightning-fast NoSQL box for offline persistence |
| Typography | Google Fonts (Montserrat + Roboto) | Clean, modern developer-friendly type system |
| Theming | Material 3 + ThemeExtension |
Custom DevlogPalette for light/dark color tokens |
| Security | crypto (SHA-256) |
Local password hashing with per-app salt |
| Unique IDs | uuid |
RFC 4122 v4 UUIDs for logs and tasks |
| Sharing | share_plus + path_provider |
System share sheet for JSON export files |
| Icons | flutter_launcher_icons |
Adaptive launcher icons (Android + iOS) |
DevLog follows a clean layered architecture with Riverpod at the core:
lib/
├── main.dart # App entry, ProviderScope, routes
├── bootstrap.dart # Hive initialization
├── core/
│ ├── theme/ # AppTheme, DevlogPalette (light/dark)
│ ├── constants/ # Routes, Hive keys, validation, strings
│ ├── utils/ # Streak calculator, initials, handle
│ └── avatar/ # Cartoon avatar definitions
├── models/ # Immutable data classes (AppUser, StudyLogEntry, TaskItem, ...)
├── data/
│ └── local_store.dart # Hive CRUD: session, logs, tasks, prefs, export
├── providers/ # Riverpod notifiers & derived providers
│ ├── local_store_provider # Global LocalStore instance
│ ├── auth_notifier # Login / register / logout / avatar
│ ├── study_logs_notifier # Add / remove / refresh logs
│ ├── tasks_notifier # Upsert / toggle / lane / remove tasks
│ ├── preferences_notifier # Theme, notifications, reminder time
│ └── home_providers # Dashboard summary, recent logs, greeting (derived)
├── screens/ # Full-page UI (Splash, Login, Home, NewLog, LogHistory)
└── widgets/ # Reusable sheets (NewTaskSheet)
Key patterns used:
NotifierProviderfor mutable domain state (auth, logs, tasks, prefs)Providerfor derived/computed values (dashboard summary, greeting)StateProviderfor simple UI state (bottom nav index)ref.watch()in build methods for reactive rebuildsref.read()in callbacks for one-shot mutationsref.invalidate()to cascade resets on logout/data clear
- Flutter SDK
>=3.11.0 - Dart
>=3.11.0 - Android Studio / VS Code with Flutter extension
# Clone the repository
git clone https://github.com/your-username/dev_trace.git
cd dev_trace
# Install dependencies
flutter pub get
# Generate launcher icons (optional, already generated)
dart run flutter_launcher_icons
# Run the app
flutter runflutter build apk --release// What you learn
StudyLogEntry {
id, tag, tags[], title, preview,
occurredAt, moodIndex, resourceLink
}
// What you need to do
TaskItem {
id, title, description, priority,
completed, lane (todo/inProgress),
dueAt, tag, ringProgress
}
// Who you are
AppUser {
email, fullName, registrationNumber,
createdAt, cartoonAvatarId
}All data is serialized as JSON maps inside a single Hive box (devlog_main) — no schema migrations, no adapters, just straightforward map-based persistence.
- Cloud sync (Firebase / Supabase)
- Weekly/monthly analytics with charts
- Markdown support in log entries
- Pomodoro timer integration
- Calendar heatmap (GitHub-style contribution graph)
- Collaborative study groups
This project is for educational purposes. Feel free to fork, learn from it, and build your own version.
Built with frustration, caffeine, and Flutter.
Stop scrolling. Start logging.









