A Vue.js web application for scheduling names on a weekly calendar, designed for managing tasks or assignments on workdays (MondayβFriday). Built with Firebase Firestore for real-time data persistence, it allows users to add, edit, remove, and reorder names via a user-friendly interface, export schedules as CSV, and view events in a customizable calendar.
π Live Demo | π Click the rice cooker logo to visit GitHub!
- Multiple Views: Month, week, and day format using FullCalendar
- Schedule Overview: Starting from June 2, 2025
- Workday Focus: MondayβFriday scheduling (perfect for office tasks!)
- Add Names: Simple modal input for new entries
- Edit Names: Inline editing with intuitive controls
- Remove Names: One-click removal with confirmation
- Drag & Drop: Reorder names using vuedraggable for easy prioritization
- Firebase Integration: Dual environment setup (development/production)
- Live Sync: Changes reflect instantly across all users
- Data Persistence: Never lose your scheduling data
- CSV Export: Download schedules with title, day, and start date
- Structured Data: Easy to import into other applications
- Responsive Design: Built with Bootstrap for all device sizes
- Custom Styling: Mali font and clean, professional appearance
- Bootstrap Icons: Modern iconography throughout the interface
- Rice Cooker Theme: Custom favicon and branding π
- Vue.js (Vue CLI)
- FullCalendar (Calendar component)
- Bootstrap (UI framework)
- Bootstrap Icons (Icon library)
- vuedraggable (Drag & drop functionality)
- Firebase Firestore (Real-time database)
- Node.js (Runtime environment)
- Netlify (Hosting platform)
- GitHub (Version control)
- Mali Font (Custom typography)
- Custom CSS (Tailored styling)
Before you begin, ensure you have:
- Node.js (v16 or v18 recommended)
- npm package manager
- Firebase account for Firestore setup
- Netlify account for deployment
- GitHub account for version control
git clone https://github.com/Karllouise-code/calender-scheduler.git
cd calender-schedulernpm installCreate two Firebase projects for proper environment separation:
- Development:
calendar-scheduler-development - Production:
calendar-scheduler-5e1c7
Create environment files in your project root:
.env.development
VUE_APP_FIREBASE_API_KEY=<dev-api-key>
VUE_APP_FIREBASE_AUTH_DOMAIN=calendar-scheduler-development.firebaseapp.com
VUE_APP_FIREBASE_PROJECT_ID=calendar-scheduler-development
VUE_APP_FIREBASE_STORAGE_BUCKET=calendar-scheduler-development.firebasestorage.app
VUE_APP_FIREBASE_MESSAGING_SENDER_ID=<dev-messaging-sender-id>
VUE_APP_FIREBASE_APP_ID=<dev-app-id>.env.production
VUE_APP_FIREBASE_API_KEY=<prod-api-key>
VUE_APP_FIREBASE_AUTH_DOMAIN=calendar-scheduler-5e1c7.firebaseapp.com
VUE_APP_FIREBASE_PROJECT_ID=calendar-scheduler-5e1c7
VUE_APP_FIREBASE_STORAGE_BUCKET=calendar-scheduler-5e1c7.firebasestorage.app
VUE_APP_FIREBASE_MESSAGING_SENDER_ID=<prod-messaging-sender-id>
VUE_APP_FIREBASE_APP_ID=<prod-app-id>echo ".env*" >> .gitignoreDevelopment Environment (Open access for testing):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}Production Environment (Secure rules):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /names/{document=**} {
allow read: if true;
allow write: if request.resource.data.name is string &&
request.resource.data.name.size() <= 50 &&
request.resource.data.createdAt is timestamp;
}
}
}Run the application locally with hot-reloading:
npm run serveVisit http://localhost:8080 to view the app (connected to development Firebase).
Compile and minify for production:
npm run buildThis generates the dist/ folder using the production Firebase project.
Lint and fix files:
npm run lint-
Push to GitHub:
git push origin main
-
Configure Netlify:
- Connect your GitHub repository
- Build command:
npm run build - Publish directory:
dist - Environment variables: Copy from
.env.development
-
Deploy: Use Netlify's UI to deploy
-
Verify: Visit your Netlify URL to see the live application
- Navigate between month, week, and day views
- Check scheduled items (e.g., June 30: Lester Niel, July 1: Rio)
- Use calendar controls to browse different time periods
- Add Names: Click "Add new name" to open the management modal
- Edit Names: Use the pencil icon for inline editing
- Remove Names: Click the trash icon to delete entries
- Reorder: Drag and drop names to change priority
- Save Changes: Use the check icon to confirm changes
- Click the download button to export as
schedule.csv - File includes title, day, and start date information
- Perfect for importing into other scheduling tools
- βοΈ Pencil: Edit name
- ποΈ Trash: Remove name
- πΎ Download: Save/Export
- β Check: Confirm changes
- β Cancel: Discard changes
calender-scheduler/
βββ public/ # Static files
β βββ rice-cooker_1530504.png # Custom favicon
β βββ index.html # Main HTML template
βββ src/ # Vue.js source code
β βββ components/ # Vue components
β βββ views/ # Page components
β βββ firebase/ # Firebase configuration
β βββ App.vue # Root component
β βββ main.js # Application entry point
βββ .env.development # Development environment variables
βββ .env.production # Production environment variables
βββ package.json # Dependencies and scripts
βββ vue.config.js # Vue CLI configuration
βββ README.md # Project documentation
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow Vue CLI conventions and coding standards
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Vue.js best practices
- Use Bootstrap classes for styling consistency
- Test changes in both development and production environments
- Update documentation for new features
Firebase Connection Errors
- Verify environment variables are correctly set
- Check Firestore security rules
- Ensure Firebase projects are properly configured
Netlify Build Failures
- Review deploy logs in Netlify dashboard
- Verify
dist/folder is generated correctly - Check environment variables in Netlify settings
Security/Secrets Issues
- Share git-filter-repo error logs for assistance
- Verify API keys are properly rotated
- Check Firestore rules expiration dates
- π GitHub Issues: Report bugs or request features
- π§ Email: Contact through GitHub profile
Special thanks to the amazing open-source community:
- Vue CLI - Vue.js development tooling
- Firebase - Backend-as-a-Service platform
- FullCalendar - JavaScript calendar library
- Netlify - Modern web deployment platform
- Bootstrap Icons - Beautiful icon library
- vuedraggable - Drag and drop functionality
This project is unlicensed and open for personal use. Feel free to fork, modify, and use for your own scheduling needs!
Made with β€οΈ for better scheduling and π for the love of rice!
Happy Scheduling! π β¨