Papp Dávid
Cinema View
Cinema View
About
We developed this app for our school exam. We had to design an app that solves a real-world problem. Our team member worked at a cinema, and the main issue was that employees had to manually schedule their shifts. We thought of a solution where employees could select shifts themselves based on their availability and the options that the manager posted. We had 3 months to develop this app, focusing on making it user-friendly and intuitive. I was responsible for the frontend development. This was my first experience working with a team on a real project, which proved to be incredibly valuable. Additionally, we implemented a cinema ticket booking system.
Features
Authentication
Authentication
We implemented a secure authentication system using JWT and 2FA. This ensures that only authorized users can access the app. I used regex to validate the email and password. I also used bcrypt to hash the password. And I used jsonwebtoken to create the JWT. I also made sure that the unauthorized users are redirected to the login page.
2FA
2FA
We implemented a 2FA system using Google Authenticator. This ensures that only authorized users can access the app. I used otplib to generate the QR code and the secret key. I also used jsonwebtoken to create the JWT.
Create Shifts
Create Shifts
To add a shift, the manager can click on the Create Shift button. This will open a page where the manager can select the start and end time of the shift. The manager can also select the number of employees needed for the shift. I used date-fns to format the date and time.
Select Shifts
Select Shifts
The employees can select the shifts they want to work. They can also see the shifts they have already selected.
Screenings
Screenings
To add a movie, the manager can click on the Create Movie button. He has to select the room, the movie, the date and the time.
Book Movies
Book Movies
To book a movie, the user can click on the Book Movie button. He has to select the movie, the date and the time.
Tickets
Tickets
On the tickets page, the user can see the tickets he has booked. He can also cancel a ticket. And the user can see the time and date of the screening.
Problems
I learned a lot of new things during this project because this was my first experience working with a team on a real project. I learned how to communicate with my team members and how to manage a project.
Using jsonwebtoken to create the JWT was a bit challenging because I had to make sure that the JWT was valid and that the user was authorized to access the app. I also had to make sure that the unauthorized users are redirected to the login page.
The 2fa was a bit challenging because I never worked with qr codes before. I had to learn how to generate the qr code and the secret key. I also had to learn how to validate the qr code and the secret key.
Managing the dates was a bit challenging because I had to make sure that the dates were valid and that the dates were not in the past. I also had to make sure that the dates were in the correct format.
CV