Streamline event management with AttendEase. Effortlessly generate and send unique QR-coded tickets to attendees. Implement a QR code scanner for seamless check-ins.
-
1. Create an organisation account and allow login
- Design and implement organization account creation functionality.
- Implement login functionality for organization accounts.
-
2. Create event and upload CSV file with name and email of participants
- Develop event creation functionality.
- Implement CSV file upload feature for participant details.
-
3. Send invitation emails to all participants with QR ticket and event info
- Set up email integration for sending invitations.
- Generate QR tickets for participants.
- Include event information in invitation emails.
-
4. Create employee account inside the organisation for scanning QR
- Implement employee account creation within the organization.
- Set up login functionality for employees.
-
5. Scan QR to mark attendance
- Implement attendance marking logic.
-
6. Get list of attended and missed in form of Excel
- Create functionality to generate attendance reports.
- Export reports to Excel format.
Health Check:
- Endpoint:
/health
- Handler: controllers.HandleHealth
Private Endpoint (Requires Admin Login):
- Endpoint:
/private
- Handler: controllers.HandlePrivate
- Middleware: middleware.AdminLoginRequired
Admin Authentication and Authorization:
- Sign in:
/api/admin/login
- Sign up:
/api/admin/signup
- Refresh token:
/api/admin/refresh
- Logout:
/api/logout
Event Management:
- Create event:
/api/events
(POST) - Get all events:
/api/events
(GET) - Get a specific event by ID:
/api/events/{eventid}
(GET) - Upload participants for an event:
/api/events/{eventid}/participants
(POST) - Middleware for these routes: middleware.AdminLoginRequired
Employee Management:
- Create employee:
/api/employees
(POST) - Get all employees:
/api/employees
(GET) - Employee login:
/api/employees/login
(POST) - Middleware for these routes: middleware.AdminLoginRequired
Scanning:
- Scan a participant:
/api/events/scan
(POST) - Middleware: middleware.LoginRequired
Participant Management in an Event:
- Get all participants of an event:
/api/events/{eventid}/participants
(GET) - Get all participants of an event in a file:
/api/events/{eventid}/participants/file
(GET) - Send email to all participants of an event:
/api/events/{eventid}/send
(GET) - Middleware: middleware.AdminLoginRequired
- godotenv: Used for loading environment variables from a
.env
file. - mongo-driver: MongoDB driver for Golang.
- jwt: Golang implementation of JSON Web Tokens (JWT).
- bcrypt: A library for hashing and comparing passwords using bcrypt algorithm.
- excelize : A library for manipulating excel sheets
- amqp091-go : A library to implement queue using rabbitMQ
- go-qrcode : A library to generate QR code
- Clone the repository:
git clone https://github.com/aswinbennyofficial/attendease.git
- Install dependencies:
go mod tidy
- Configure your environment variables by renaming
.env.example
into.env
go run ./cmd/main/
- I am using Docker to run it
docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management
go run ./cmd/email_queue_consumer/
By default, the server will start on port 8080.