PlannerITI is a modern, feature-rich mobile application designed specifically for students at the College of Excellence in IT (CEITI). It combines schedule management, assignment tracking, grade monitoring, official exam/thesis schedules, and intelligent notifications into one seamless experience.
Built with React Native, Expo, and Expo Router, PlannerITI offers an offline-first experience on iOS and Android with OTA update support and a polished, responsive UI optimized for student productivity.
- Real-time Class Schedule: Automatically syncs with CEITI's schedule system
- Day & Week Views: Toggle between detailed daily view and comprehensive weekly overview
- Even/Odd Week Detection: Automatically determines the current week type
- Recovery Day Support: Special handling for weekend recovery classes
- Official Thesis/Exam Schedule: Pulls official assessments with subgroup-aware matching
- Custom Periods: Create and manage custom time blocks for extracurricular activities
- Subgroup Filtering: Display classes specific to your subgroup (Subgroup 1 or 2)
- Offline Support: Cached schedules available even without internet connection
- Assignment Integration: See assignment counts directly on each class period
- Daily Period Sync: Period times and overrides sync automatically
- Multiple Views: Organize assignments by due date, class, or priority
- Rich Assignment Types: Support for homework, tests, exams, projects, quizzes, labs, essays, and presentations
- Subtasks: Break down complex assignments into manageable subtasks
- Priority Marking: Flag important assignments for quick access
- Completion Tracking: Mark assignments and subtasks as complete
- Archive System: Automatically archive past-due assignments
- Course Integration: Link assignments to specific schedule periods
- Orphaned Assignment Handling: Smart detection and restoration when switching groups
- IDNP Integration: Secure login using your IDNP number
- Real-time Grade Display: View current semester grades and averages
- Semester Overview: Access grades for all semesters (Semester I & II)
- Exam Tracking: Monitor upcoming and completed exams (Examen, Teza, PracticΔ)
- Official Schedule Matching: Cross-references official exam/thesis schedules when available
- Automatic Average Calculation: Real-time computation of subject and semester averages
- Exam Grade Integration: Automatically applies exam grades to semester averages using proper weighting
- Absence Tracking: Monitor total, sick, excused, and unexcused absences
- Grade Calculator: Smart tool to calculate what grades you need to reach your target average
- Semester-specific calculations
- Annual average calculations (for multi-semester subjects)
- Realistic grade suggestions
- Annual Grades: View complete annual performance summaries
- Offline Caching: Access your grades even when offline
- Background Refresh: Silent updates when opening the app
- Smart Reminders: Customizable reminder schedules based on assignment type
- Exams: Default 7 days before
- Tests: Default 5 days before
- Quizzes: Default 3 days before
- Projects: Default 5 days before
- Homework: Default 2 days before
- Other: Default 1 day before
- Daily Digest: Optional daily summary of upcoming assignments
- Type-Specific Daily Reminders: Enable daily reminders for specific assignment types (exams, tests, quizzes)
- Customizable Timing: Set your preferred notification time
- Completion Awareness: Automatically cancels notifications for completed assignments
- Priority Alerts: Enhanced notifications for priority assignments
- Secure Authentication: Email-based login with token auth and secure credential storage
- Email Verification: Verify your account via email
- Password Reset: Secure password recovery system
- Gravatar Integration: Automatic profile pictures from Gravatar
- Account Management: View profile, manage settings, delete account
- Skip Login Option: Use the app without creating an account
- Session Management: Automatic token refresh and secure session handling
- Settings Sync: Uploads user settings and notification preferences when logged in
- Multi-Language Support:
- English (en)
- RomΓ’nΔ (ro)
- Π ΡΡΡΠΊΠΈΠΉ (ru)
- Automatic Language Detection: Defaults to system language
- Localized Date Formatting: Dates displayed in your preferred language
- Translation Coverage: Complete UI translation including all features
- Theme Support: Automatic light/dark mode with custom styling
- Schedule Views: Switch between day and week views
- Group Selection: Choose from all CEITI groups (e.g., P-2422, M-2422, etc.)
- Custom Period Management: Create, edit, and delete custom time blocks
- Set custom names and colors
- Define specific days of the week
- Set custom start and end times
- Enable/disable periods as needed
- Notification Preferences: Fine-tune all notification settings
- IDNP Management: Securely store and manage your student ID
- OTA Updates: Staged over-the-air updates via Expo Updates
- Channel Awareness: Beta/production filtering based on app variant
- Node.js (v18 or later)
- pnpm (v10+)
- Expo CLI: use
pnpm exec expo(ornpx expo) - iOS Simulator (Mac only) or Android Emulator
- Expo Go app (for testing on physical devices)
-
Clone the repository
git clone https://github.com/JaggedGem/PlannerITI.git cd PlannerITI -
Install dependencies
pnpm install
-
Set up environment variables (optional)
Create a
.envfile only if you need custom API routing during local development:CUSTOM_API_LOCAL_URL= CUSTOM_API_LOCAL_HOST= CUSTOM_API_LOCAL_PORT=5000
-
Start the development server
npx expo start
-
Run on your device
- Scan the QR code with Expo Go (Android) or Camera app (iOS)
- Press
ifor iOS simulator - Press
afor Android emulator
-
Install EAS CLI
pnpm add -g eas-cli
-
Configure EAS
eas build:configure
-
Build for Android
pnpm run build- Build for iOS
pnpm run build:iospnpm run update # Android
pnpm run update:ios # iOSFor Android:
npx expo run:androidFor iOS (Mac only):
npx expo run:iosPlannerITI/
βββ app/ # Main application screens
β βββ (tabs)/ # Tab-based navigation
β β βββ assignments.tsx # Assignment management
β β βββ schedule.tsx # Class schedule
β β βββ grades.tsx # Grade tracking
β β βββ settings.tsx # App settings
β βββ auth.tsx # Authentication screen
β βββ forgot-password.tsx # Forgot password flow
β βββ reset-password.tsx # Reset password flow
β βββ signup.tsx # Sign-up flow
β βββ privacy-policy.tsx # Privacy policy screen
β βββ new-assignment.tsx # Create assignment
β βββ edit-assignment.tsx # Edit assignment
β βββ archive.tsx # Archived assignments
β βββ _layout.tsx # Root layout
βββ components/ # Reusable components
β βββ assignments/ # Assignment-related components
β βββ auth/ # Authentication components
β βββ schedule/ # Schedule view components
β βββ ui/ # UI primitives
β βββ LoginNotification.tsx # Login prompt banner
βββ services/ # Business logic & API
β βββ authService.ts # Authentication service
β βββ scheduleService.ts # Schedule management
β βββ gradesService.ts # Grades API integration
β βββ settingsService.ts # Settings persistence
β βββ updateService.ts # OTA staging + channel/version helpers
βββ utils/ # Utility functions
β βββ assignmentStorage.ts # Assignment data management
β βββ notificationHelper.ts # Notification scheduling
β βββ notificationUtils.ts # Notification configuration
β βββ dateLocalization.ts # Date formatting
β βββ specialScheduleUtils.ts # Thesis/exam filtering helpers
βββ constants/ # App constants
β βββ Colors.ts # Color definitions
β βββ Translations.ts # Translation strings
βββ hooks/ # Custom React hooks
β βββ useTranslation.ts # Localization hook
β βββ useAssignments.ts # Assignment management
β βββ useAuth.ts # Authentication state
βββ assets/ # Static assets
βββ fonts/ # Custom fonts
βββ images/ # Images and icons
The app uses app.config.js for configuration. Key settings:
- App Name: PlannerITI
- Slug: planneriti
- Version: 1.5.0
- Orientation: Portrait (locked)
- Splash Screen: Custom splash with icon
- Theme: Automatic light/dark
- Permissions: Notifications
- Runtime Version: Configurable via
RUNTIME_VERSION - New Architecture: Enabled
Build profiles are defined in eas.json:
- Development: Development builds with dev client
- Beta: Internal testing builds and OTA updates
- Production: Release builds for stores
- React Native 0.81.4 - Mobile framework
- Expo ~54.0.12 - Development platform
- TypeScript 5.9.2 - Type safety
- React 19.1.0 - UI library
- Expo Router ~6.0.10 - File-based routing
- React Navigation 7.x - Navigation library
- AsyncStorage 2.2.0 - Local data persistence
- Expo SecureStore ~15.0.7 - Secure credential storage
- Expo Updates ~29.0.12 - OTA updates
- React Native Reanimated ~4.1.1 - Smooth animations
- React Native Gesture Handler ~2.28.0 - Touch gestures
- Expo Blur ~15.0.7 - Blur effects
- Expo Linear Gradient ~15.0.7 - Gradient backgrounds
- Expo Haptics ~15.0.7 - Haptic feedback
- date-fns 4.1.0 - Date manipulation
- crypto-js 4.2.0 - Encryption
- Expo Notifications ~0.32.12 - Push notifications
- Expo Linking ~8.0.8 - Deep linking
- Base URL:
https://orar-api.ceiti.md/v1 - Endpoints:
/grupe- Fetch available groups/orar?_id={groupId}&tip=class- Fetch class schedule
- Base URL:
https://api.ceiti.md - Authentication: IDNP-based login
- Endpoints:
/date/login- Authenticate with IDNP/index.php/date/info/{idnp}- Fetch student grades
- Development resolution order:
CUSTOM_API_LOCAL_URL(full URL)CUSTOM_API_LOCAL_HOST+CUSTOM_API_LOCAL_PORT(defaults to5000)- Expo host-derived local URLs (plus Android/iOS emulator fallbacks)
- Production fallback URL:
https://papi.jagged.site - Features:
- User authentication and management
- Period time synchronization
- Recovery day scheduling
- Encrypted data storage
- Official thesis/exam schedules
- Secure Storage: Passwords and sensitive data stored using Expo SecureStore
- Encryption: Client-side encryption for IDNP data
- Token Management: JWT-based authentication with auto-refresh
- Offline First: Local data storage with minimal network exposure
- No Analytics: No third-party tracking or analytics
- GDPR Compliant: Account deletion removes all user data
- iOS Simulator: Some notification features may not work in iOS Simulator (test on device)
- Expo Go Limitations: Push token registration may be unavailable; local notifications still work
- Network Dependency: Schedule and grade sync require internet connection
- Group Changes: When switching groups, some assignments may become "orphaned" (can be restored)
- IDNP Requirement: Grade features require a valid CEITI IDNP number
Contributions are welcome! Please follow these steps:
- 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 TypeScript best practices
- Write meaningful commit messages
- Update documentation for new features
- Test on both iOS and Android
- Maintain code style consistency
This project is licensed under the MIT License - see the LICENSE file for details.
- Bogdan - Main developer for the app - JaggedGem
- CEITI for the schedule API access
- Expo team for the amazing development platform
- React Native community for valuable resources
- All contributors and testers
For issues, questions, or suggestions:
- Open an issue on GitHub
- Contact the development team
- Widget support for iOS and Android
- Calendar integration
- Study timer and pomodoro technique
- Group study sessions
- Cloud sync across devices
- Dark/light theme toggle
- Export grades to PDF
- Grade predictions and trends
- Collaborative assignments
- Teacher contact information
- Background refresh optimization
- Grade calculator improvements
- Multi-semester subject support
Star β this repository if you find it helpful!