README.md
July 7, 2026 ยท View on GitHub
๐ stdy4u
STUDY SMARTER
v2.0.1 โ Local-first student productivity companion
๐ฑ Preview
โจ Features
๐ Course Management
- Add courses with name, code, professor, room, schedule, and color coding
- Track grades, target GPA, and credit hours per course โ target CGPA persists across sessions
- Edit or delete courses via long-press context menu
- Visual progress indicators on the home dashboard
โ Tasks & Notes
- Create tasks with due dates and urgency levels (Normal / Urgent)
- Course-specific notes tab
- Check-off completion with animated toggle
- Filter by course on the detail screen
๐ Course Materials
- Add materials as links, notes, or uploaded files (PDF, images, docs)
- Stored locally โ files are copied to the app's documents directory
- Tap to open files or URLs
- Delete unwanted materials with the delete button
๐ Attendance Tracker
- Mark attendance per course: Present / Late / Absent / Excused
- Calendar view with
table_calendarโ tap a day to see all courses - Automatic attendance rate calculation with configurable threshold warning
- Quick-action chips in the daily schedule
๐ Statistics & Analytics
- CGPA calculation with letter grade conversion (A, B, C, D, F)
- Grade distribution bar chart per course
- Per-subject performance overview with progress rings
- Pomodoro focus time analytics โ weekly bar chart
โฑ๏ธ Pomodoro Timer
- Focus sessions with configurable durations (1โ60 min)
- Short break (1โ30 min) and long break (1โ60 min) with auto-rotation
- Session counter and haptic feedback
- Calm music player โ pick audio files to play during focus sessions
- Weekly focus analytics dashboard
๐จ Comic-Print Design System
- Light, Dark, and System Default modes
- Neo-Brutalist manga aesthetic โ flat surfaces, sharp 2.5px ink-black borders, hard offset shadows (
blurRadius: 0), zero border radius - Luckiest Guy display font for headings, monospace for code snippets
- Signature Ink Red (
#E63946) accent color throughout - High-contrast ink-black text on aged paper / dark pulp backgrounds
- Custom MangaNavBar โ flat geometry, thick 3px top border, ALL-CAPS labels, red active state
- Haptic feedback and mechanical press sound toggle
๐ Notifications
- Weekly recurring class reminders (15 min before each class)
- Task reminders and session alerts
- Notification history bottom sheet
- Toggle notifications in Settings
๐ Updates
- On-launch GitHub OTA update check with rich markdown release notes
- Download with pause/resume/cancel โ saved state survives interruptions
- Manual check in Settings โ About โ Check for Updates
๐ How to Use
1. Getting Started
On first launch, you'll see an animated splash screen followed by a short onboarding carousel. Swipe through the intro pages, then tap START to begin.
The app works completely offline โ all your data (courses, tasks, attendance, notes) is stored locally on your device. No sign-up, no account needed.
2. Adding Your First Course
- Tap the Home tab and press the + button to open the Add Course form
- Fill in the course name, code, professor, and schedule
- Pick a color to identify the course on your dashboard
- Set your target grade and credit hours (used for CGPA calculations)
- Save โ the course appears on your dashboard immediately
Tip: Long-press any course card to edit or delete it.
3. Daily Dashboard
Your Home screen shows at a glance:
- A personalized greeting with your study streak
- Up Next โ your next class today with a countdown
- Quote Cards โ tap the "UP NEXT" card to expand a full-screen motivational quote with a smooth animated transition. Swipe or tap the close button to dismiss
- Course progress rings showing attendance rate
- Pending tasks and quick action buttons
4. Marking Attendance
- Go to the Tracker tab to see a monthly calendar
- Tap any date to view all courses scheduled that day
- Tap Present / Late / Absent / Excused to mark attendance
- The tracker calculates your attendance percentage and warns if you're below the threshold
5. Using the Pomodoro Timer
- Navigate to the Pomodoro section from the Home screen
- Tap the gear icon to adjust Focus, Short Break, and Long Break durations
- Press Play to start a focus session
- Optionally pick calming music to play during focus time
- View your weekly focus stats on the Stats screen
6. Tracking Grades & Statistics
- The Stats screen shows your overall CGPA with a bar chart breakdown per course
- Each course displays its grade, credits, and contribution to your GPA
- The weekly focus time chart shows your Pomodoro productivity
7. Managing Materials, Tasks & Notes
Tap any course card to open its detail screen with three tabs:
- Materials โ Add links, written notes, or upload files (PDFs, images). Tap to open, swipe to delete
- Tasks โ Create tasks with due dates and urgency. Check them off when done
- Notes โ Course-specific notes that stay with the course
8. Customizing the App
- Open Settings to switch between Light, Dark, or System theme
- Pick from 8 accent colors to personalize the look
- Toggle the Floating Navigation Bar for a glassmorphism effect
- Enable or disable haptic feedback and press sounds
9. App Updates
When a new version is available, a native system notification pops up in your status bar. Tap the notification to open the update dialog, view rich markdown release notes, and download the latest APK. The download supports pause, resume, and cancel โ progress is saved locally so you can resume where you left off if interrupted. You can also manually check for updates in Settings โ About โ Check for Updates.
๐ ๏ธ Tech Stack
| Layer | Technology |
|---|---|
| Framework | Flutter 3.44 + Dart |
| State Management | Riverpod (flutter_riverpod) |
| Navigation | GoRouter with ShellRoute |
| Local Storage | Hive (hive_flutter) |
| Charts | fl_chart |
| Calendar | table_calendar |
| Icons | solar_icons |
| SVG | flutter_svg |
| Notifications | flutter_local_notifications |
| Audio | just_audio |
| File Picker | file_picker |
| File Open | open_filex |
| Markdown | flutter_markdown |
| Code Generation | build_runner + hive_generator |
| CI/CD | GitHub Actions (build + release APK) |
๐ Project Structure
lib/
โโโ core/
โ โโโ constants/ # App-wide constants
โ โโโ errors/ # Custom exception classes
โ โโโ extensions/ # BuildContext helpers
โ โโโ services/ # NotificationService, UpdateService
โ โโโ utils/ # Grade calculator, time utilities
โโโ data/
โ โโโ datasources/ # LocalStorage (Hive init + box access)
โ โโโ models/ # AppSettings, ScreenTimeLog (Hive-annotated)
โ โโโ repositories/ # Repository implementations
โโโ domain/
โ โโโ entities/ # Course, Task, CourseMaterial, AttendanceRecord
โ โโโ repositories/ # Abstract repository interfaces
โ โโโ usecases/ # Business logic: CGPA, attendance, schedule
โโโ presentation/
โ โโโ features/ # Screen widgets grouped by feature
โ โ โโโ dashboard/ # Home dashboard with greeting + progress
โ โ โโโ home/ # Main screen shell with tabs
โ โ โโโ tracker/ # Attendance tracker with calendar
โ โ โโโ stats/ # Statistics & CGPA visualization
โ โ โโโ settings/ # App settings & about
โ โ โโโ splash/ # Animated splash screen
โ โ โโโ course_detail/ # Course detail & tasks/materials
โ โโโ theme/ # ComicTheme, SettingsNotifier
โ โโโ widgets/ # UpdateDialog, snackbars
โโโ widgets/ # ComicLoader, MangaNavBar, shared atoms
โโโ shared/
๐ Getting Started
Prerequisites
- Flutter SDK
>=3.6.0 <4.0.0 - Android Studio / VS Code with Flutter plugins
Setup
# Clone the repository
git clone https://github.com/MoHamed-B-M/study4u.git
cd study4u
# Install dependencies
flutter pub get
# Generate Hive adapters & Riverpod providers
dart run build_runner build --delete-conflicting-outputs
# Run in debug mode
flutter run
# Build release APK
flutter build apk --release
๐ฆ Building for Release
# Increment version in pubspec.yaml, then:
flutter build apk --release --build-number=$YOUR_BUILD_NUMBER
# Or with signing env vars (CI):
flutter build apk --release --build-number=$CI_PIPELINE_ID
Build and push a tag (
v*.*.*) to trigger the GitHub Actions release workflow.
๐ Changelog
See CHANGELOG.md for a full history of changes.
๐ซ School Project
This app was developed as a school project for Madame Basma.
๐ License
Private project.