Smart Academic Scheduling & Collaboration Platform for University Students
SynerSched is a comprehensive Flutter mobile application designed to revolutionize how university students manage their academic schedules, tasks, and collaborations. With an intelligent scheduling algorithm, real-time collaboration features, and intuitive task management, SynerSched helps students stay organized and productive throughout their academic journey.
- Intelligent Time Allocation: Automatically allocates tasks into your weekly schedule based on deadlines and preferences
- 10-Minute Granularity: Precise time slot management for detailed scheduling
- Preference-Based Scheduling: Customize schedules based on preferred study times (morning, afternoon, evening)
- Workload Management: Adjust schedule intensity (light, medium, intense)
- Automatic Semester Detection: Automatically detects new semesters and prompts for schedule updates
- Encrypted Task Storage: Task titles are encrypted using AES encryption for privacy
- Deadline Tracking: Visual countdown and sorting by due dates
- Smart Notifications: Automated reminders at 1 hour, 30 minutes, and 15 minutes before deadlines
- Quick Task Creation: Floating action button for rapid task entry
- Task Completion Tracking: Mark tasks as complete and track your progress
- Real-Time Chat: Powered by Stream Chat for instant messaging
- Collaboration Boards: Create or join study groups and project teams
- Search & Filter: Find collaborations by department, skills, and tags
- Member Management: Track collaboration members and participation
- Multi-Language Support: Full support for English and Spanish
- Dynamic Language Switching: Change language on-the-fly without restarting
- 154+ Translated Strings: Complete UI translation coverage
- AES Encryption: User-specific encryption for sensitive data
- Firebase Authentication: Secure email/password authentication
- User-Scoped Data: All data isolated per user for privacy
- Material 3 Design: Modern and intuitive UI following Material Design 3 guidelines
- Offline Support: Firestore offline persistence with unlimited cache
- Portrait-Lock: Optimized for mobile portrait orientation
- Custom Navigation: Smooth bottom navigation with state persistence
| Category | Technology | Purpose |
|---|---|---|
| Framework | Flutter 3.8.1+ | Cross-platform mobile development |
| Language | Dart ^3.8.1 | Programming language |
| Backend | Firebase | Authentication, database, cloud functions |
| Database | Cloud Firestore | NoSQL cloud database with offline support |
| Chat | Stream Chat 9.15.0 | Real-time messaging infrastructure |
| Notifications | flutter_local_notifications | Local push notifications |
| Storage | SharedPreferences | Local key-value storage |
| Encryption | encrypt package (AES) | Data encryption/decryption |
| Timezone | timezone package | Cross-timezone scheduling |
lib/
βββ features/ # Feature modules (screens & logic)
β βββ auth/ # Login & signup
β βββ home/ # Dashboard with deadlines & highlights
β βββ schedule/ # Schedule builder & result viewer
β βββ collab_match/ # Collaboration boards & chat
β βββ profile/ # User profile management
β βββ onboarding/ # Welcome & tutorial screens
β βββ splash/ # Initial loading screen
β βββ settings/ # App settings
β βββ notifications/ # Notification center
β
βββ firebase/ # Firebase service layer
β βββ auth_service.dart # Authentication operations
β βββ task_service.dart # Task CRUD operations
β βββ schedule_service.dart # Schedule management
β βββ smart_scheduler.dart # Intelligent scheduling algorithm
β βββ firestore_service.dart # General Firestore operations
β βββ class_service.dart # Class schedule operations
β
βββ shared/ # Reusable components & utilities
β βββ custom_app_bar.dart # Reusable app bar
β βββ custom_nav_bar.dart # Bottom navigation
β βββ custom_button.dart # Styled buttons
β βββ encryption_helper.dart # AES encryption utilities
β βββ notification_service.dart # Notification management
β βββ stream_helper.dart # Stream Chat utilities
β βββ theme.dart # App themes (light/dark)
β βββ utils.dart # Helper functions
β
βββ localization/ # Internationalization
β βββ app_localizations.dart # Localization delegate
β βββ inherited_locale.dart # Locale state management
β
βββ routes/ # Navigation configuration
β βββ app_routes.dart # Route definitions
β
βββ main.dart # Application entry point
- Flutter SDK: 3.8.1 or higher
- Dart SDK: 3.8.1 or higher
- Android Studio or Xcode (for iOS)
- Firebase Project: Set up a Firebase project with Authentication and Firestore
- Stream Chat Account: Get API key from Stream
-
Clone the repository
git clone https://github.com/sivakanth1/SynerSched.git cd SynerSched -
Install dependencies
flutter pub get
-
Configure Firebase
- Add your
google-services.json(Android) toandroid/app/ - Add your
GoogleService-Info.plist(iOS) toios/Runner/ - Update
lib/firebase_options.dartwith your Firebase configuration
- Add your
-
Configure Stream Chat
- Create a
.envfile or updatemain.dartwith your Stream API key - Replace the hardcoded API key in
main.dart:58
- Create a
-
Run the app
# For Android flutter run # For iOS (macOS only) flutter run -d ios
SynerSched follows a feature-based architecture with clear separation of concerns:
βββββββββββββββββββββββββββββββββββββββ
β UI Layer (Features) β
β (Screens, Widgets, User Interaction)β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββ
β Service Layer (Firebase) β
β (Business Logic, Data Operations) β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββ
β Data Layer (Firestore/Local) β
β (Cloud Database, Local Storage) β
βββββββββββββββββββββββββββββββββββββββ
- Service Layer Pattern: Abstraction for Firebase operations
- Repository Pattern: Data access abstraction
- Provider/Inherited Widget: State management for locale
- Singleton Pattern: Notification and encryption services
The heart of SynerSched is its intelligent scheduling algorithm:
-
Time Grid Generation
- Creates 10-minute time slots based on user preferences
- Supports morning (8 AM-12 PM), afternoon (1-5 PM), evening (6-9 PM)
- Adjusts density based on workload (light/medium/intense)
-
Slot Marking
- Marks class times as occupied
- Identifies break periods
- Detects time conflicts
-
Task Allocation
- Sorts tasks chronologically by deadline
- Allocates tasks to free slots before their due dates
- Assigns 1-hour blocks per task
Monday 9:00 AM - 10:00 AM: Data Structures (Class)
Monday 10:00 AM - 11:00 AM: Free
Monday 11:00 AM - 12:00 PM: Complete Assignment #3 (Task)
Monday 12:00 PM - 1:00 PM: Lunch Break
...
- β AES Encryption: Sensitive task data encrypted with user-specific keys
- β Firebase Authentication: Secure user authentication
- β Data Isolation: User-scoped Firestore collections
- β HTTPS: All Firebase communication over secure connections
- Fix Encryption IV: Currently uses a fixed IV (security vulnerability)
- Environment Variables: Move API keys from source code to
.env - Input Validation: Add client-side validation for all forms
- Password Strength: Enforce stronger password requirements
See the codebase analysis report for detailed security recommendations.
Currently, the project has minimal test coverage. To run existing tests:
flutter testTesting Roadmap:
- Unit tests for services (target: 80% coverage)
- Widget tests for UI components
- Integration tests for full user flows
- End-to-end tests with Firebase emulator
Note: Screenshots coming soon! Add images to showcase:
- Home dashboard
- Schedule builder
- Weekly schedule view
- Collaboration boards
- Task management
- Core features implementation
- Firebase integration
- Smart scheduler algorithm
- Fix security vulnerabilities
- Add comprehensive tests
- Dark mode implementation
- Social features (profile pictures, friend connections)
- Calendar sync (Google Calendar integration)
- Advanced notifications with custom sounds
- Recurring tasks
- Variable task durations
- Task priority system
- AI-powered deadline suggestions
- Web version
- Desktop support (Windows, macOS, Linux)
- Tablet optimization
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m 'Add some AmazingFeature' - Push to the branch:
git push origin feature/AmazingFeature - Open a Pull Request
- Follow Effective Dart guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Maintain consistent formatting with
dart format
This project is private and not licensed for public use.
Sivakanth
- GitHub: @sivakanth1
- Flutter Team for the amazing framework
- Firebase for backend infrastructure
- Stream for chat functionality
- University Community for feature feedback and testing
For support, please open an issue in the GitHub repository or contact the development team.
- Codebase Analysis Report - Comprehensive technical analysis
- Flutter Documentation
- Firebase Documentation
- Stream Chat Documentation
Made with β€οΈ for students, by students