Skip to content

Ultimate platform tool enabling space leasing opportunities for universities out to student and alumni groups. A ReactJS and NodeJS full stack web app built with microservices utilizing event-driven architecture. Containerized & Orchestrated with Docker and Kubernetes.

Notifications You must be signed in to change notification settings

Mohsin-Braer/UniVenue

Repository files navigation


UniVenue

Creating the ultimate platform tool for universities to lease unused spaces to unlock new realms of collaboration amongst a network of students and alumni.
Explore the Repo »

View Demo Here

About The Project

UniVenue Landing Page

UniVenue empowers universities with the ultimate platform tool to enable seamless space leasing opportunities and unlocking new realms of collaboration and revenue generation. Verified students, alumni, and organizations within the network can leverage our platform to lease out unused spaces for meetings, workshops, and even stadium-sized events. Admin accounts associated with each university will have the ability to publish a variety of different spaces (study tables, classrooms, lecture halls, indoor arenas, outdoor stadiums, etc.) for a variety of different occasions (study, meeting, community event, large-scale event, etc.) and for a desired duration. seats and venues are published through the form of tickets. Students and alumni verified through a university ID or university email will have the ability to reserve an available venue at any of the network institutions for a given duration. Once an order is made for that space, an admin account from the given institution must then make the approval to finalize the order and complete the purchase. Confirmation of a reservation will be sent to the user in the form of a ticket. In the case of this demo, as the user, you will be able to sign in and log in to multiple accounts, create tickets, browse through available space catalog, create an order for a ticket, and make a payment to successfully claim a ticket.

This mobile-responsive application embodies an event-driven architecture, meticulously constructed to facilitate seamless interactions. Leveraging Next.js in developing the client service (handling all client related interactions) and Express.js and Bull.js in developing server-side services (authentication, tickets, orders, payments, and expiration services), the application's architecture seamlessly orchestrates the flow of data and interactions. Each distinct service within the kubernetes ecosystem is meticulously designed to communicate through events distributed through technologies such as NATS Streaming Server, allowing for modular development and scalability. Next.js empowers the frontend with its efficient rendering and routing capabilities, while Express.js facilitates the each service's responsiveness and data handling. This combination of technologies enables the application to gracefully adapt to various devices while maintaining a fluid and dynamic user experience.

GitHub Actions was integrated into this project as an essential automated workflow tool. By leveraging its capabilities, I streamlined UniVenue's development processes, enabling automatic builds, tests, and deployments. This not only bolstered our code quality through consistent testing but also expedited the delivery pipeline, promoting overall project efficiency. DigitalOcean was utilized as the cloud host solution of choice to host out Kubernetes cluster due to its robust (and budget friendly) Kubernetes offering. The platform's straightforward management tools, along with its reliable infrastructure, provided a seamless environment for orchestrating containerized applications while minimizing administrative overhead.

System Design & Services

UniVenue Landing Page

Services

UniVenue Landing Page

** A custom built npm package ('@crescenttheater/common') was utilized to house all common methods and functionality shared between the different services to avoid repition within the repository **

Landing Page

UniVenue Landing Page

Marketplace

UniVenue Marketplace Page

Ticket Details Page

UniVenue Ticket Details Page

Order Timer & Payment Page

UniVenue Ticket Details Page

Order History Page

UniVenue Order History Page

Sign-in page

UniVenue Sign In Page

Sign-up page

UniVenue Sign Up Page

(back to top)

Built With

(back to top)

Getting Started

To check out the web application, check it out HERE

To play around with the codebase, lets do the following...

Installation

  1. Clone the repo

    git clone https://github.com/Mohsin-Braer/UniVenue.git
  2. Under each service directory, install NPM packages

    cd *service name*
    npm install
  3. Build and push docker images to Docker Hub

     cd *service directory*
     docker build -t *your docker username*/*image name* 
  4. Install neccessary Ingress Kubernetes objects to use Ingress-NGINX Controller

     kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml
  5. Update skaffold.yaml and infra directory files where necessary

  6. Add required secrets JWT_KEY and STRIPE_KEY to your kubernetes cluster

     kubectl create secret generic jwt-secret --from-literal JWT_KEY= *your jwt key here*
     kubectl create secret generic stripe-secret --from-literal STRIPE_KEY= *your stripe api secret key* 
  7. Run skaffold to run application within cluster

     skaffold dev

(back to top)

About

Ultimate platform tool enabling space leasing opportunities for universities out to student and alumni groups. A ReactJS and NodeJS full stack web app built with microservices utilizing event-driven architecture. Containerized & Orchestrated with Docker and Kubernetes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published