A personal mobile app for tracking college class assignments, built with React Native and Expo.
- Calendar View: Visual calendar showing assignments marked on their due dates
- List View: Chronological list of upcoming assignments
- Class Management: Create and manage classes with custom colors
- Assignment Tracking: Track assignments with title, due date, class, and completion status
- Smart Notifications: Automatic reminders one day before and on the day assignments are due (9 AM)
- Completion Toggle: Mark assignments as complete with a simple checkbox
- React Native (Expo)
- TypeScript
- SQLite (local database)
- React Navigation (tabs & stack navigation)
- expo-notifications (local push notifications)
- react-native-calendars
- Node.js
- Expo CLI (
npm install -g expo-cli) - Expo Go app on your mobile device
- Clone the repository
- Install dependencies:
npm install
npm startThis will start the Expo development server. Scan the QR code with:
- iOS: Camera app
- Android: Expo Go app
- Tap "Classes" in the header on either tab
- Tap "+ Add Class" to create a new class
- Enter class name and select a color
- Edit or delete classes as needed
- Tap the "+" button (FAB) on Calendar or List screen
- Enter assignment title
- Select due date
- Choose the class
- Tap "Create Assignment"
Calendar View:
- Browse dates using the calendar
- Tap any date to see assignments due that day
- Dates with assignments are marked with a dot
List View:
- See all upcoming assignments in chronological order
- Toggle "Show Completed" to include/exclude completed assignments
- Assignments are sorted by due date
- Tap the checkbox to mark as complete/incomplete
- Tap the assignment card to edit details
- In edit mode, you can update or delete the assignment
Classes Table:
- id (INTEGER PRIMARY KEY)
- name (TEXT)
- color (TEXT)
Assignments Table:
- id (INTEGER PRIMARY KEY)
- title (TEXT)
- dueDate (TEXT - ISO date format)
- classId (INTEGER - foreign key)
- completed (INTEGER - 0 or 1)
src/
├── components/ # Reusable UI components
├── data/ # Database layer (SQLite)
├── lib/ # Utilities and context
│ └── context/ # React Context for state management
├── navigation/ # Navigation configuration
├── notifications/ # Notification service
└── screens/ # Main app screens
The app automatically schedules notifications for incomplete assignments:
- Day Before: 9:00 AM the day before due date
- Due Date: 9:00 AM on the due date
Notifications are automatically cancelled when assignments are:
- Marked as complete
- Deleted
This is a personal project for educational use.