A shell script-based application that helps track and remind students about pending assignment submissions.
This application automates the process of checking student submission statuses and sends reminders to students who haven't submitted their assignments. It uses a flexible configuration system that allows easy updates to assignment names and tracking multiple students across different assignments.
First, make the setup script executable and run it:
chmod +x create_environment.sh
./create_environment.shThe script will:
- Prompt you for your name
- Create a directory named
submission_reminder_{yourName} - Set up the required directory structure (config, modules, assets)
- Create all necessary configuration and data files
Navigate to the created directory and run the startup script:
cd submission_reminder_{yourName}
./startup.shTo execute the reminder application:
cd submission_reminder_{yourName}
./startup.shThis will display:
- Current assignment name
- Days remaining to submit
- List of students who have NOT submitted the assignment
To change the assignment being tracked:
./copilot_shell_script.shThe script will:
- Ask for your app directory name
- Show the current configuration
- Prompt you to enter a new assignment name
- Update the config file automatically
- Optionally run the application to show students who haven't submitted the new assignment
Example:
$ ./copilot_shell_script.sh
Enter your submission reminder app directory name: submission_reminder_john
Enter the new assignment name: Git Basics
Assignment updated successfully!
Do you want to run the application now? (y/n): yes or yAfter running create_environment.sh, the following structure is created:
submission_reminder_{yourName}/
├── config/
│ └── config.env
├── modules/
│ ├── functions.sh
│ └── reminder.sh
├── assets/
│ └── submissions.txt
└── startup.sh
Entry point that executes the reminder application
Edit submission_reminder_{yourName}/assets/submissions.txt:
nano submission_reminder_{yourName}/assets/submissions.txtAdd new lines with the format:
StudentName, AssignmentName, submitted
Edit submission_reminder_{yourName}/config/config.env:
vim submission_reminder_{yourName}/config/config.envOr use the copilot script for automated updates:
./copilot_shell_script.shMake sure the scripts are executable:
chmod +x create_environment.sh
chmod +x copilot_shell_script.shEnsure you're in the correct directory and the path to the script is correct.
- Check that students have "not submitted" in the
submissions.txtfile - Verify the assignment name in
config.envmatches the assignment name insubmissions.txt - Check for extra spaces in the CSV file that might prevent matching
This project uses Git branching:
- feature branch: Used for development (e.g.,
feature/setup) - main branch: Contains the final, production-ready code
# Clone the repository
git clone https://github.com/yourusername/submission_reminder_app_yourusername.git
cd submission_reminder_app_yourusername
# Create and switch to feature branch
git checkout -b draft_branch/setup
# Make changes and commit
git add .
git commit -m "Initial setup scripts"
# Switch to main and merge
git checkout main
git merge feature/setup
# Push to GitHub
git push origin mainThe GitHub repository should contain only:
create_environment.sh- Setup scriptcopilot_shell_script.sh- Assignment updater scriptREADME.md- This documentation file
$ chmod +x create_environment.sh
$ ./create_environment.sh
Enter your name: john
Created directory: submission_reminder_john
Created subdirectories: config, modules, assets
...
Environment setup completed successfully!
$ cd submission_reminder_john
$ ./startup.sh
Assignment: Shell Navigation
Days remaining to submit: 2 days
--------------------------------------------
Reminder: Chinemerem has not submitted the Shell Navigation assignment!
Reminder: Divine has not submitted the Shell Navigation assignment!$ ./copilot_shell_script.sh
Enter your submission reminder app directory name: submission_reminder_john
Enter the new assignment name: Git
Assignment updated successfully!
Do you want to run the application now? (yes/no): yes
Assignment: Git
Days remaining to submit: 2 days
--------------------------------------------
Reminder: Chiagoziem has not submitted the Git assignment!