A modern, beautiful web application for organizing and managing group meeting presentation schedules. Built with React, Node.js, and Express.
- π Secure Access: Password-protected access with customizable passcode
- π Automatic Scheduling: Generates random presentation schedules every two weeks
- π§ Email Automation: Automatic reminders sent every Friday
- π Smart Rescheduling: Automatically adjusts dates when meetings are skipped or rescheduled
- π₯ Presenter Management: Swap presenters between different meeting dates
- π± Responsive Design: Beautiful, modern UI that works on all devices
- π¨ Vivid Color Palette: Modern design with smooth animations and gradients
- Initial Setup: Generates a random presentation schedule starting from September 8th, 2025
- Weekly Automation: Every Friday at 9 AM, the system:
- Checks if there's a meeting the following Monday
- Sends appropriate reminders to group members
- Manages schedule updates and new round generation
- Schedule Management: Users can swap presenters, skip meetings, and change dates
- Smart Rescheduling: Automatically maintains two-week intervals when dates are changed
- Frontend: React 18, TypeScript, CSS3 with modern animations
- Backend: Node.js, Express.js
- Email: Email service with SendGrid
- Scheduling: Node-cron for automated tasks
- Styling: Custom CSS with glassmorphism effects and gradients
- Node.js 16+
- npm or yarn
- Gmail account (for email functionality)
-
Clone the repository
git clone <your-repo-url> cd meeting_scheduler
-
Install dependencies
npm run install-all
-
Configure environment variables
cp env.example .env
Edit
.envfile with your email credentials:EMAIL_USER=your-email@gmail.com EMAIL_PASS=your-app-password
-
Generate Gmail App Password
- Go to Google Account Settings
- Generate an app password for "Mail"
- Use this password in your
.envfile
-
Start the application
npm run dev
This will start both the backend server (port 3001) and React frontend (port 3000).
- Open your browser and navigate to
http://localhost:3000 - Enter the passcode:
BiospecParty - View and manage your presentation schedule
- View Schedule: See all upcoming presentations with dates and presenters
- Swap Presenters: Exchange presenters between different meeting dates
- Skip Meeting: Remove a meeting and automatically adjust subsequent dates
- Change Date: Modify a meeting date and automatically adjust the schedule
The system automatically sends emails every Friday:
- Meeting Reminders: Sent to all group members when a meeting is scheduled
- Presentation Reminders: Sent to upcoming presenters after a meeting occurs
- Schedule Updates: Notifications when new rounds are generated
Edit the groupMembers array in server/index.js to add or remove members:
let groupMembers = [
{ name: "Dr. Sarah Johnson", email: "sarah.johnson@biospec.edu" },
{ name: "Prof. Michael Chen", email: "m.chen@biospec.edu" },
// Add more members...
];- Frequency: Every two weeks on Monday
- Start Date: September 8th, 2025 (configurable)
- Presenters: 2 per meeting
- Auto-generation: New rounds created when <1/3 of members haven't presented
Change the PASSCODE constant in server/index.js:
const PASSCODE = "YourNewPasscode";- Create a private GitHub repository
- Push your code:
git add . git commit -m "Initial commit" git push origin main
-
Install Vercel CLI:
npm i -g vercel
-
Deploy:
vercel
-
Set environment variables in Vercel dashboard
EMAIL_USER: Your Gmail addressEMAIL_PASS: Your Gmail app passwordPORT: Server port (optional, defaults to 3001)
- Private Repository: Keep the repository private due to hardcoded passcode
- Environment Variables: Never commit
.envfiles - Email Security: Use app passwords, not regular passwords
- Access Control: Consider implementing additional authentication for production
Edit client/src/index.css to customize:
- Color schemes
- Animations
- Typography
- Layout spacing
Modify email content in server/index.js:
- Meeting reminders
- Presentation notifications
- Schedule updates
Adjust scheduling logic in server/index.js:
- Meeting frequency
- Presenter count
- Round generation rules
- Email not sending: Check Gmail app password and 2FA settings
- Port conflicts: Change PORT in .env file
- Build errors: Ensure Node.js version is 16+
- CORS issues: Check server configuration
Check server console for:
- Schedule generation logs
- Email sending status
- API request logs
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- Check the troubleshooting section
- Review server logs
- Create a GitHub issue with detailed information
Built with β€οΈ for the Biospec Group