This is the frontend for the Student Attendance System, a web application designed to manage and track student attendance efficiently. The project is built using Vue.js with Vuetify, TypeScript, Pinia, Vue Router, and Tailwind CSS.
Works with an ESP32 microcontroller and RFID readers to scan student IDs and mark attendance automatically.
This project was developed as a semester project for my electronics class at university. It combines hardware and software to create a practical solution for managing student attendance. The ESP32 code for RFID integration is included in this repository. You can find the ESP32 code here.
Clone the repository:
git clone https://github.com/YousifVN/student-attendance-system-front.git
cd student-attendance-system-front
Install dependencies:
npm install
Configure environment variables:
.env
file in the root directory.VITE_FIREBASE_API_KEY=your-firebase-api-key
VITE_BASE_URL=your-firebase-database-url
VITE_FIREBASE_PROJECT_ID=your-firebase-project-id
VITE_FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id
VITE_FIREBASE_APP_ID=your-firebase-app-id
VITE_FIREBASE_EMAIL=your-admin-email
VITE_FIREBASE_PASSWORD=your-admin-password
Start the development server:
npm run dev
The application will be available at http://localhost:3000
.
To build the project for production:
npm run build
The production-ready files will be in the dist/
directory.
student-attendance-system-front/
├── public/ # Static assets
├── src/
│ ├── assets/ # Project assets (images, fonts, etc.)
│ ├── components/ # Vue components
│ ├── layouts/ # Layout components
│ ├── router/ # Vue Router configuration
│ ├── store/ # Pinia stores
│ ├── styles/ # Global styles (Tailwind CSS)
│ ├── utils/ # Utility functions (e.g., Firebase config)
│ ├── views/ # View components
│ ├── App.vue # Root component
│ ├── main.ts # Entry point
│ └── shims-vue.d.ts # TypeScript shims
├── .env # Environment variables
├── .eslintrc.js # ESLint configuration
├── .prettierrc # Prettier configuration
├── tailwind.config.js # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
├── package.json # Project metadata and dependencies
└── README.md # Project documentation
Below is the structure of the Firebase database used in this project:
{
"class": {
"attendance": {
"week1": {
"uid1": true,
"uid2": false
},
"week2": {
"uid1": false,
"uid2": true
}
},
"currentWeek": 1,
"students": {
"uid1": "Student Name 1",
"uid2": "Student Name 2"
}
}
}
Note: The above schema is a mock version for clarification purposes and does not contain real data.
Contributions are welcome! Please follow these steps: