Skip to content

JaggedGem/PlannerITI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

324 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PlannerITI πŸ“š

PlannerITI Logo

A comprehensive student planner for CEITI students

React Native Expo TypeScript License

πŸ“– Overview

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.

✨ Key Features

πŸ“… Smart Schedule Management

  • 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

πŸ“ Assignment Tracking

  • 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

πŸ“Š Grade Monitoring

  • 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

πŸ”” Intelligent Notifications

  • 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

πŸ” Account & Sync (Authentication System)

  • 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

🌍 Localization

  • 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

βš™οΈ Customization

  • 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

πŸ”„ Updates & Release Channels

  • OTA Updates: Staged over-the-air updates via Expo Updates
  • Channel Awareness: Beta/production filtering based on app variant

πŸš€ Getting Started

Prerequisites

  • Node.js (v18 or later)
  • pnpm (v10+)
  • Expo CLI: use pnpm exec expo (or npx expo)
  • iOS Simulator (Mac only) or Android Emulator
  • Expo Go app (for testing on physical devices)

Installation

  1. Clone the repository

    git clone https://github.com/JaggedGem/PlannerITI.git
    cd PlannerITI
  2. Install dependencies

    pnpm install
  3. Set up environment variables (optional)

    Create a .env file only if you need custom API routing during local development:

    CUSTOM_API_LOCAL_URL=
    CUSTOM_API_LOCAL_HOST=
    CUSTOM_API_LOCAL_PORT=5000
  4. Start the development server

    npx expo start
  5. Run on your device

    • Scan the QR code with Expo Go (Android) or Camera app (iOS)
    • Press i for iOS simulator
    • Press a for Android emulator

πŸ“± Building for Production

Using EAS Build

  1. Install EAS CLI

    pnpm add -g eas-cli
  2. Configure EAS

    eas build:configure
  3. Build for Android

pnpm run build
  1. Build for iOS
pnpm run build:ios

OTA Updates

pnpm run update       # Android
pnpm run update:ios   # iOS

Local Builds

For Android:

npx expo run:android

For iOS (Mac only):

npx expo run:ios

πŸ—οΈ Project Structure

PlannerITI/
β”œβ”€β”€ 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

πŸ”§ Configuration

App Configuration

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

EAS Configuration

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

πŸ› οΈ Technologies Used

Core

  • 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

Navigation & Routing

  • Expo Router ~6.0.10 - File-based routing
  • React Navigation 7.x - Navigation library

Data & Storage

  • AsyncStorage 2.2.0 - Local data persistence
  • Expo SecureStore ~15.0.7 - Secure credential storage
  • Expo Updates ~29.0.12 - OTA updates

UI & Animation

  • 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

Utilities

  • 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

πŸ“‘ API Integration

Schedule API

  • Base URL: https://orar-api.ceiti.md/v1
  • Endpoints:
    • /grupe - Fetch available groups
    • /orar?_id={groupId}&tip=class - Fetch class schedule

Grades API

  • Base URL: https://api.ceiti.md
  • Authentication: IDNP-based login
  • Endpoints:
    • /date/login - Authenticate with IDNP
    • /index.php/date/info/{idnp} - Fetch student grades

Custom Backend API

  • Development resolution order:
    • CUSTOM_API_LOCAL_URL (full URL)
    • CUSTOM_API_LOCAL_HOST + CUSTOM_API_LOCAL_PORT (defaults to 5000)
    • 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

πŸ”’ Security & Privacy

  • 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

πŸ› Known Issues & Limitations

  • 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

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Write meaningful commit messages
  • Update documentation for new features
  • Test on both iOS and Android
  • Maintain code style consistency

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Authors

  • Bogdan - Main developer for the app - JaggedGem

πŸ™ Acknowledgments

  • CEITI for the schedule API access
  • Expo team for the amazing development platform
  • React Native community for valuable resources
  • All contributors and testers

πŸ“ž Support

For issues, questions, or suggestions:

  • Open an issue on GitHub
  • Contact the development team

πŸ—ΊοΈ Roadmap

Upcoming Features

  • 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

In Progress

  • Background refresh optimization
  • Grade calculator improvements
  • Multi-semester subject support

Made with ❀️ for CEITI students

Star ⭐ this repository if you find it helpful!

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors