{"id":30453347,"url":"https://github.com/yunkhngn/fptu-examination","last_synced_at":"2025-08-23T15:44:53.556Z","repository":{"id":307735183,"uuid":"1030540206","full_name":"yunkhngn/fptu-examination","owner":"yunkhngn","description":"A modern Chrome extension that helps FPT University students easily extract and manage their exam schedules from the FAP system. ","archived":false,"fork":false,"pushed_at":"2025-08-03T23:33:30.000Z","size":131,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-04T00:31:25.899Z","etag":null,"topics":["chrome","extension","fptu"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/fptu-exam-to-calendar/obiiippodjlfcmdipfbkneknbakjekfm","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yunkhngn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-01T20:22:16.000Z","updated_at":"2025-08-03T23:33:34.000Z","dependencies_parsed_at":"2025-08-04T00:31:26.272Z","dependency_job_id":null,"html_url":"https://github.com/yunkhngn/fptu-examination","commit_stats":null,"previous_names":["yunkhngn/fptu-exam-calendar-exporter","yunkhngn/fptu-examination"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/yunkhngn/fptu-examination","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunkhngn%2Ffptu-examination","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunkhngn%2Ffptu-examination/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunkhngn%2Ffptu-examination/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunkhngn%2Ffptu-examination/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yunkhngn","download_url":"https://codeload.github.com/yunkhngn/fptu-examination/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunkhngn%2Ffptu-examination/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271755067,"owners_count":24815335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome","extension","fptu"],"created_at":"2025-08-23T15:44:49.297Z","updated_at":"2025-08-23T15:44:53.491Z","avatar_url":"https://github.com/yunkhngn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FPTU Examination\n\nA modern Chrome extension that helps FPT University students easily extract and manage their exam schedules from the FAP system.\n\n## Key Features\n\n### Smart Exam Schedule Management\n- **Tab Interface**: Clear separation between upcoming and completed exams with counters\n- **Countdown Timer**: Visual time remaining until exam with color coding\n  - **Today**: Current day exam (red)\n  - **Tomorrow**: Next day exam (red) \n  - **Urgent**: 3 days or less (red)\n  - **Future**: More than 3 days (green)\n  - **Completed**: Past exams (gray)\n\n### Automatic Exam Classification\n- **FE** (Final Exam): End-of-term examinations\n- **PE** (Practical Exam): Practical/lab examinations  \n- **2NDFE** (Second Final Exam): Final exam retakes\n- **2NDPE** (Second Practical Exam): Practical exam retakes\n\n### Smart Filtering System\n- Filter by exam type (FE, PE, 2NDFE, 2NDPE)\n- Automatic filter preference saving\n- Modal interface with utility buttons (Select All, Deselect All, Apply)\n- Filters apply to both upcoming and completed exam tabs\n\n### Flexible Time Format Support\nThe extension intelligently handles multiple time formats from different FAP system versions:\n- **Vietnamese format**: `10h00`, `14h30`, `10H00`\n- **Colon format**: `10:00`, `14:30`\n- **Hour only**: `10`, `14` (assumes 00 minutes)\n- **Dot format**: `10.00`, `14.30`\n- **Mixed formats**: Automatically detects and processes different formats\n\n### Modern Design\n- Clean Material Design interface\n- Responsive across different screen sizes\n- Automatic dark mode following system preferences\n- Smooth animations and transitions\n- Tab-based navigation for better organization\n\n### Intelligent Calendar Export\n- **Export only upcoming exams** with confirmed room assignments\n- Skip exams without room numbers or with TBA status\n- Compatible with Apple Calendar, Google Calendar, Outlook\n- Automatic reminders:\n  - 1 day before exam\n  - 1 hour before exam\n- **Works from any website** using stored data (no need to be on FAP page)\n\n## Installation\n\n### Chrome Web Store Installation (Recommended)\nAvailable now: [FPTU Examination on Chrome Web Store](https://chromewebstore.google.com/detail/fptu-exam-to-calendar/obiiippodjlfcmdipfbkneknbakjekfm)\n\n### Manual Installation (Developer Mode)\n1. **Clone repository**:\n   ```bash\n   git clone https://github.com/yunkhngn/fptu-exam-calendar-exporter.git\n   ```\n2. **Open Chrome Extensions**:\n   - Navigate to `chrome://extensions/`\n   - Enable **Developer mode** in the top right corner\n3. **Load extension**:\n   - Click **Load unpacked**\n   - Select the cloned folder\n\n## Usage Guide\n\n### Step 1: Access FAP System\n1. Open `https://fap.fpt.edu.vn/Exam/ScheduleExams.aspx`\n2. Login with your FPT student account\n\n### Step 2: Sync Exam Schedule\n1. **Click extension icon** in Chrome toolbar\n2. **Auto-sync**: Extension automatically loads when on FAP page\n3. **Manual sync**: Click **Đồng bộ** button to reload data\n\n### Step 3: Manage Exam Schedule\n- **View upcoming exams**: \"📅 Chưa thi\" tab (shows count)\n- **View exam history**: \"✅ Đã thi\" tab (shows count)\n- **See countdown**: Each exam shows days remaining with color coding\n- **Filter by type**: Click **Lọc** to select exam types to display\n\n### Step 4: Export Calendar\n1. **Click \"📅 Tải xuống lịch .ics\"** button\n2. **Wait for download**: `lich-thi.ics` file\n3. **Import to calendar app**:\n   - **macOS**: Open with Calendar app\n   - **Windows**: Open with Outlook\n   - **Mobile**: Google Calendar, Apple Calendar\n\n**Note**: Calendar export works from any website using previously synced data. Only exports upcoming exams with confirmed room assignments.\n\n## Technology Stack\n\n- **Frontend**: Vanilla JavaScript, CSS3, HTML5\n- **Chrome APIs**: Tabs, Scripting, Storage\n- **Standards**: iCalendar (RFC 5545)\n- **Design**: Material Design principles\n- **Storage**: LocalStorage for data persistence\n\n## Smart Features\n\n### Time Format Detection\nThe extension automatically handles various time formats from FAP:\n```javascript\n// Supported formats:\n\"10h00 - 12h00\"    // Vietnamese format\n\"10:00 - 12:00\"    // Colon format  \n\"10.00 - 12.30\"    // Dot format\n\"10 - 12\"          // Hour only\n```\n\n### Exam Type Recognition\nAutomatically detects exam types from:\n- Explicit exam type tags in data\n- Form description keywords\n- Mixed Vietnamese/English terminology\n\n### Intelligent Export Logic\n- Skips completed exams (past dates)\n- Excludes exams without room assignments\n- Filters out TBA/unscheduled exams\n- Adds appropriate reminders\n\n## Interface Design\n\n### Light Theme\n- Primary color: Blue (#3b82f6)\n- Background: White (#ffffff)\n- Text: Dark gray (#1f2937)\n\n### Component Design\n- **Cards**: 12px border radius, subtle shadows\n- **Tabs**: Active/inactive states with counters\n- **Tags**: Color-coded by exam type and urgency\n- **Modal**: Overlay with backdrop blur\n- **Countdown**: Dynamic color based on urgency\n\n## Project Structure\n\n```\nfptu-exam-calendar-exporter/\n├── manifest.json          # Extension manifest\n├── popup.html             # Main popup interface\n├── popup.css              # Styling and themes\n├── popup.js               # Main logic and rendering\n├── content.js             # FAP page data extraction\n├── sanitize-utils.js      # Security utilities\n├── icons/                 # Extension icons\n├── docs/                  # Documentation website\n└── README.md              # Documentation\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. **Fork** the repository\n2. **Create branch** for new feature\n3. **Commit** changes with clear messages\n4. **Push** to branch\n5. **Create Pull Request**\n\n## Changelog\n\n### v2.1.0 (Current)\n- Enhanced time format support (Vietnamese, colon, dot, hour-only)\n- Improved exam type detection and classification\n- Added tab system with exam counters\n- Enhanced countdown timer with color coding\n- Smart filtering system with modal interface\n- Export only upcoming exams with confirmed rooms\n- Better error handling and data validation\n\n### v2.0.0 (2025)\n- Added tab system (Upcoming/Completed exams)\n- Added countdown timer with color coding\n- Added exam type filtering system\n- New Material Design interface\n- Calendar export works from any website\n\n### v1.0.0 (2024)\n- Initial release\n- Basic exam schedule export\n- Exam type recognition\n\n## Browser Support\n\n- **Chrome**: v88+ (Manifest V3)\n- **Edge**: v88+ (Chromium-based)\n- **Other Chromium browsers**: Compatible\n\n## Data Privacy\n\n- **Local Storage Only**: All data stored locally in browser\n- **No External Servers**: No data sent to third parties\n- **Secure Processing**: Data sanitization and validation\n- **User Control**: Complete control over data export and deletion\n\n## Troubleshooting\n\n### Common Issues\n1. **No data syncing**: Ensure you're on the correct FAP exam page\n2. **Time format errors**: Extension automatically handles multiple formats\n3. **Export issues**: Check if exams have confirmed room assignments\n4. **Filter not working**: Clear browser data and re-sync\n\n### Support Resources\n- **Bug Reports**: [GitHub Issues](https://github.com/yunkhngn/fptu-exam-calendar-exporter/issues)\n- **Feature Requests**: [GitHub Discussions](https://github.com/yunkhngn/fptu-exam-calendar-exporter/discussions)\n- **Documentation**: [Project Website](https://yunkhngn.github.io/fptu-examination/)\n\n## Author\n\n**Developed with love by:**\n- [@yunkhngn](https://github.com/yunkhngn) - Developer \u0026 Designer \u0026 Guitarist\n\n**I 💛 FPTU** - Tôi yêu FPT University\n\n## License\n\nMIT License - See [LICENSE](LICENSE) file for details\n\n---\n\n**If this extension helps you manage your exam schedule, please ⭐ star the repository to support the author!**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunkhngn%2Ffptu-examination","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyunkhngn%2Ffptu-examination","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunkhngn%2Ffptu-examination/lists"}