A simple, elegant web application for generating PDF certificates of participation for bioinformatics workshops. Designed to be hosted on GitHub Pages with no backend requirements.
- Simple Interface: Clean, responsive design that works on all devices
- Workshop Selection: Dropdown menu populated from a customizable text file
- PDF Generation: Client-side PDF creation using jsPDF library
- Activity Logging: Tracks certificate generations for staff review
- Professional Design: Beautiful certificates with institutional branding
- No Backend Required: Runs entirely in the browser, perfect for GitHub Pages
-
Fill out the form:
- Enter your full name as you'd like it to appear on the certificate
- Provide your email address for verification
- Select the workshop you attended from the dropdown
-
Generate certificate:
- Click "Generate Certificate"
- Wait for the PDF to be created and downloaded
- The certificate will be saved to your Downloads folder
- Refer to the team's Google Sheet called Certification Log
- Edit the
workshops.txtfile to add, remove, or modify workshop titles - Each workshop should be on a separate line with date in parentheses
- Changes take effect immediately when the page is refreshed
- jsPDF: Client-side PDF generation (loaded from CDN)
- No other external dependencies required
- Modern browsers (Chrome, Firefox, Safari, Edge)
- Requires JavaScript enabled
- Uses localStorage for activity logging
- Workshop List: Loaded from
workshops.txtfile - Activity Log: Stored in Google Sheets
- No server-side storage: All data remains client-side
- No sensitive data is transmitted or stored
- Email addresses are only used for logging purposes
- All processing happens client-side
-
Workshop dropdown is empty:
- Check that
workshops.txtexists and contains workshop titles - Ensure each workshop is on a separate line
- Check browser console for loading errors
- Check that
-
PDF not downloading:
- Ensure browser allows downloads
- Check that jsPDF library is loading correctly
- Try refreshing the page
-
Site not loading on GitHub Pages:
- Verify GitHub Pages is enabled in repository settings
- Check that all files are committed and pushed
- Wait a few minutes for deployment to complete
Open developer tools (F12) and check the Console tab for any error messages or debugging information.
This project is open source and available under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For issues or questions:
- Check the troubleshooting section above
- Review browser console for error messages
- Create an issue in the GitHub repository
To prevent fraudulent certificate usage and enable staff monitoring, the system logs all certificate generations to a Google Sheet that only authorized staff can access.
- Go to script.google.com
- Click "New Project"
- Replace the default code with the contents of
google-apps-script.js - Save the project with a name like "Certificate Logger"
- Click "Deploy" → "New deployment"
- Choose type: "Web app"
- Critical settings:
- ✅ Execute as: "Me"
- ✅ Who has access: "Anyone" (not "Anyone with Google account")
- Click "Deploy"
- Copy the deployment URL (you'll need this for the next step)
- Go to your GitHub repository
- Click Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
GOOGLE_SCRIPT_URL - Value: Your Google Apps Script deployment URL
- Click "Add secret"
- Go to Settings → Pages
- Source: "GitHub Actions"
- The workflow will automatically deploy when you push to main
If you update the GOOGLE_SCRIPT_URL secret, you can manually trigger a new deployment:
- Go to the Actions tab in your repository
- Click "Deploy to GitHub Pages" workflow
- Click "Run workflow" button
- Select the main branch and click "Run workflow"
- Wait for the deployment to complete
- Push your changes to trigger deployment (or use manual trigger)
- Generate a test certificate on your live site
- Check your Google Drive for "Bioinformatics Certificate Log"
- Verify the entry appears in the sheet
- GitHub Actions reads the
GOOGLE_SCRIPT_URLsecret during deployment - Creates
config.jsonwith the URL during the build process - Website loads the URL from
config.jsonat runtime - Logging works seamlessly without exposing sensitive data
Each certificate generation records:
- Timestamp: When the certificate was generated
- Name: Participant's name
- Email: Participant's email
- Workshop: Full workshop title and date
- User Agent: Browser information (for fraud detection)
If logging isn't working:
- Check browser console for error messages
- Verify the GitHub Secret is set correctly
- Ensure GitHub Actions deployment completed successfully
- Test the Google Apps Script directly using the
testLoggingfunction
Common issues:
- 401 errors: Redeploy Google Apps Script with correct permissions
- No config.json: GitHub Actions may have failed - check the Actions tab
- Secret not found: Verify the secret name is exactly
GOOGLE_SCRIPT_URL
Note: This application runs entirely in the browser and requires no server-side components, making it perfect for GitHub Pages hosting.