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.
- React: JavaScript library for building user interfaces.
- Tailwind CSS: Utility-first CSS framework for styling components.
- 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