Attendify is a Attendance system that uses WebAuthentication for marking and verifying attendance of the students at no extra infrastructure cost. Administrators and students can register there hardware/devices like mobile phones or physical passkeys, the users can then use their device's hardware like fingerprint scanner(or even pattern/pin/password) to mark the attendance.
Learn more about WebAuthentication
- WebAuthentication - Leverage built-in hardware like fingerprint sensors for secure and easy attendance marking and admin login.
- Multi-User Support - Distinct interfaces and functionalities for administrators and students.
- Enhanced Security - Ensure data integrity and prevent attendance fraud with biometric verification.
- Real-Time Tracking - Instantly record and update attendance information as students check in.
Install the project with npm
- Fork/Clone the repository.
- Install all the dependencies.
cd attendify
npm install
- You will also require the server, get it from here.
- Create an Appwrite account and create a database with two collections namely, 'organisations' and 'students' with the following attributes:
key | Type | Default value |
---|---|---|
name |
string |
null |
email |
email |
null |
phoneNumber |
string |
null |
addressLine1 |
string |
null |
addressLine2 (not required) |
string |
null |
state |
string |
null |
city |
string |
null |
students (not required) |
Many to Many relationship with students |
null |
challenge (not required) |
string |
null |
passkey (not required) |
string |
null |
classes (not required) |
Integer |
0 |
key | Type | Default value |
---|---|---|
firstName |
string |
null |
lastName |
string |
null |
email |
email |
null |
phoneNumber |
string |
null |
organisations (not required) |
Many to Many relationship with organisations |
null |
rollNumber (not required) |
string |
null |
challenge (not required) |
string |
null |
passkey (not required) |
string |
null |
attendance (not required) |
string |
{} |
- Paste the env variables in a .env file.
- Run
npm run dev
to start the application.
To run this project, you will need to add the following environment variables to your .env file
VITE_APPWRITE_PROJECT_ID
VITE_APPWRITE_DB_ID
VITE_APPWRITE_STD_COLLECTION_ID
VITE_APPWRITE_ORG_COLLECTION_ID
Contributions are always welcome!
| Note: If you are looking for the backend code you can get it here
We are open to all sorts of contributions, be it a bug or a feature. Please feel free to raise an issue and help us improve.
For any help or query you can reach out to me on Discord.
Base URL: https://attendify-server-7g6h.onrender.com
POST /api/v1/passkey/register
Parameter | Type | Description |
---|---|---|
userId |
string |
Required. User ID from Appwrite Database |
category |
string |
Required. "ORG" OR "STD" |
POST /api/v1/passkey/verify
Parameter | Type | Description |
---|---|---|
userId |
string |
Required. User ID from Appwrite Database |
credential |
Object |
Required. options object returned by register challenge API |
category |
string |
Required. "ORG" OR "STD" |
POST /api/v1/passkey/login
Parameter | Type | Description |
---|---|---|
userId |
string |
Required. User ID from Appwrite Database |
category |
string |
Required. "ORG" OR "STD" |
POST /api/v1/passkey/verify-login
Parameter | Type | Description |
---|---|---|
userId |
string |
Required. User ID from Appwrite Database |
credential |
Object |
Required. options object returned by register challenge API |
category |
string |
Required. "ORG" OR "STD" |
POST /api/v1/user/label
Parameter | Type | Description |
---|---|---|
userId |
string |
Required. User ID from Appwrite accounts |
label |
string |
Required. "ORG" OR "STD" |
Client: React, TailwindCSS, MaterialUI, Lucide React, Appwrite, SimpleWebAuthn
Server: Node, Express, Appwrite, SimpleWebAuthn
WebAuthentication has been implemented using simplewebauthn, if you want to learn more about it you can refer to their docs here.
If you have any feedback, please reach out to us at sreesen2003@gmail.com