Full-stack project as part of the SyntaxBase Intermediate Web Development Course.
This project serves as a hands-on lab assignment within the Intermediate Web Development course on the SyntaxBase platform. The goal is to implement a working web application with user authentication, secure ticket generation using QR codes, and proper backend integration using modern web technologies.
- Node.js – Backend logic and API services
- EJS – Server-side HTML templating
- CSS / HTML5 – UI layout and styling
- PostgreSQL – Relational data persistence
- OAuth2 / OpenID Connect – Secure authentication and authorization
- QR Code Generator – Encoding tickets into scannable codes
-
A public homepage displaying the total number of tickets generated
-
An API endpoint for ticket generation:
- Accepts JSON input with fields:
ID
,firstName
, andlastName
- A maximum of 3 tickets per ID
- Each ticket must have a UUID identifier from PostgreSQL
- The timestamp of ticket creation must be stored in the database
- On success, returns a QR code image encoding a URL with the ticket’s UUID
- The URL must not contain any personal data (name, surname, ID)
- Returns HTTP 400 if required fields are missing or the ID already has 3 tickets
- Returns HTTP 500 for server/internal errors
- Requires OAuth2 Client Credentials authorization (app-level, not user-level)
- Accepts JSON input with fields:
-
A private ticket info page, accessible only to authenticated users:
- Displaying ticket details based on UUID in URL
- Page shows the logged-in user’s name using OpenID Connect
The project is implemented using Node.js in the VSCode development environment. It uses the EJS template engine to render dynamic HTML and basic CSS for styling. Authentication and secure data handling are integrated with OAuth2 and OpenID Connect.
- Node.js
- PostgreSQL
- VSCode or another development IDE
-
Clone the repository
-
Open the project folder in VSCode
-
Navigate into the project directory (e.g.
cd syntaxbase-auth-ticketing-app
) -
If not, install dependencies:
npm install
-
Start the server
node server.js
You must:
- Set up your own PostgreSQL database
- Create a .env file
- Update Auth0 or your identity provider settings for OAuth2/OpenID integration
This project is intended for educational purposes only under the SyntaxBase platform. All rights reserved.