This is a platform for hosting and attending online events via Zoom. With Zoom Events, users can purchase tickets to attend events and participate online, or host their own events and sell tickets. Additionally, event hosts can sell recordings of their events after they have taken place.
- NextJS
- NestJS
- Nginx
- Postgres
- Digital Ocean
- Cloudinary
- Sendgrid
- Docker
- Domain(deactivated): Google Domain https://evenity.page
- Host and attend online events via Zoom
- Purchase tickets to attend events
- Host your own events and sell tickets
- Sell recordings of events after they have ended
To get started with Zoom Events, you will need to sign up for an account. Once you have an account, you can start hosting or attending events.
Reference to Zoom SDK: https://marketplace.zoom.us/docs/sdk/native-sdks/introduction/
Reference to Zoom API: https://marketplace.zoom.us/docs/api-reference/zoom-api/
The application consists of several services, including a PostgreSQL database (postgres
), a Redis cache (redis
), a frontend client (frontend
), a core API (core-api
), a payment service (payment
), a Zoom integration service (zoom
), and a web server (webserver
). The certbot
service is used for managing SSL/TLS certificates for the application.
The web application is built using NextJS and NestJS, and is served using Nginx. The database is Postgres, and the application is hosted on Digital Ocean. Cloudinary is used for storing and serving media, and Sendgrid is used for sending emails. The application is containerized using Docker.
To start the application, run docker-compose up
in the root directory of the project. This will build and start all of the necessary services. The frontend client will be available on port 8080, and the core API will be available on port 3000. The web server will be available on ports 80 and 443, and will serve the frontend client and proxy requests to the core API.
Event -> Zoom Cloud: Record event
Zoom Cloud -> Zoom Webhook: Send notification to API domain
Zoom Webhook -> API Domain: Send notification (with TLS certificate)
API Domain -> Zoom Module: Request to download event
Zoom Module -> API Domain: Download event
API Domain -> Cloudinary Module: Send notification (TCP) to upload event
Cloudinary Module -> Cloudinary: Upload event
Cloudinary -> Cloudinary Webhook: Send notification to server
Cloudinary Webhook -> Server: Send notification
Server -> Zoom Module: Request to delete event
Zoom Module -> Server: Delete event