Skip to content

unpamtiaslab/opreq

Repository files navigation

πŸš€ Open Recruitment ASLAB UNPAM 2025

Deploy Status SEO Check Countdown

Website rekrutmen Asisten Laboratorium TI UNPAM dengan fitur modern, aman, dan SEO-optimized


πŸ“‘ Daftar Isi


🌐 Live Demo

URL: https://unpamtiaslab.github.io/opreq/


✨ Features

πŸ”’ Security

  • βœ… XSS Protection (HTML sanitization)
  • βœ… URL Validation (whitelist protocols)
  • βœ… Rate Limiting (spam prevention)
  • βœ… CSP Headers (Content Security Policy)
  • βœ… Safe External Links (noopener/noreferrer)
  • βœ… Input Sanitization & Output Encoding

🎨 UI/UX

  • βœ… Modern gradient design
  • βœ… Smooth animations (10+ animations)
  • βœ… Loading states & error handling
  • βœ… Success/error toast notifications
  • βœ… Mobile responsive (100%)
  • βœ… Interactive hover effects

πŸš€ Functionality

  • βœ… Dynamic content from config.json
  • βœ… QR Code generator (auto-load)
  • βœ… Download QR (3 fallback methods)
  • βœ… Copy link to clipboard
  • βœ… Real-time countdown timer
  • βœ… FAQ accordion
  • βœ… Social share buttons (WA, Telegram, Twitter, FB)
  • βœ… Print watermark protection
  • βœ… Right-click image protection

πŸ“Š SEO & Marketing

  • βœ… 25+ meta tags (SEO, OG, Twitter)
  • βœ… JSON-LD structured data (Event schema)
  • βœ… sitemap.xml & robots.txt
  • βœ… Canonical URLs
  • βœ… Geographic meta tags
  • βœ… Social media preview cards

πŸ€– Automation (GitHub Actions)

  • βœ… Auto-update sitemap (daily)
  • βœ… Auto-deploy to GitHub Pages
  • βœ… SEO health monitoring (weekly)
  • βœ… Countdown status check (hourly)
  • βœ… Manual workflow triggers

πŸ“ Project Structure

opreq/
β”œβ”€β”€ index.html              # Main HTML with meta tags
β”œβ”€β”€ config.json             # Dynamic content configuration
β”œβ”€β”€ sitemap.xml             # SEO sitemap (auto-updated)
β”œβ”€β”€ robots.txt              # Search engine rules
β”œβ”€β”€ script/
β”‚   └── script.js           # Security + features
β”œβ”€β”€ style/
β”‚   └── style.css           # Modern styling
β”œβ”€β”€ images/
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ aslab_logo.webp
β”‚   └── filkom.webp
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       β”œβ”€β”€ deploy.yml      # Auto deploy workflow
β”‚       β”œβ”€β”€ seo-check.yml   # SEO monitoring
β”‚       └── countdown.yml   # Deadline checker
β”œβ”€β”€ README.md               # This file
β”œβ”€β”€ SEO_GUIDE.md           # SEO documentation
β”œβ”€β”€ GITHUB_ACTIONS.md      # Automation guide
└── SECURITY_AUDIT.md      # Security report

πŸ› οΈ Quick Start

Local Development

# Clone repository
git clone https://github.com/unpamtiaslab/opreq.git
cd opreq

# Open with live server (recommended)
# VS Code: Install "Live Server" extension
# Then: Right-click index.html β†’ "Open with Live Server"

# Or open directly in browser
start index.html  # Windows
open index.html   # macOS
xdg-open index.html  # Linux

Configuration

Edit config.json to update content:

{
  "countdown_deadline": {
    "date": "19 Desember 2025",
    "time": "23:59:59"
  },
  "persyaratan": [...],
  "benefit": [...],
  "timeline": [...],
  "contacts": [...],
  "footer_text": [...],
  "text_to_qr": "https://forms.google.com/..."
}

πŸš€ Deployment

GitHub Pages (Automated)

  1. Fork/Clone repository
  2. Push to your GitHub repo
  3. Enable GitHub Pages:
    • Settings β†’ Pages
    • Source: GitHub Actions
  4. Done! Workflows akan auto-deploy

Manual Deploy

# Commit changes
git add .
git commit -m "Update content"
git push origin main

# GitHub Actions akan auto-deploy dalam 2-3 menit

πŸ€– GitHub Actions

Available Workflows:

1. Auto Update and Deploy

  • Trigger: Push, Daily (00:00 UTC), Manual
  • Function: Update sitemap β†’ Deploy to Pages

2. SEO Monitor

  • Trigger: Weekly (Monday), Manual
  • Function: Check SEO health β†’ Generate report

3. Countdown Update

  • Trigger: Hourly, Manual
  • Function: Check deadline β†’ Update status

Manual Trigger:

Actions β†’ Select Workflow β†’ Run workflow

Documentation: See GITHUB_ACTIONS.md


πŸ“Š SEO Optimization

Metrics:

  • βœ… Title: 58 chars (optimal)
  • βœ… Description: 159 chars (optimal)
  • βœ… Keywords: 15+ targeted keywords
  • βœ… Meta Tags: 25+ tags
  • βœ… Structured Data: JSON-LD Event schema
  • βœ… Social Cards: OG + Twitter

Submit to Search Engines:

Google Search Console:

1. https://search.google.com/search-console
2. Add property: https://unpamtiaslab.github.io/opreq/
3. Submit sitemap.xml

Bing Webmaster:

1. https://www.bing.com/webmasters
2. Import from Google (easier)

Documentation: See SEO_GUIDE.md


πŸ”’ Security

Security Score: A+ (97/100)

  • βœ… XSS Protection
  • βœ… URL Validation
  • βœ… Rate Limiting
  • βœ… CSP Headers
  • βœ… Input Sanitization
  • βœ… Output Encoding
  • βœ… Secure Links
  • βœ… Error Handling

Documentation: See SECURITY_AUDIT.md


πŸ“± Browser Support

  • βœ… Chrome 90+
  • βœ… Firefox 88+
  • βœ… Safari 14+
  • βœ… Edge 90+
  • βœ… Mobile browsers (iOS, Android)

🎯 Performance

  • Load Time: < 1.5s
  • File Size: < 100KB (excl. images)
  • PageSpeed Score: 95+ (target)
  • Mobile Friendly: βœ… 100%

πŸ“ Contributing

Contributions welcome! Please follow these steps:

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

πŸ“„ License

This project is for internal use by ASLAB TI UNPAM.


πŸ™ Acknowledgments

  • Design inspiration: Modern web design trends
  • Icons: Emoji (native)
  • QR Generator: api.qrserver.com
  • Hosting: GitHub Pages
  • Automation: GitHub Actions

πŸ“Š Project Stats

GitHub last commit GitHub repo size GitHub


Problem Solutions

1. Notification doesn't show up

First

how to fix:

  • Check the browser console (F12)
  • Go to Applications
  • Tap Storage
  • Clear site data

Solutions:

  • Make sure JavaScript is enabled in your browser settings.
  • Clear browser cache and reload the page.
  • Try accessing the site in a different browser to rule out browser-specific issues.
  • Check the browser console (F12) for any JavaScript errors that might prevent the notification from displaying.
  • Ensure that any ad-blockers or browser extensions are not blocking site scripts.

2. Notification doesn't show up by cookies

Second

how to fix:

  • Look at the top right of the address bar
  • Click the lock icon or i icon
  • Go to Cookies
  • Remove the cookies for this site
  • don't forget to reload the page and Notifications Allowed or Allow

Solutions:

  • Clear cookies for the site by clicking the lock icon in the address bar, navigating to Cookies, and removing them.
  • Ensure that your browser is set to accept cookies from the site.

Made with ❀️ by ASLAB TI UNPAM

Last Updated: December 12, 2025

About

Open Recruitment for Laboratory Assistant at Pamulang University.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •