BookingEvents is a comprehensive event management system developed with the goal of providing a secure process for user registration and participation in events. The system allows for easy and secure registration, ensuring the protection of user data. MongoDB is used for backend data management, while PostgreSQL is used for storing messages from live chat. Database backups are implemented using Go language. Modern technologies such as Nginx, Docker, and Kubernetes enable efficient and scalable infrastructure handling. CI/CD processes are implemented using GitHub Actions and Jenkins
- Node.js: JavaScript runtime for server-side programming.
- Express: Web application framework for Node.js.
- Go: Programming language for building high-performance backend services.
- Socket.IO: Library for real-time and live chat functionality.
- JWT (jsonwebtoken): Library for handling authentication with JSON Web Tokens.
- Bcrypt: Library for hashing passwords.
- Nodemailer: Library for sending emails in Node.js applications.
- Cors: Middleware for enabling Cross-Origin Resource Sharing.
- Helmet: Security middleware for setting HTTP headers.
- Rate Limit: Middleware for rate limiting requests.
- Body-Parser: Middleware for parsing incoming request bodies.
- dotenv: Module for loading environment variables from a .env file.
- Node Limits: Module for managing file uploads and request limits.
- pgAdmin: Web-based management tool for PostgreSQL.
- Mongoose: ODM library for MongoDB.
- Swagger: Tool for API documentation.
- QRCode: Library for generating QR codes in Node.js.
- React: JavaScript library for building user interfaces.
- Tailwind CSS: Utility-first CSS framework for styling components.
- @yudiel/react-qr-scanner: React component for scanning QR codes.
- Docker: Containerization platform for creating and managing containers.
- Kubernetes: Container orchestration platform for automating deployment, scaling, and operations.
- Nginx: Web server and reverse proxy for handling requests and providing additional security.
- Grafana: Open-source platform for monitoring and observability, used for visualizing data.
- Prometheus: Open-source system monitoring and alerting toolkit, integrated with Grafana for visualization.
- Jest: A testing framework used for writing and executing tests.
- @testing-library/react: A library for testing React components, which allows rendering components.
- @testing-library/jest-dom: An extension for Jest that adds useful matchers for testing DOM elements.
- supertest: A library that allows making HTTP requests in tests and verifying responses.
- MongoDB: NoSQL database for storing user accounts and events.
- PostgreSQL: Relational database for structured data storage.
- Redis: In-memory data structure store used as a database, cache, and message broker.
Start Backend :
nodemon server.js
node server.js
Start Frontend:
npm start
Start All:
npm run all-docker
npm run all-k8s
npm run all-nodemon
npm run all-node
Docker/Kubernetes
npm run docker
npm run k8s
npm run k8s-DUS //Delete,Update,Start
Tests
all-test
Workflow | Status |
---|---|
Tests | |
Deployment |
└── 📁backend
└── 📁__mocks__
└── fileMock.js
└── 📁config
└── .env
└── redis.js
└── test.config.js
└── 📁docs
└── accountSwagger.yaml
└── adminSwagger.yaml
└── eventSwagger.yaml
└── healthCheckSwagger.yaml
└── 📁go
└── 📁config
└── config.go
└── .env
└── Dockerfile.go.backend
└── go.mod
└── go.sum
└── main.go
└── 📁grafana
└── DataSources.md
└── grafanaAlert.yaml
└── GrafanaModel.json
└── 📁jenkins
└── View&Security-freestyle.md
└── 📁kubernetes
└── configmap.yaml
└── deployment.yaml
└── HPA.yml
└── ingress-nginx-deployment.yaml
└── ingress.yaml
└── network-policy.yaml
└── persistentvolumeclaim.yaml
└── persistentvolumes.yaml
└── prometheus-rbac.yaml
└── secret.yaml
└── service.yaml
└── 📁middleware
└── auth.js
└── metric.js
└── resetAccountLimiter.js
└── 📁models
└── account.js
└── event.js
└── 📁routes
└── accountRoutes.js
└── adminRoutes.js
└── authRoutes.js
└── chatRoutes.js
└── eventRoutes.js
└── healthCheckRoutes.js
└── 📁services
└── emailService.js
└── 📁sql
└── messages.sql
└── 📁tests
└── 📁manuallyTests
└── APITestK6LongTest.js
└── APITestK6test.js
└── metric_example.js
└── 📁setup
└── testSetup.js
└── account.test.js
└── event.test.js
└── redis.test.js
└── socketio.test.js
└── .babelrc
└── .dockerignore
└── .env
└── .gitignore
└── .prettierignore
└── autocannonApiTest.md
└── default.conf
└── docker-compose.yml
└── Dockerfile
└── Dockerfile.nginx
└── eslint.config.mjs
└── jest.config.cjs
└── jest.setup.mjs
└── nginx.conf
└── package-lock.json
└── package.json
└── server.js
└── swaggerConfig.js
└── ZAPToFix.md
└── 📁frontend
└── 📁__mocks__
└── styleMock.js
└── 📁build
└── 📁static
└── 📁css
└── main.ae835bc1.css
└── main.ae835bc1.css.map
└── 📁js
└── main.359c69a9.js
└── main.359c69a9.js.LICENSE.txt
└── main.359c69a9.js.map
└── 📁media
└── hoverPhoto.b2e2ccbe84873d9b24be.gif
└── Konferencija.7511b640952133852b1b.jpg
└── asset-manifest.json
└── index.html
└── manifest.json
└── robots.txt
└── 📁public
└── index.html
└── manifest.json
└── robots.txt
└── 📁src
└── 📁Components
└── 📁assets
└── hoverPhoto.gif
└── Konferencija.jpg
└── Card.js
└── Header.js
└── PrivateRoute.js
└── 📁config
└── config.js
└── 📁context
└── AuthContext.js
└── 📁routes
└── AdminAddEvent.js
└── ChangePassword.js
└── Chat.js
└── ForgotPassword.js
└── HealthCheck.js
└── Login.js
└── Registration.js
└── Unauthorized.js
└── App.js
└── index.css
└── index.js
└── 📁tests
└── Card.test.js
└── .babelrc
└── .env
└── .gitignore
└── Dockerfile.frontend
└── nginx.conf
└── package-lock.json
└── package.json
└── README.md
└── tailwind.config.js
└── webpack.config.js
└── 📁.github
└── 📁workflows
└── deploy.yml
└── run-tests.yml
└── security-and-quality-check.yml
└── dependabot.yml
└── 📁node_modules
└── .env
└── docker-compose.yml
└── package-lock.json
└── package.json
└── README.md